X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fopenat.m4;h=149b864761793a37dd41768de2fdb1f516c6efff;hb=946c971f93d58ec52508dbcc36b59ca9f925bf31;hp=5683650d0f9fc57c5849c5392e367f1edd277ef2;hpb=b26a79b01ebd995cd4191f5f920672dc646822b4;p=gnulib.git diff --git a/m4/openat.m4 b/m4/openat.m4 index 5683650d0..149b86476 100644 --- a/m4/openat.m4 +++ b/m4/openat.m4 @@ -1,4 +1,4 @@ -# serial 35 +# serial 36 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2011 Free Software Foundation, Inc. @@ -164,8 +164,37 @@ AC_DEFUN([gl_FUNC_FSTATAT], if test $ac_cv_func_fstatat = no; then HAVE_FSTATAT=0 - elif test $gl_cv_func_lstat_dereferences_slashed_symlink != yes; then - REPLACE_FSTATAT=1 + else + dnl Test for an AIX 7.1 bug; see + dnl . + AC_CACHE_CHECK([whether fstatat (AT_FDCWD, ..., 0) works], + [gl_cv_func_fstatat_AT_FDCWD_0], + [gl_cv_func_fstatat_AT_FDCWD_0=no + echo xxx >conftest.file + AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + #include + #include + int + main (void) + { + struct stat a; + return fstatat (AT_FDCWD, "conftest.file", &a, 0) != 0; + } + ]])], + [gl_cv_func_fstatat_AT_FDCWD_0=yes])]) + + case $gl_cv_func_fstatat_AT_FDCWD_0+$gl_cv_func_lstat_dereferences_slashed_symlink in + yes+yes) ;; + *) REPLACE_FSTATAT=1 + if test $gl_cv_func_fstatat_AT_FDCWD_0 != yes; then + AC_DEFINE([FSTATAT_AT_FDCWD_0_BROKEN], [1], + [Define to 1 if fstatat (AT_FDCWD, ..., 0) does not work, + as in AIX 7.1.]) + fi + ;; + esac fi ])