From ba2b5321c58c1a7420c7d9d31c1226584537bcaa Mon Sep 17 00:00:00 2001 From: tjg Date: Thu, 25 May 2000 14:31:27 +0000 Subject: Portability: need special runes for read() returning EIO under job control systems. --- input.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'input.c') 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) { -- cgit v1.2.3