]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
pread/pwrite fixes
authorTimo Sirainen <tss@iki.fi>
Wed, 29 Oct 2003 13:50:36 +0000 (15:50 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 29 Oct 2003 13:50:36 +0000 (15:50 +0200)
--HG--
branch : HEAD

configure.in
src/lib-index/mail-cache.c
src/lib/compat.c
src/lib/compat.h
src/lib/istream-file.c

index c70e9c74acbd845c0170c4d34ae2ea2f8058b30b..8072b3a954e6ca9c449523ac18c863bb8eb939f2 100644 (file)
@@ -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, [
index 8d11e39aa17fb9d5735ca8f501d3e9af4e99aa68..6311c0b8f65b3614e41cf3c919c23c5229b9884d 100644 (file)
@@ -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"
index dd0be76f76a807557ac8ce3dfa1c6bde50766c19..d75249b73bfce85b2a3503317d5499787b309141 100644 (file)
@@ -2,6 +2,10 @@
 
 #include "lib.h"
 
+#ifdef PREAD_WRAPPERS
+#  define _XOPEN_SOURCE 500 /* Linux */
+#endif
+
 #include <stdio.h>
 #include <ctype.h>
 #include <unistd.h>
@@ -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
index 809eac94db6fb1b1dc01b3ce2b64365dcb0d35b2..ab6578bf709129fe25e79c927dfe3d783c0a0d60 100644 (file)
@@ -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);
index a8f2f70961e8820a00ab22f879dbde76b8dc1b52..4e0ce7d2c1f7ecfe5387ac0acbab66633bbd55b6 100644 (file)
@@ -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"