writen.c 394 B

1234567891011121314151617181920
  1. #include "ourhdr.h"
  2. ssize_t /* Write "n" bytes to a descriptor. */
  3. writen(int fd, const void *vptr, size_t n)
  4. {
  5. size_t nleft, nwritten;
  6. const char *ptr;
  7. ptr = vptr; /* can't do pointer arithmetic on void* */
  8. nleft = n;
  9. while (nleft > 0) {
  10. if ( (nwritten = write(fd, ptr, nleft)) <= 0)
  11. return(nwritten); /* error */
  12. nleft -= nwritten;
  13. ptr += nwritten;
  14. }
  15. return(n);
  16. }