X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fopenat.m4;h=5683650d0f9fc57c5849c5392e367f1edd277ef2;hb=d21602db7c1b97cd12478c3e40355ccb39556068;hp=affb11455586a8c834c72ce11db1bc4518bea828;hpb=ce4994a0f21a348cc0394235ae848413360cbce5;p=gnulib.git diff --git a/m4/openat.m4 b/m4/openat.m4 index affb11455..5683650d0 100644 --- a/m4/openat.m4 +++ b/m4/openat.m4 @@ -1,4 +1,4 @@ -# serial 33 +# serial 35 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2011 Free Software Foundation, Inc. @@ -23,8 +23,7 @@ AC_DEFUN([gl_FUNC_OPENAT], GNULIB_UNLINKAT=1 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_FUNCS_ONCE([lchmod]) - AC_CHECK_FUNCS([fchmodat fstatat mkdirat openat unlinkat]) + AC_CHECK_FUNCS_ONCE([fchmodat lchmod mkdirat openat unlinkat]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_REQUIRE([gl_FUNC_UNLINK]) case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in @@ -37,13 +36,11 @@ AC_DEFUN([gl_FUNC_OPENAT], # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. REPLACE_OPENAT=1 - REPLACE_FSTATAT=1 REPLACE_UNLINKAT=1 ;; *) HAVE_OPENAT=0 HAVE_UNLINKAT=0 # No known system with unlinkat but not openat - HAVE_FSTATAT=0 # No known system with fstatat but not openat gl_PREREQ_OPENAT;; esac if test $ac_cv_func_fchmodat != yes; then @@ -53,6 +50,7 @@ AC_DEFUN([gl_FUNC_OPENAT], HAVE_MKDIRAT=0 fi gl_FUNC_FCHOWNAT + gl_FUNC_FSTATAT ]) # gl_FUNC_FCHOWNAT_DEREF_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]]) @@ -155,6 +153,22 @@ AC_DEFUN([gl_FUNC_FCHOWNAT], [HAVE_FCHOWNAT=0]) ]) +# If we have the fstatat function, and it has the bug (in AIX 7.1) +# that it does not fill in st_size correctly, use the replacement function. +AC_DEFUN([gl_FUNC_FSTATAT], +[ + AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) + AC_CHECK_FUNCS_ONCE([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 + fi +]) + AC_DEFUN([gl_PREREQ_OPENAT], [ AC_REQUIRE([AC_C_INLINE])