Home | History | Annotate | Download | only in lib
      1 /*
      2  * fwrite.c
      3  */
      4 
      5 #include <errno.h>
      6 #include <unistd.h>
      7 #include <stdio.h>
      8 
      9 size_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