diff options
| author | tjg <tjg> | 2000-05-25 14:31:27 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:23:18 +0100 |
| commit | ba2b5321c58c1a7420c7d9d31c1226584537bcaa (patch) | |
| tree | 4c56ff936104b936b9b8b057d5d45cb260e5ecf8 /input.c | |
| parent | 8293905f58f0cea00a03ca9bec122de84887a2be (diff) | |
Portability: need special runes for read() returning EIO under job
control systems.
Diffstat (limited to 'input.c')
| -rw-r--r-- | input.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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) { |