don't do 1 byte writes, buffer and flush unbuffered I/O (stderr).
[unix-history] / usr / src / lib / libc / stdio / rdwr.c
CommitLineData
e87a2aef
BJ
1/* @(#)rdwr.c 4.1 (Berkeley) %G% */
2#include <stdio.h>
3
4fread(ptr, size, count, iop)
5unsigned size, count;
6register char *ptr;
7register FILE *iop;
8{
9 register c;
10 unsigned ndone, s;
11
12 ndone = 0;
13 if (size)
14 for (; ndone<count; ndone++) {
15 s = size;
16 do {
17 if ((c = getc(iop)) >= 0)
18 *ptr++ = c;
19 else
20 return(ndone);
21 } while (--s);
22 }
23 return(ndone);
24}
25
26fwrite(ptr, size, count, iop)
27unsigned size, count;
28register char *ptr;
29register FILE *iop;
30{
31 register unsigned s;
32 unsigned ndone;
33
34 ndone = 0;
35 if (size)
36 for (; ndone<count; ndone++) {
37 s = size;
38 do {
39 putc(*ptr++, iop);
40 } while (--s);
41 if (ferror(iop))
42 break;
43 }
44 return(ndone);
45}