URI: 
       trc: make read not ignore interrupts/errors (again) - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit e066b12927b496c9f3b442a5928bacfb48e6334e
   DIR parent 375b78fb110b7e1dd3686bc43aba38cf45c606e9
  HTML 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:
         M src/cmd/rc/unixcrap.c               |       9 +++++++--
       
       1 file changed, 7 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/src/cmd/rc/unixcrap.c b/src/cmd/rc/unixcrap.c
       t@@ -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;
       t@@ -231,6 +234,8 @@ readnb(int fd, char *buf, long cnt)
                                        return -1;
                                didreset = 1;
                        }
       +                goto again;
       +        }
        
                return n;
        }