|
|
1.1 ! root 1: /* ! 2: * gather data that may come in dribs and drabs: ! 3: * read size bytes into buf, ! 4: * but keep looking until at least minsize have arrived ! 5: */ ! 6: #include <errno.h> /* just for EINTR */ ! 7: ! 8: int ! 9: _rfgread(fd, buf, size, minsize) ! 10: int fd; ! 11: char *buf; ! 12: int size; ! 13: register int minsize; ! 14: { ! 15: register int n, tot; ! 16: extern int errno; ! 17: ! 18: tot = 0; ! 19: while (minsize > 0) { ! 20: if ((n = read(fd, buf, size)) <= 0) { ! 21: if (errno == EINTR) ! 22: continue; ! 23: break; ! 24: } ! 25: buf += n; ! 26: size -= n; ! 27: minsize -= n; ! 28: tot += n; ! 29: } ! 30: if (tot) ! 31: return (tot); ! 32: return (n); ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.