/* * 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; }