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>
This commit is contained in:
parent
cef36220f2
commit
1b7fcf22be
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user