diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-04-01 16:12:17 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-04-01 16:12:17 +0000 |
commit | 9dedf72e7123d028f10dccbb7c5678868e68eb0b (patch) | |
tree | f267928a8b36f5005a0f6aa18a50d08ce1c6835b /util-linux | |
parent | 468aea2d8800cc0496383616d82d7c957ae8bc50 (diff) |
script: do not ignore poll() errors. ~+20 bytes.
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/script.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/util-linux/script.c b/util-linux/script.c index 700f0cb0a..5d6f4d924 100644 --- a/util-linux/script.c +++ b/util-linux/script.c @@ -115,7 +115,11 @@ int script_main(int argc ATTRIBUTE_UNUSED, char **argv) /* TODO: don't use full_write's, use proper write buffering */ while (fd_count) { /* not safe_poll! we want SIGCHLD to EINTR poll */ - poll(ppfd, fd_count, -1); + if (poll(ppfd, fd_count, -1) < 0 && errno != EINTR) { + /* If child exits too quickly, we may get EIO: + * for example, try "script -c true" */ + break; + } if (pfd[0].revents) { count = safe_read(0, buf, sizeof(buf)); if (count <= 0) { |