maint: fts: move decl of `dp' down into while loop; split a long line
[gnulib.git] / m4 / euidaccess.m4
index c113b4d..5066e62 100644 (file)
@@ -1,5 +1,5 @@
-# euidaccess.m4 serial 5
-dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+# euidaccess.m4 serial 13
+dnl Copyright (C) 2002-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_NONREENTRANT_EUIDACCESS],
 [
   AC_REQUIRE([gl_FUNC_EUIDACCESS])
 AC_DEFUN([gl_FUNC_NONREENTRANT_EUIDACCESS],
 [
   AC_REQUIRE([gl_FUNC_EUIDACCESS])
-  AC_DEFINE([PREFER_NONREENTRANT_EUIDACCESS], 1,
+  AC_DEFINE([PREFER_NONREENTRANT_EUIDACCESS], [1],
     [Define this if you prefer euidaccess to return the correct result
      even if this would make it nonreentrant.  Define this only if your
      entire application is safe even if the uid or gid might temporarily
     [Define this if you prefer euidaccess to return the correct result
      even if this would make it nonreentrant.  Define this only if your
      entire application is safe even if the uid or gid might temporarily
@@ -17,32 +17,36 @@ AC_DEFUN([gl_FUNC_NONREENTRANT_EUIDACCESS],
 
 AC_DEFUN([gl_FUNC_EUIDACCESS],
 [
 
 AC_DEFUN([gl_FUNC_EUIDACCESS],
 [
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
   dnl Persuade glibc <unistd.h> to declare euidaccess().
   dnl Persuade glibc <unistd.h> to declare euidaccess().
-  AC_REQUIRE([AC_GNU_SOURCE])
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
 
-  AC_CHECK_DECLS_ONCE([euidaccess])
-  AC_REPLACE_FUNCS(euidaccess)
+  AC_CHECK_FUNCS([euidaccess])
   if test $ac_cv_func_euidaccess = no; then
   if test $ac_cv_func_euidaccess = no; then
-    gl_PREREQ_EUIDACCESS
+    HAVE_EUIDACCESS=0
   fi
 ])
 
 # Prerequisites of lib/euidaccess.c.
 AC_DEFUN([gl_PREREQ_EUIDACCESS], [
   fi
 ])
 
 # Prerequisites of lib/euidaccess.c.
 AC_DEFUN([gl_PREREQ_EUIDACCESS], [
-  AC_CHECK_HEADERS_ONCE(libgen.h)
-  AC_CHECK_DECLS_ONCE(setregid)
+  dnl Prefer POSIX faccessat over non-standard euidaccess.
+  AC_CHECK_FUNCS_ONCE([faccessat])
+  dnl Try various other non-standard fallbacks.
+  AC_CHECK_HEADERS_ONCE([libgen.h])
+  AC_CHECK_DECLS_ONCE([setregid])
   AC_REQUIRE([AC_FUNC_GETGROUPS])
   AC_REQUIRE([AC_FUNC_GETGROUPS])
-  AC_REQUIRE([AC_HEADER_STAT])
 
   # Solaris 9 needs -lgen to get the eaccess function.
   # Save and restore LIBS so -lgen isn't added to it.  Otherwise, *all*
   # programs in the package would end up linked with that potentially-shared
   # library, inducing unnecessary run-time overhead.
 
   # Solaris 9 needs -lgen to get the eaccess function.
   # Save and restore LIBS so -lgen isn't added to it.  Otherwise, *all*
   # programs in the package would end up linked with that potentially-shared
   # library, inducing unnecessary run-time overhead.
+  LIB_EACCESS=
+  AC_SUBST([LIB_EACCESS])
   gl_saved_libs=$LIBS
   gl_saved_libs=$LIBS
-    AC_SEARCH_LIBS(eaccess, [gen],
+    AC_SEARCH_LIBS([eaccess], [gen],
                    [test "$ac_cv_search_eaccess" = "none required" ||
                     LIB_EACCESS=$ac_cv_search_eaccess])
                    [test "$ac_cv_search_eaccess" = "none required" ||
                     LIB_EACCESS=$ac_cv_search_eaccess])
-    AC_SUBST(LIB_EACCESS)
-    AC_CHECK_FUNCS(eaccess)
+    AC_CHECK_FUNCS([eaccess])
   LIBS=$gl_saved_libs
 ])
   LIBS=$gl_saved_libs
 ])