summaryrefslogtreecommitdiff
path: root/extstore.c
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2018-12-08 19:32:10 +0100
committerdormando <dormando@rydia.net>2019-08-27 17:02:34 -0700
commitdc41d4fa76bc23d81eb81dcad3a12a8e9241dcd2 (patch)
tree11e1df1955179563d438b1cff703922cf9a33762 /extstore.c
parentf2c0f096addc92f2c2528ea5ac29967e689dfed9 (diff)
downloadmemcached-dc41d4fa76bc23d81eb81dcad3a12a8e9241dcd2.tar.gz
extstore: emulate pread(v) for macOS
Diffstat (limited to 'extstore.c')
-rw-r--r--extstore.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/extstore.c b/extstore.c
index 9cd7ed8..790450b 100644
--- a/extstore.c
+++ b/extstore.c
@@ -773,11 +773,22 @@ static void *extstore_io_thread(void *arg) {
}
pthread_mutex_unlock(&p->mutex);
if (do_op) {
+#ifdef __APPLE__
+ ret = lseek(p->fd, SEEK_SET, p->offset + cur_io->offset);
+ if (ret >= 0) {
+ if (cur_io->iov == NULL) {
+ ret = read(p->fd, cur_io->buf, cur_io->len);
+ } else {
+ ret = readv(p->fd, cur_io->iov, cur_io->iovcnt);
+ }
+ }
+#else
if (cur_io->iov == NULL) {
ret = pread(p->fd, cur_io->buf, cur_io->len, p->offset + cur_io->offset);
} else {
ret = preadv(p->fd, cur_io->iov, cur_io->iovcnt, p->offset + cur_io->offset);
}
+#endif
}
break;
case OBJ_IO_WRITE: