3 dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
8 AC_DEFUN([gl_FUNC_PREAD],
10 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
11 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
13 dnl Persuade glibc <unistd.h> to declare pread().
14 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
16 gl_CHECK_FUNCS_ANDROID([pread], [[#include <unistd.h>]])
17 if test $ac_cv_func_pread = yes; then
18 dnl On HP-UX 11.11 with _FILE_OFFSET_BITS=64, pread() on a file returns 0
19 dnl instead of a positive value.
20 dnl On HP-UX 11.31, pread() on a pipe does not fail.
21 AC_CACHE_CHECK([whether pread works],
22 [gl_cv_func_pread_works],
24 dnl Initial guess, used when cross-compiling.
28 hpux*) gl_cv_func_pread_works="guessing no" ;;
29 # Guess yes otherwise.
30 *) gl_cv_func_pread_works="guessing yes" ;;
33 gl_saved_CPPFLAGS="$CPPFLAGS"
34 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64"
37 #include <sys/types.h>
45 /* This test fails on HP-UX 11.00..11.11. */
47 int fd = open ("conftest.c", O_RDONLY);
53 if (pread (fd, &byte_buf, 1, (off_t) 0) != 1)
58 /* This test fails on HP-UX 11.00..11.31. */
60 FILE *fp = popen ("echo", "r");
67 if (pread (fd, &byte_buf, 1, (off_t) 0) >= 0)
74 [gl_cv_func_pread_works=yes],
75 [gl_cv_func_pread_works=no],
77 CPPFLAGS="$gl_saved_CPPFLAGS"
79 case "$gl_cv_func_pread_works" in
85 case "$gl_cv_onwards_func_pread" in
86 future*) REPLACE_PREAD=1 ;;