33 lines
451 B
C
33 lines
451 B
C
/*
|
|
* 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 || errno == EAGAIN)
|
|
continue;
|
|
else
|
|
break;
|
|
} else if (rv == 0) {
|
|
break;
|
|
}
|
|
|
|
p += rv;
|
|
bytes += rv;
|
|
count -= rv;
|
|
}
|
|
|
|
return bytes;
|
|
}
|