Stefan-W. Hahn | 6900679 | 2007-01-09 22:04:12 +0100 | [diff] [blame] | 1 | #include "../git-compat-util.h" |
2 | |||||
3 | ssize_t git_pread(int fd, void *buf, size_t count, off_t offset) | ||||
4 | { | ||||
5 | off_t current_offset; | ||||
6 | ssize_t rc; | ||||
7 | |||||
8 | current_offset = lseek(fd, 0, SEEK_CUR); | ||||
9 | |||||
10 | if (lseek(fd, offset, SEEK_SET) < 0) | ||||
11 | return -1; | ||||
12 | |||||
13 | rc = read_in_full(fd, buf, count); | ||||
14 | |||||
15 | if (current_offset != lseek(fd, current_offset, SEEK_SET)) | ||||
16 | return -1; | ||||
17 | return rc; | ||||
18 | } |