Bash uses lseek while reading from serial device

Ross Ridge rridge@csclub.uwaterloo.ca
Tue Aug 19 02:40:00 GMT 2014


Corinna Vinschen writes:
> On Linux isatty on a descriptor connected to serial line returns 0,
> on Cygwin it returned 1 so far.  I fixed both problems here, isatty
> on a serial line returns 0 now, and lseek on serial (and, FWIW,
> sockets) don't simply return 0 anymore, but rather -1 with errno set
> to ESPIPE, as on Linux.

I'm not sure if Chet Ramey's suggestion that if isatty() returns 1
then bash is allowed to assume reads are newline-delimited is correct.
On Unix this would only be true if cannonical mode input processing was
enabled (icanon), and Cygwin stty reports that this mode is disabled
(-icanon) on serial devices.  Or at least it used to, with the snapshot
DLL it now complains "/dev/ttyS0: Inappropriate ioctl for device".

For what its worth my tests on Linux shows that isatty() returns 1 on
a serial device, namely /dev/ttyS0.  Which is what I would expect given
that serial devices have traditionally been synonymous with ttys on Unix.

> Ross, please give it a try.

The snapshot DLL solves the bug and the script runs without any data
being lost.  Thanks for looking into this.

					Ross Ridge


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list