public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: ioctl: TIOCINQ: always return number of chars in the inbound queue
@ 2020-03-02 16:06 Corinna Vinschen
0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2020-03-02 16:06 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=1b7fcf22bea529fba920310dcd2db144bb24ccc6
commit 1b7fcf22bea529fba920310dcd2db144bb24ccc6
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Mon Mar 2 17:02:51 2020 +0100
Cygwin: ioctl: TIOCINQ: always return number of chars in the inbound queue
So far ioctl(TIOCINQ) could end up returning -1 with errno set to EINVAL
if a non-zero device error mask has been returned by ClearCommError.
This doesn't reflect Linux behaviour, which always returns the number of
chars in the inbound queue, independent of any I/O error condition.
EINVAL was a pretty weird error code to use in this scenario, too.
Fix this by dropping all checking for device errors in the TIOCINQ
case. Just return the number of chars in the inbound queue.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/fhandler_serial.cc | 9 +--------
winsup/cygwin/release/3.1.5 | 3 +++
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc
index 615b251..69e5768 100644
--- a/winsup/cygwin/fhandler_serial.cc
+++ b/winsup/cygwin/fhandler_serial.cc
@@ -519,14 +519,7 @@ fhandler_serial::ioctl (unsigned int cmd, void *buf)
}
break;
case TIOCINQ:
- if (ev & CE_FRAME || ev & CE_IOE || ev & CE_OVERRUN || ev & CE_RXOVER
- || ev & CE_RXPARITY)
- {
- set_errno (EINVAL); /* FIXME: Use correct errno */
- res = -1;
- }
- else
- ipbuf = st.cbInQue;
+ ipbuf = st.cbInQue;
break;
case TIOCGWINSZ:
((struct winsize *) buf)->ws_row = 0;
diff --git a/winsup/cygwin/release/3.1.5 b/winsup/cygwin/release/3.1.5
index e34fdb8..e567ecb 100644
--- a/winsup/cygwin/release/3.1.5
+++ b/winsup/cygwin/release/3.1.5
@@ -9,3 +9,6 @@ Bug Fixes:
- Fix a segfault when starting, e.g., mintty from a bash in a console
running xterm emulation.
Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00197.html
+
+- Fix TIOCINQ to always return number of inbound chars if available.
+ Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00258.html
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-03-02 16:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-02 16:06 [newlib-cygwin] Cygwin: ioctl: TIOCINQ: always return number of chars in the inbound queue Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).