diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2000-10-24 18:15:25 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2000-10-24 18:15:25 +0000 |
commit | 90bb77ddcb94446768b3a6d5be35bad3f63c69df (patch) | |
tree | 62b3dcc1f518c72e6bc844c39530fe81e6923362 /winsup/cygwin/fhandler.cc | |
parent | 902047f40e05387306ddb85c7d4e2c75ce56952c (diff) | |
download | cygnal-90bb77ddcb94446768b3a6d5be35bad3f63c69df.tar.gz cygnal-90bb77ddcb94446768b3a6d5be35bad3f63c69df.tar.bz2 cygnal-90bb77ddcb94446768b3a6d5be35bad3f63c69df.zip |
* fhandler.cc (fhandler_base::fcntl): Behave properly when passed
previous version of O_NDELAY.
* syscalls.cc: Move OLD_O_NDELAY to winsup.h.
* winsup.h: Define OLD_O_NDELAY now.
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r-- | winsup/cygwin/fhandler.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index c3970c803..abeef9e55 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -1012,20 +1012,21 @@ int fhandler_base::fcntl (int cmd, void *arg) break; case F_GETFL: res = get_flags (); + debug_printf ("GETFL: %d", res); break; case F_SETFL: { /* - * Only O_APPEND, O_ASYNC and O_NONBLOCK are allowed. + * Only O_APPEND, O_ASYNC and O_NONBLOCK/O_NDELAY are allowed. * Each other flag will be ignored. * Since O_ASYNC isn't defined in fcntl.h it's currently * ignored as well. * There's no functionality at all, so... */ - int flags = get_flags (); - flags &= ~(O_APPEND | O_NONBLOCK); - flags |= ((int) arg & (O_APPEND | O_NONBLOCK)); - set_flags (flags); + const int allowed_flags = O_APPEND | O_NONBLOCK | OLD_O_NDELAY; + + int flags = get_flags () & ~allowed_flags; + set_flags (flags | ((int)arg & allowed_flags)); } res = 0; break; |