trc: do not exit on EINTR from read - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit c3ae85a004c8714fc653629a983327d9a15b36da
(DIR) parent 0cc1faf015a253ef64b97a8453b6fc959c0ee512
(HTM) 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:
M src/cmd/rc/io.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
---
(DIR) diff --git a/src/cmd/rc/io.c b/src/cmd/rc/io.c
t@@ -1,4 +1,5 @@
#include <limits.h>
+#include <errno.h>
#include "rc.h"
#include "exec.h"
#include "io.h"
t@@ -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;