summaryrefslogtreecommitdiff
path: root/input.c
diff options
context:
space:
mode:
authortjg <tjg>2000-05-25 14:31:27 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:23:18 +0100
commitba2b5321c58c1a7420c7d9d31c1226584537bcaa (patch)
tree4c56ff936104b936b9b8b057d5d45cb260e5ecf8 /input.c
parent8293905f58f0cea00a03ca9bec122de84887a2be (diff)
Portability: need special runes for read() returning EIO under job
control systems.
Diffstat (limited to 'input.c')
-rw-r--r--input.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/input.c b/input.c
index f59f29e..0f649e4 100644
--- a/input.c
+++ b/input.c
@@ -117,10 +117,18 @@ static int fdgchar() {
do {
r = rc_read(istack->fd, inbuf + 2, BUFSIZE);
sigchk();
- if (errno == EAGAIN) {
+ switch (errno) {
+ case EAGAIN:
if (!makeblocking(istack->fd))
panic("not O_NONBLOCK");
errno = EINTR;
+ break;
+ case EIO:
+ if (makesamepgrp(istack->fd))
+ errno = EINTR;
+ else
+ errno = EIO;
+ break;
}
} while (r < 0 && errno == EINTR);
if (r < 0) {