secondary cache feature in vm.
[minix.git] / lib / libc / posix / pread.c
bloba1af0223ebf07205b8951d4c67d33b54e0f36f34
1 #include <lib.h>
2 #include <unistd.h>
4 ssize_t pread(int fd, void *buffer, size_t nbytes, off_t where)
6 off_t here;
7 ssize_t r;
9 if((here = lseek(fd, 0, SEEK_CUR)) < 0)
10 return -1;
12 if(lseek(fd, where, SEEK_SET) < 0)
13 return -1;
15 if((r=read(fd, buffer, nbytes)) < 0) {
16 int e = errno;
17 lseek(fd, here, SEEK_SET);
18 errno = e;
19 return -1;
22 if(lseek(fd, here, SEEK_SET) < 0)
23 return -1;
25 return r;