plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit e066b12927b496c9f3b442a5928bacfb48e6334e
parent 375b78fb110b7e1dd3686bc43aba38cf45c606e9
Author: Michael Teichgräber <mt4swm@googlemail.com>
Date:   Sun, 23 Aug 2009 13:25:44 -0400

rc: make read not ignore interrupts/errors (again)

http://codereview.appspot.com/110042

Diffstat:
Msrc/cmd/rc/unixcrap.c | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/cmd/rc/unixcrap.c b/src/cmd/rc/unixcrap.c @@ -222,8 +222,11 @@ readnb(int fd, char *buf, long cnt) int flgs; didreset = 0; - while((n = read(fd, buf, cnt)) == -1) - if(!didreset && errno == EAGAIN){ +again: + n = read(fd, buf, cnt); + if(n == -1) + if(errno == EAGAIN){ + if(!didreset){ if((flgs = fcntl(fd, F_GETFL, 0)) == -1) return -1; flgs &= ~O_NONBLOCK; @@ -231,6 +234,8 @@ readnb(int fd, char *buf, long cnt) return -1; didreset = 1; } + goto again; + } return n; }