lseek.c 358 B

123456789101112131415161718192021222324
  1. #include "lib.h"
  2. #include <unistd.h>
  3. #include <errno.h>
  4. #include "sys9.h"
  5. /*
  6. * BUG: errno mapping
  7. */
  8. off_t
  9. lseek(int d, off_t offset, int whence)
  10. {
  11. long long n;
  12. int flags;
  13. flags = _fdinfo[d].flags;
  14. if(flags&(FD_BUFFERED|FD_BUFFEREDX|FD_ISTTY)) {
  15. errno = ESPIPE;
  16. return -1;
  17. }
  18. n = _SEEK(d, offset, whence);
  19. if(n < 0)
  20. _syserrno();
  21. return n;
  22. }