|
|
1.1 root 1: /*
2: * Standard I/O Library
3: * Read nitems of size from file fp
4: */
5:
6: #include <stdio.h>
7:
8: int
9: fread(bp, size, nitems, fp)
10: register char *bp;
11: unsigned int size;
12: unsigned int nitems;
13: register FILE *fp;
14: {
15: unsigned int nb = size*nitems;
16: register int c;
17:
18: if (fp->_ff&_FUNGOT) {
19: *bp++ = (*fp->_gt)(fp);
20: nb--;
21: }
22: if (fp->_bp!=NULL || !(fp->_ff&_FSTBUF))
23: for (; nb && (c=getc(fp))!=EOF; nb--)
24: *bp++ = c;
25: else if ((c=read(fileno(fp), bp, nb)) > 0)
26: nb -= c;
27: else if (c == 0)
28: fp->_ff |= _FEOF;
29: else
30: fp->_ff |= _FERR;
31: return ((size*nitems-nb)/size);
32: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.