OSDN Git Service

* dtable.cc (dtable::init_std_file_from_handle): Force "devices" to always be
authorcgf <cgf>
Fri, 18 Oct 2002 01:28:48 +0000 (01:28 +0000)
committercgf <cgf>
Fri, 18 Oct 2002 01:28:48 +0000 (01:28 +0000)
in binary mode.  Temporary fix until ssh is rebuilt?

winsup/cygwin/ChangeLog
winsup/cygwin/dtable.cc

index f51f0a4..28fdf96 100644 (file)
@@ -1,5 +1,10 @@
 2002-10-17  Christopher Faylor  <cgf@redhat.com>
 
+       * dtable.cc (dtable::init_std_file_from_handle): Force "devices" to
+       always be in binary mode.  Temporary fix until ssh is rebuilt?
+
+2002-10-17  Christopher Faylor  <cgf@redhat.com>
+
        * dtable.cc (dtable::set_file_pointers_for_exec): New function.
        * dtable.h (dtable::set_file_pointers_for_exec): Declare new function.
        * spawn.cc (spawn_guts): Call dtable::set_file_pointers_for_exec to set
index 7bbfbbf..9c363aa 100644 (file)
@@ -220,6 +220,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
   struct sockaddr sa;
   int sal = sizeof (sa);
   DCB dcb;
+  unsigned bin = O_BINARY;
 
   first_fd_for_open = 0;
 
@@ -259,7 +260,10 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
       else if (GetCommState (handle, &dcb))
        name = "/dev/ttyS0"; // FIXME - determine correct device
       else
-       name = handle_to_fn (handle, (char *) alloca (MAX_PATH + 100));
+       {
+         name = handle_to_fn (handle, (char *) alloca (MAX_PATH + 100));
+         bin = 0;
+       }
     }
 
   if (!name)
@@ -267,11 +271,13 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
   else
     {
       path_conv pc;
-      unsigned bin;
       fhandler_base *fh = build_fhandler_from_name (fd, name, handle, pc);
-      bin = fh->get_default_fmode (O_RDWR);
-      if (!bin && name != unknown_file)
-       bin = pc.binmode ();
+      if (!bin)
+       {
+         bin = fh->get_default_fmode (O_RDWR);
+         if (!bin && name != unknown_file)
+           bin = pc.binmode ();
+       }
 
       fh->init (handle, GENERIC_READ | GENERIC_WRITE, bin);
       set_std_handle (fd);