chiark / gitweb /
[PATCH] update klibc to version 0.181
[elogind.git] / klibc / klibc / fread.c
1 /*
2  * fread.c
3  */
4
5 #include <errno.h>
6 #include <unistd.h>
7 #include <stdio.h>
8
9 size_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 )
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
34     
35