/* | |
* fwrite.c | |
*/ | |
#include <errno.h> | |
#include <unistd.h> | |
#include <stdio.h> | |
size_t __fwrite(const void *buf, size_t count, FILE *f) | |
{ | |
size_t bytes = 0; | |
ssize_t rv; | |
const char *p = buf; | |
while ( count ) { | |
rv = write(fileno(f), p, count); | |
if ( rv == -1 ) { | |
if ( errno == EINTR ) | |
continue; | |
else | |
break; | |
} else if ( rv == 0 ) { | |
break; | |
} | |
p += rv; | |
bytes += rv; | |
count -= rv; | |
} | |
return bytes; | |
} | |