From aace035ecc3c6a12c3fb14e381adaa07e51d2e25 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Tue, 15 Feb 2000 10:27:48 +0000 Subject: [PATCH] (BROKEN_PTY_READ_AFTER_EAGAIN): Define. --- src/s/freebsd.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/s/freebsd.h b/src/s/freebsd.h index 0a344f9753b..59a1e9072e7 100644 --- a/src/s/freebsd.h +++ b/src/s/freebsd.h @@ -151,3 +151,19 @@ /usr/local/include or libs in /usr/local/lib by default. */ #define C_SWITCH_SYSTEM -I /usr/X11R6/include -I /usr/local/include -L /usr/local/lib + +/* Circumvent a bug in FreeBSD. In the following sequence of + writes/reads on a PTY, read(2) returns bogus data: + + write(2) 1022 bytes + write(2) 954 bytes, get EAGAIN + read(2) 1024 bytes in process_read_output + read(2) 11 bytes in process_read_output + + That is, read(2) returns more bytes than have ever been written + successfully. The 1033 bytes read are the 1022 bytes written + successfully after processing (for example with CRs added if the + terminal is set up that way which it is here). The same bytes will + be seen again in a later read(2), without the CRs. */ + +#define BROKEN_PTY_READ_AFTER_EAGAIN 1 -- 2.39.5