summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/unistd.h2
-rw-r--r--libc/sysdeps/linux/common/Makefile.in1
-rw-r--r--libc/sysdeps/linux/common/euidaccess.c10
3 files changed, 12 insertions, 1 deletions
diff --git a/include/unistd.h b/include/unistd.h
index 40d6abdc0..8e4daf687 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -290,7 +290,7 @@ typedef __socklen_t socklen_t;
/* Test for access to NAME using the real UID and real GID. */
extern int access (const char *__name, int __type) __THROW __nonnull ((1));
-#if 0 /*def __USE_GNU*/
+#if defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
/* Test for access to NAME using the effective UID and GID
(as normal file operations use). */
extern int euidaccess (const char *__name, int __type)
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
index b75b712ac..ade0ac3e2 100644
--- a/libc/sysdeps/linux/common/Makefile.in
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -24,6 +24,7 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \
capget.c \
capset.c \
dup3.c \
+ euidaccess.c \
eventfd.c \
eventfd_read.c \
eventfd_write.c \
diff --git a/libc/sysdeps/linux/common/euidaccess.c b/libc/sysdeps/linux/common/euidaccess.c
new file mode 100644
index 000000000..6e1f39855
--- /dev/null
+++ b/libc/sysdeps/linux/common/euidaccess.c
@@ -0,0 +1,10 @@
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <fcntl.h>
+
+int euidaccess(const char *filename, int amode)
+{
+ return faccessat(AT_FDCWD, filename, amode, AT_EACCESS);
+}
+
+weak_alias(euidaccess, eaccess);