Merge commit 'a39d4083cab589d7cd6a13e8a4b8db8875261d75'
[gnulib.git] / m4 / euidaccess.m4
index 5882f58..55393a4 100644 (file)
@@ -1,5 +1,5 @@
-# euidaccess.m4 serial 10
-dnl Copyright (C) 2002-2009 Free Software Foundation, Inc.
+# euidaccess.m4 serial 15
+dnl Copyright (C) 2002-2014 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.
@@ -7,6 +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_CHECK_DECLS([setregid])
   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
@@ -22,28 +23,30 @@ AC_DEFUN([gl_FUNC_EUIDACCESS],
   dnl Persuade glibc <unistd.h> to declare euidaccess().
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
-  AC_REPLACE_FUNCS([euidaccess])
+  AC_CHECK_FUNCS([euidaccess])
   if test $ac_cv_func_euidaccess = no; then
     HAVE_EUIDACCESS=0
-    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])
-  AC_REQUIRE([AC_FUNC_GETGROUPS])
+  dnl Prefer POSIX faccessat over non-standard euidaccess.
+  AC_CHECK_FUNCS_ONCE([faccessat])
+  dnl Try various other non-standard fallbacks.
+  AC_CHECK_HEADERS([libgen.h])
+  AC_FUNC_GETGROUPS
 
-  # Solaris 9 needs -lgen to get the eaccess function.
+  # Solaris 9 and 10 need -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
     AC_SEARCH_LIBS([eaccess], [gen],
                    [test "$ac_cv_search_eaccess" = "none required" ||
                     LIB_EACCESS=$ac_cv_search_eaccess])
-    AC_SUBST([LIB_EACCESS])
     AC_CHECK_FUNCS([eaccess])
   LIBS=$gl_saved_libs
 ])