write.c 348 B

123456789101112131415161718192021
  1. #include <errno.h>
  2. #include <unistd.h>
  3. #include "lib.h"
  4. #include "sys9.h"
  5. ssize_t
  6. write(int d, const void *buf, size_t nbytes)
  7. {
  8. int n;
  9. if(d<0 || d>=OPEN_MAX || !(_fdinfo[d].flags&FD_ISOPEN)){
  10. errno = EBADF;
  11. return -1;
  12. }
  13. if(_fdinfo[d].oflags&O_APPEND)
  14. _SEEK(d, 0, 2);
  15. n = _WRITE(d, buf, nbytes);
  16. if(n < 0)
  17. _syserrno();
  18. return n;
  19. }