rc: do not exit on EINTR from read

This happens if lldb attaches to rc.
This commit is contained in:
Russ Cox 2021-01-14 09:59:54 -05:00
parent 0cc1faf015
commit c3ae85a004

View file

@ -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;