From c3ae85a004c8714fc653629a983327d9a15b36da Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 14 Jan 2021 09:59:54 -0500 Subject: rc: do not exit on EINTR from read This happens if lldb attaches to rc. --- src/cmd/rc/io.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/cmd/rc') diff --git a/src/cmd/rc/io.c b/src/cmd/rc/io.c index c2e9d7b4..907ba86f 100644 --- a/src/cmd/rc/io.c +++ b/src/cmd/rc/io.c @@ -1,4 +1,5 @@ #include +#include #include "rc.h" #include "exec.h" #include "io.h" @@ -257,7 +258,15 @@ int emptybuf(io *f) { int n; - if(f->fd==-1 || (n = Read(f->fd, f->buf, NBUF))<=0) return EOF; + if(f->fd==-1) + return EOF; +Loop: + errno = 0; + n = Read(f->fd, f->buf, NBUF); + if(n < 0 && errno == EINTR) + goto Loop; + if(n <= 0) + return EOF; f->bufp = f->buf; f->ebuf = f->buf+n; return *f->bufp++&0xff; -- cgit v1.2.3