slurpclose.c
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     1 #include "stralloc.h"
       
     2 #include "readwrite.h"
       
     3 #include "slurpclose.h"
       
     4 #include "error.h"
       
     5 
       
     6 int slurpclose(fd,sa,bufsize)
       
     7 int fd;
       
     8 stralloc *sa;
       
     9 int bufsize;
       
    10 {
       
    11   int r;
       
    12   for (;;) {
       
    13     if (!stralloc_readyplus(sa,bufsize)) { close(fd); return -1; }
       
    14     r = read(fd,sa->s + sa->len,bufsize);
       
    15     if (r == -1) if (errno == error_intr) continue;
       
    16     if (r <= 0) { close(fd); return r; }
       
    17     sa->len += r;
       
    18   }
       
    19 }