1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-09-01 02:34:55 +00:00

euidaccess: prefer POSIX over non-standard implementation

* m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Check for faccessat.
* lib/euidaccess.c (euidaccess): Use it if available.

Signed-off-by: Eric Blake <ebb9@byu.net>
This commit is contained in:
Eric Blake
2009-09-03 13:43:12 -06:00
parent 4208951389
commit bc366ae145
3 changed files with 13 additions and 4 deletions
+4
View File
@@ -1,5 +1,9 @@
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.
+5 -3
View File
@@ -1,7 +1,7 @@
/* 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.
@@ -77,7 +77,9 @@
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);
+4 -1
View File
@@ -1,4 +1,4 @@
# 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,
@@ -31,6 +31,9 @@ AC_DEFUN([gl_FUNC_EUIDACCESS],
# 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])