commit c3ae85a004c8714fc653629a983327d9a15b36da from: Russ Cox date: Thu Jan 14 14:59:54 2021 UTC rc: do not exit on EINTR from read This happens if lldb attaches to rc. commit - 0cc1faf015a253ef64b97a8453b6fc959c0ee512 commit + c3ae85a004c8714fc653629a983327d9a15b36da blob - c2e9d7b4698e08665a504ed1721f48523e93f8b2 blob + 907ba86fbf6b39a9b095a54d475fafc0a965b6aa --- src/cmd/rc/io.c +++ 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;