From: Timo Sirainen Date: Wed, 29 Oct 2003 13:50:36 +0000 (+0200) Subject: pread/pwrite fixes X-Git-Tag: 1.1.alpha1~4257 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a280c911b436892b2e9587915ced0be3b47669e;p=thirdparty%2Fdovecot%2Fcore.git pread/pwrite fixes --HG-- branch : HEAD --- diff --git a/configure.in b/configure.in index c70e9c74ac..8072b3a954 100644 --- a/configure.in +++ b/configure.in @@ -227,9 +227,13 @@ fi dnl * after -lsocket and -lnsl tests, inet_aton() may be in them AC_CHECK_FUNCS(fcntl flock inet_aton sigaction getpagesize madvise \ - strcasecmp stricmp vsnprintf vsyslog writev pwrite \ + strcasecmp stricmp vsnprintf vsyslog writev pread \ setrlimit setproctitle) +if test `uname` = "Linux"; then + AC_DEFINE(PREAD_WRAPPERS,, Define if pread/pwrite needs _XOPEN_SOURCE 500) +fi + dnl * poll/select? AC_CHECK_FUNC(poll, [ diff --git a/src/lib-index/mail-cache.c b/src/lib-index/mail-cache.c index 8d11e39aa1..6311c0b8f6 100644 --- a/src/lib-index/mail-cache.c +++ b/src/lib-index/mail-cache.c @@ -1,7 +1,5 @@ /* Copyright (C) 2003 Timo Sirainen */ -#define _XOPEN_SOURCE 500 /* for pwrite() / Linux */ - #include "lib.h" #include "buffer.h" #include "byteorder.h" diff --git a/src/lib/compat.c b/src/lib/compat.c index dd0be76f76..d75249b73b 100644 --- a/src/lib/compat.c +++ b/src/lib/compat.c @@ -2,6 +2,10 @@ #include "lib.h" +#ifdef PREAD_WRAPPERS +# define _XOPEN_SOURCE 500 /* Linux */ +#endif + #include #include #include @@ -96,7 +100,7 @@ ssize_t my_writev(int fd, const struct iovec *iov, int iov_len) } #endif -#ifndef HAVE_PWRITE +#ifndef HAVE_PREAD ssize_t my_pread(int fd, void *buf, size_t count, off_t offset) { ssize_t ret; @@ -129,3 +133,15 @@ ssize_t my_pwrite(int fd, const void *buf, size_t count, off_t offset) return ret; } #endif + +#ifdef PREAD_WRAPPERS +ssize_t my_pread(int fd, void *buf, size_t count, off_t offset) +{ + return pread(fd, buf, count, offset); +} + +ssize_t my_pwrite(int fd, const void *buf, size_t count, off_t offset) +{ + return pwrite(fd, buf, count, offset); +} +#endif diff --git a/src/lib/compat.h b/src/lib/compat.h index 809eac94db..ab6578bf70 100644 --- a/src/lib/compat.h +++ b/src/lib/compat.h @@ -94,7 +94,7 @@ struct iovec; ssize_t my_writev(int fd, const struct iovec *iov, int iov_len); #endif -#ifndef HAVE_PWRITE +#if !defined (HAVE_PREAD) || defined (PREAD_WRAPPERS) # define pread my_pread # define pwrite my_pwrite ssize_t my_pread(int fd, void *buf, size_t count, off_t offset); diff --git a/src/lib/istream-file.c b/src/lib/istream-file.c index a8f2f70961..4e0ce7d2c1 100644 --- a/src/lib/istream-file.c +++ b/src/lib/istream-file.c @@ -2,8 +2,6 @@ /* @UNSAFE: whole file */ -#define _XOPEN_SOURCE 500 /* for pread() / Linux */ - #include "lib.h" #include "alarm-hup.h" #include "istream-internal.h"