pread.c 433 B

12345678910111213141516171819
  1. #include "../git-compat-util.h"
  2. ssize_t git_pread(int fd, void *buf, size_t count, off_t offset)
  3. {
  4. off_t current_offset;
  5. ssize_t rc;
  6. current_offset = lseek(fd, 0, SEEK_CUR);
  7. if (lseek(fd, offset, SEEK_SET) < 0)
  8. return -1;
  9. rc = read_in_full(fd, buf, count);
  10. if (current_offset != lseek(fd, current_offset, SEEK_SET))
  11. return -1;
  12. return rc;
  13. }