changeset 1849:83c635deda0b HEAD

pread/pwrite fixes
author Timo Sirainen <tss@iki.fi>
date Wed, 29 Oct 2003 15:50:36 +0200
parents 8222937d4434
children e19d3d8632b7
files configure.in src/lib-index/mail-cache.c src/lib/compat.c src/lib/compat.h src/lib/istream-file.c
diffstat 5 files changed, 23 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/configure.in	Wed Oct 29 15:37:33 2003 +0200
+++ b/configure.in	Wed Oct 29 15:50:36 2003 +0200
@@ -227,9 +227,13 @@
 
 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, [
--- a/src/lib-index/mail-cache.c	Wed Oct 29 15:37:33 2003 +0200
+++ b/src/lib-index/mail-cache.c	Wed Oct 29 15:50:36 2003 +0200
@@ -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"
--- a/src/lib/compat.c	Wed Oct 29 15:37:33 2003 +0200
+++ b/src/lib/compat.c	Wed Oct 29 15:50:36 2003 +0200
@@ -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 @@
 }
 #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 @@
 	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
--- a/src/lib/compat.h	Wed Oct 29 15:37:33 2003 +0200
+++ b/src/lib/compat.h	Wed Oct 29 15:50:36 2003 +0200
@@ -94,7 +94,7 @@
 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);
--- a/src/lib/istream-file.c	Wed Oct 29 15:37:33 2003 +0200
+++ b/src/lib/istream-file.c	Wed Oct 29 15:50:36 2003 +0200
@@ -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"