changeset 7822:5abe05d7d093 HEAD

HP-UX: pread() and pwrite() are broken, use our own implementation.
author Timo Sirainen <tss@iki.fi>
date Thu, 12 Jun 2008 00:01:21 +0300
parents 654cd4d966be
children b13dca205eaa
files configure.in src/lib/compat.c src/lib/compat.h
diffstat 3 files changed, 4 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/configure.in	Wed Jun 11 23:55:36 2008 +0300
+++ b/configure.in	Thu Jun 12 00:01:21 2008 +0300
@@ -613,6 +613,7 @@
 case "$host_os" in
 	hpux*)
 		CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
+		AC_DEFINE(PREAD_BROKEN,, Defint if pread/pwrite implementation is broken)
 		;;
 	*)
 		;;
--- a/src/lib/compat.c	Wed Jun 11 23:55:36 2008 +0300
+++ b/src/lib/compat.c	Thu Jun 12 00:01:21 2008 +0300
@@ -107,7 +107,7 @@
 }
 #endif
 
-#ifndef HAVE_PREAD
+#if !defined(HAVE_PREAD) || defined(PREAD_BROKEN)
 ssize_t my_pread(int fd, void *buf, size_t count, off_t offset)
 {
 	ssize_t ret;
@@ -149,9 +149,7 @@
 		return -1;
 	return ret;
 }
-#endif
-
-#ifdef PREAD_WRAPPERS
+#elif defined(PREAD_WRAPPERS)
 
 ssize_t my_pread(int fd, void *buf, size_t count, off_t offset)
 {
--- a/src/lib/compat.h	Wed Jun 11 23:55:36 2008 +0300
+++ b/src/lib/compat.h	Thu Jun 12 00:01:21 2008 +0300
@@ -160,7 +160,7 @@
 ssize_t my_writev(int fd, const struct iovec *iov, int iov_len);
 #endif
 
-#if !defined (HAVE_PREAD) || defined (PREAD_WRAPPERS)
+#if !defined(HAVE_PREAD) || defined(PREAD_WRAPPERS) || defined(PREAD_BROKEN)
 #  ifndef IN_COMPAT_C
 #    define pread my_pread
 #    define pwrite my_pwrite