1 /* 2 * fwrite.c 3 */ 4 5 #include <errno.h> 6 #include <unistd.h> 7 #include <stdio.h> 8 _fwrite(const void * buf,size_t count,FILE * f)9size_t _fwrite(const void *buf, size_t count, FILE * f) 10 { 11 size_t bytes = 0; 12 ssize_t rv; 13 const char *p = buf; 14 15 while (count) { 16 rv = write(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