posix: add *at calls, e.g. openat(2) and related constants
Add all the missing *at()
calls from POSIX.1-2008:
-
faccessat
-int faccessat(int dirfd, const char *pathname, int mode, int flags);
unistd.h
-
fchmodat
-int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
sys/stat.h
-
fchownat
-int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags);
unistd.h
-
fstatat
-int fstatat(int dirfd, const char *pathname, struct stat *statbuf, int flags);
sys/stat.h
-
mkdirat
-int mkdirat(int dirfd, const char *pathname, mode_t mode);
sys/stat.h
-
mkfifoat
-int mkfifoat(int dirfd, const char *pathname, mode_t mode);
sys/stat.h
-
mknodat
-int mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev);
sys/stat.h
-
linkat
-int linkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags);
|unistd.h
-
openat
-int openat(int dirfd, const char *pathname, int flags, mode_t mode);
-
symlinkat
-int symlinkat(const char *target, int newdirfd, const char *linkpath);
unistd.h
-
readlinkat
-ssize_t readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsiz);
unistd.h
-
renameat
-int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
stdio.h
-
unlinkat
-int unlinkat(int dirfd, const char *pathname, int flags);
unistd.h
Constants
-
AT_SYMLINK_NOFOLLOW
|fstatat
-
AT_EACCESS
|faccessat
-
AT_FDCWD
|openat
-
AT_REMOVEDIR
|unlinkat
-
AT_SYMLINK_FOLLOW
|linkat
Fixes #823 (closed)