aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/rc
diff options
context:
space:
mode:
authorPetter Rodhelind <petter.rodhelind@gmail.com>2021-02-18 20:21:24 +0100
committerPetter Rodhelind <petter.rodhelind@gmail.com>2021-02-18 20:21:24 +0100
commit181d56ee64da53279bb6ecf49c24ab54cfb7193f (patch)
treefc6c8736bb97790a257c5514998c583ffce7c41c /src/cmd/rc
parent94c521bf102a74aec7e1a5c3a9ef5eaa968d4e14 (diff)
parent90971376a5e8620fc62579aa1b3be26245ec8c06 (diff)
downloadplan9port-master.tar.gz
plan9port-master.tar.bz2
plan9port-master.zip
Merge remote-tracking branch 'upstream/master'HEADmaster
Diffstat (limited to 'src/cmd/rc')
-rw-r--r--src/cmd/rc/io.c11
1 files changed, 10 insertions, 1 deletions
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 <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;