2009-09-03 Eric Blake <ebb9@byu.net>
+ euidaccess: prefer POSIX over non-standard implementation
+ * m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Check for faccessat.
+ * lib/euidaccess.c (euidaccess): Use it if available.
+
openat: make template easier to use
* lib/at-func.c (CALL_FUNC): Allow AT_FUNC_USE_F1_COND and
AT_FUNC_F2 to be undefined.
/* euidaccess -- check if effective user id can access file
- Copyright (C) 1990, 1991, 1995, 1998, 2000, 2003, 2004, 2005, 2006, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1990, 1991, 1995, 1998, 2000, 2003, 2004, 2005, 2006,
+ 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
int
euidaccess (const char *file, int mode)
{
-#if defined EFF_ONLY_OK
+#if HAVE_FACCESSAT
+ return faccessat (AT_FDCWD, file, mode, AT_EACCESS);
+#elif defined EFF_ONLY_OK
return access (file, mode | EFF_ONLY_OK);
#elif defined ACC_SELF
return accessx (file, mode, ACC_SELF);
-# euidaccess.m4 serial 10
+# euidaccess.m4 serial 11
dnl Copyright (C) 2002-2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
# Prerequisites of lib/euidaccess.c.
AC_DEFUN([gl_PREREQ_EUIDACCESS], [
+ 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])