|
|
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.