From 11b2c6d6fe4dbbf5a54ae1e08e979c35ab6b7fa0 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Mon, 14 Feb 2011 13:53:11 -0600 Subject: [PATCH] HPUX: Disable positional I/O Some versions of HP-UX have the pread() and pwrite() functions, but they behave in odd ways; most notably, ignoring the offset argument when _FILE_OFFSET_BITS is defined to 64. This is noted in recent gnulib documentation , and slightly less clear references to pread() being broken can be found on the development mailing list for git itself. It is not completely clear what specific HP-UX versions are affected by this. An autoconf run-time test may also be insufficient, because the same binaries should be usable on machines with broken and non-broken pread() implementations. So, to be safe, disable positional I/O on HP-UX unconditionally. Change-Id: I09b8d9c441622c961d1df90fe27eeccaa948f5c4 Reviewed-on: http://gerrit.openafs.org/3949 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- acinclude.m4 | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 5103388..2fa43b8 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1449,22 +1449,29 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H ], [AC_MSG_RESULT(no)]) -AC_MSG_CHECKING([for positional I/O]) -if test "$ac_cv_func_pread" = "yes" && \ - test "$ac_cv_func_pwrite" = "yes"; then - AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()]) - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi -AC_MSG_CHECKING([for vectored positional I/O]) -if test "$ac_cv_func_preadv" = "yes" && \ - test "$ac_cv_func_pwritev" = "yes"; then - AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()]) - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi +case $AFS_SYSNAME in +*hp_ux* | *hpux*) + AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.]) + ;; +*) + AC_MSG_CHECKING([for positional I/O]) + if test "$ac_cv_func_pread" = "yes" && \ + test "$ac_cv_func_pwrite" = "yes"; then + AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()]) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + AC_MSG_CHECKING([for vectored positional I/O]) + if test "$ac_cv_func_preadv" = "yes" && \ + test "$ac_cv_func_pwritev" = "yes"; then + AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()]) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + ;; +esac AC_MSG_CHECKING([for POSIX regex library]) if test "$ac_cv_header_regex_h" = "yes" && \ -- 1.9.4