]> git.sesse.net Git - plocate/blob - complete_pread.cpp
Move complete_pread() into a separate file, to avoid the io_uring false dependency.
[plocate] / complete_pread.cpp
1 #include <errno.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5
6 void complete_pread(int fd, void *ptr, size_t len, off_t offset)
7 {
8         while (len > 0) {
9                 ssize_t ret = pread(fd, ptr, len, offset);
10                 if (ret == -1 && errno == EINTR) {
11                         continue;
12                 }
13                 if (ret <= 0) {
14                         perror("pread");
15                         exit(1);
16                 }
17                 ptr = reinterpret_cast<char *>(ptr) + ret;
18                 len -= ret;
19                 offset -= ret;
20         }
21 }