faccessat
=========

POSIX specification:
 https://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html

Gnulib module: faccessat

Portability problems fixed by Gnulib:

  * This function is missing on some platforms: glibc 2.3.6, macOS 10.12, FreeBSD 7.4, NetBSD 6.1.5, OpenBSD 4.9, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

  * On some platforms, faccessat (dfd, "file/", amode, flag) succeeds instead of failing when file is not a directory. macOS 11.1.

Portability problems not fixed by Gnulib:

  * The replacement does not always take ACLs into account.

  * The replacement is not safe to be used in libraries.

  * The replacement is not multithread-safe.

  * The replacement does not support the AT_SYMLINK_NOFOLLOW flag, which is supported by GNU faccessat.

  * On some platforms, faccessat can mishandle AT_EACCESS after a process starts as root and then becomes non-root: GNU/Linux with glibc 2.32.

Other problems of this function:

  * There is an inherent race between calling this function and performing some action based on the results; you should think twice before trusting this function, especially in a set-uid or set-gid program.