-#if defined EFF_ONLY_OK
- return access (path, mode | EFF_ONLY_OK);
-#elif defined ACC_SELF
- return accessx (path, mode, ACC_SELF);
-#elif HAVE_EACCESS
- return eaccess (path, mode);
-#else
+#if HAVE_FACCESSAT /* glibc */
+ return faccessat (AT_FDCWD, file, mode, AT_EACCESS);
+#elif defined EFF_ONLY_OK /* IRIX, OSF/1, Interix */
+ return access (file, mode | EFF_ONLY_OK);
+#elif defined ACC_SELF /* AIX */
+ return accessx (file, mode, ACC_SELF);
+#elif HAVE_EACCESS /* FreeBSD */
+ return eaccess (file, mode);
+#else /* MacOS X, NetBSD, OpenBSD, HP-UX, Solaris, Cygwin, mingw, BeOS */