1/*
2 * fread.c
3 */
4
5#include <errno.h>
6#include <unistd.h>
7#include <stdio.h>
8
9size_t _fread(void *buf, size_t count, FILE * f)
10{
11    size_t bytes = 0;
12    ssize_t rv;
13    char *p = buf;
14
15    while (count) {
16	rv = read(fileno(f), p, count);
17	if (rv == -1) {
18	    if (errno == EINTR || errno == EAGAIN)
19		continue;
20	    else
21		break;
22	} else if (rv == 0) {
23	    break;
24	}
25
26	p += rv;
27	bytes += rv;
28	count -= rv;
29    }
30
31    return bytes;
32}
33