xref: /csrg-svn/lib/libc/stdio/rdwr.c (revision 2029)
1*2029Swnj /* @(#)rdwr.c	4.1 (Berkeley) 12/21/80 */
2*2029Swnj #include	<stdio.h>
3*2029Swnj 
4*2029Swnj fread(ptr, size, count, iop)
5*2029Swnj unsigned size, count;
6*2029Swnj register char *ptr;
7*2029Swnj register FILE *iop;
8*2029Swnj {
9*2029Swnj 	register c;
10*2029Swnj 	unsigned ndone, s;
11*2029Swnj 
12*2029Swnj 	ndone = 0;
13*2029Swnj 	if (size)
14*2029Swnj 	for (; ndone<count; ndone++) {
15*2029Swnj 		s = size;
16*2029Swnj 		do {
17*2029Swnj 			if ((c = getc(iop)) >= 0)
18*2029Swnj 				*ptr++ = c;
19*2029Swnj 			else
20*2029Swnj 				return(ndone);
21*2029Swnj 		} while (--s);
22*2029Swnj 	}
23*2029Swnj 	return(ndone);
24*2029Swnj }
25*2029Swnj 
26*2029Swnj fwrite(ptr, size, count, iop)
27*2029Swnj unsigned size, count;
28*2029Swnj register char *ptr;
29*2029Swnj register FILE *iop;
30*2029Swnj {
31*2029Swnj 	register unsigned s;
32*2029Swnj 	unsigned ndone;
33*2029Swnj 
34*2029Swnj 	ndone = 0;
35*2029Swnj 	if (size)
36*2029Swnj 	for (; ndone<count; ndone++) {
37*2029Swnj 		s = size;
38*2029Swnj 		do {
39*2029Swnj 			putc(*ptr++, iop);
40*2029Swnj 		} while (--s);
41*2029Swnj 		if (ferror(iop))
42*2029Swnj 			break;
43*2029Swnj 	}
44*2029Swnj 	return(ndone);
45*2029Swnj }
46