plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit c3ae85a004c8714fc653629a983327d9a15b36da
parent 0cc1faf015a253ef64b97a8453b6fc959c0ee512
Author: Russ Cox <rsc@swtch.com>
Date:   Thu, 14 Jan 2021 09:59:54 -0500

rc: do not exit on EINTR from read

This happens if lldb attaches to rc.

Diffstat:
Msrc/cmd/rc/io.c | 11++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/cmd/rc/io.c b/src/cmd/rc/io.c @@ -1,4 +1,5 @@ #include <limits.h> +#include <errno.h> #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;