aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/dtable.cc16
2 files changed, 16 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f51f0a4..28fdf96 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -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
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 7bbfbbf..9c363aa 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -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);