Hi Jim, The macros in m4/openat.m4 could be made a little more reliable: - Before running a test program that invokes fchownat(), make sure that glibc will declare fchownat(). - Ensure that REPLACE_FCHOWNAT at is not set to 0 accidentally after it has already been determined that its correct value should be 1.
In my tests, I didn't see the wrong macro ordering occur actually, but the bugs could surface if macro invocations get rearranged, or if fchownat is moved to a module of its own, or similar. OK to apply? 2010-11-13 Bruno Haible <br...@clisp.org> openat: Ensure autoconf macro ordering. * m4/openat.m4 (gl_FUNC_FCHOWNAT_DEREF_BUG): Require gl_USE_SYSTEM_EXTENSIONS. (gl_FUNC_FCHOWNAT): Require gl_UNISTD_H_DEFAULTS. --- m4/openat.m4.orig Sat Nov 13 13:58:48 2010 +++ m4/openat.m4 Sat Nov 13 13:56:13 2010 @@ -63,6 +63,9 @@ # gl_FUNC_FCHOWNAT_DEREF_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]]) AC_DEFUN([gl_FUNC_FCHOWNAT_DEREF_BUG], [ + dnl Persuade glibc <unistd.h> to declare fchownat(). + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CACHE_CHECK([whether fchownat works with AT_SYMLINK_NOFOLLOW], gl_cv_func_fchownat_nofollow_works, [ @@ -104,6 +107,7 @@ # Also use the replacement function if fchownat is simply not available. AC_DEFUN([gl_FUNC_FCHOWNAT], [ + AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_CHOWN]) AC_CHECK_FUNC([fchownat], [gl_FUNC_FCHOWNAT_DEREF_BUG(