diff options
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3211ab934..191b3a91c 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1651,21 +1651,18 @@ setmode (int fd, int mode) else res = 0; - if (mode & O_BINARY) + if (!mode) + p->reset_to_open_binmode (); + else if (mode & O_BINARY) { p->set_w_binary (1); p->set_r_binary (1); } - else if (mode & O_TEXT) + else { p->set_w_binary (0); p->set_r_binary (0); } - else - { - p->clear_w_binary (); - p->clear_r_binary (); - } if (_cygwin_istext_for_stdio (fd)) setmode_mode = O_TEXT; @@ -1677,7 +1674,6 @@ setmode (int fd, int mode) syscall_printf ("setmode (%d<%s>, %s) returns %s\n", fd, p->get_name (), mode & O_TEXT ? "text" : "binary", res & O_TEXT ? "text" : "binary"); - return res; } |