diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2020-03-12 16:07:01 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2020-03-12 16:07:01 +0100 |
commit | 57a80207ff5f7045a45668cee827ce7f6906ccc8 (patch) | |
tree | fcc509af257517e6a33af06d08d7b01505a2eb94 /winsup/cygwin/fhandler_serial.cc | |
parent | bd22d2f91e792e8b57c748da2204ef669a6a75ec (diff) | |
download | newlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.zip newlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.tar.gz newlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.tar.bz2 |
Cygwin: serial: try fix o_nonblock
Diffstat (limited to 'winsup/cygwin/fhandler_serial.cc')
-rw-r--r-- | winsup/cygwin/fhandler_serial.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc index 69e5768..f92fc70 100644 --- a/winsup/cygwin/fhandler_serial.cc +++ b/winsup/cygwin/fhandler_serial.cc @@ -68,6 +68,16 @@ fhandler_serial::raw_read (void *ptr, size_t& ulen) goto err; else if (ev) termios_printf ("error detected %x", ev); + else if (is_nonblocking ()) + { + if (!st.cbInQue) + { + tot = -1; + set_errno (EAGAIN); + goto out; + } + inq = st.cbInQue; + } else if (st.cbInQue && !vtime_) inq = st.cbInQue; else if (!is_nonblocking () && !overlapped_armed) |