AT_FDCWD
linkat(AT_FDCWD, source, AT_FDCWD, target,
return utimensat(AT_FDCWD, path, times, 0);
return utimensat(AT_FDCWD, path, times, AT_SYMLINK_NOFOLLOW);
int dd = AT_FDCWD;
#ifndef AT_FDCWD
if (linkat(AT_FDCWD, target, AT_FDCWD, outname, AT_SYMLINK_FOLLOW)
if (fromfd != AT_FDCWD || tofd != AT_FDCWD
if (fd == AT_FDCWD || *path == '/') { \
if (fd != AT_FDCWD) \
OK = faccessat(AT_FDCWD, umountprog,
if (path == NULL && fd != AT_FDCWD) {
error = do_sys_utimensat(l, AT_FDCWD, fp->f_data, NULL, 0,
error = do_sys_utimensat(l, AT_FDCWD, fp->f_vnode, NULL, 0,
return do_posix_mknodat(l, AT_FDCWD, SCARG_P32(uap, path),
if (fdat != AT_FDCWD && pathstring[0] != '/') {
error = do_sys_openat(l, AT_FDCWD, SCARG(uap, path),
return do_posix_mknodat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_mknodat(l, AT_FDCWD, pathname, mode, dev, seg);
if (fdat != AT_FDCWD && path[0] != '/') {
if (fdat != AT_FDCWD && path[0] != '/')
return do_sys_mkfifoat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_linkat(l, AT_FDCWD, path, AT_FDCWD, link,
return do_sys_symlinkat(NULL, patharg, AT_FDCWD, link, seg);
KASSERT(l != NULL || fdat == AT_FDCWD);
if (fdat != AT_FDCWD && p[0] != '/') {
return do_sys_symlinkat(l, SCARG(uap, path), AT_FDCWD, SCARG(uap, link),
return do_sys_unlinkat(l, AT_FDCWD, SCARG(uap, path), 0,
if (fdat != AT_FDCWD && p[0] != '/')
return do_sys_unlinkat(NULL, AT_FDCWD, arg, 0, seg);
KASSERT(l != NULL || fdat == AT_FDCWD);
return do_sys_accessat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_statat(NULL, AT_FDCWD, userpath, nd_flag, sb);
KASSERT(l != NULL || fdat == AT_FDCWD);
error = do_sys_statat(l, AT_FDCWD, SCARG(uap, path), FOLLOW, &sb);
error = do_sys_statat(l, AT_FDCWD, SCARG(uap, path), NOFOLLOW, &sb);
return do_sys_readlinkat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_chmodat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_chownat(l, AT_FDCWD, SCARG(uap, path), SCARG(uap,uid),
error = do_sys_utimensat(l, AT_FDCWD, fp->f_vnode, NULL, 0,
return do_sys_utimensat(l, AT_FDCWD, vp, path, flag, tptr, seg);
KASSERT(l != NULL || fdat == AT_FDCWD);
return do_sys_renameat(l, AT_FDCWD, SCARG(uap, from), AT_FDCWD,
return do_sys_renameat(l, AT_FDCWD, SCARG(uap, from), AT_FDCWD,
return do_sys_renameat(NULL, AT_FDCWD, from, AT_FDCWD, to, seg,
KASSERT(l != NULL || fromfd == AT_FDCWD);
KASSERT(l != NULL || tofd == AT_FDCWD);
return do_sys_mkdirat(l, AT_FDCWD, SCARG(uap, path),
return do_sys_mkdirat(NULL, AT_FDCWD, path, mode, seg);
KASSERT(l != NULL || fdat == AT_FDCWD);
return do_sys_unlinkat(l, AT_FDCWD, SCARG(uap, path), AT_REMOVEDIR,
do_sys_chmodat(curlwp, AT_FDCWD, "/tmp", 01777, 0);
ATF_REQUIRE(faccessat(AT_FDCWD, abs_path, W_OK, 0) == 0);
ATF_REQUIRE(faccessat(AT_FDCWD, BASEFILE, F_OK, 0) == 0);
ATF_REQUIRE(faccessat(AT_FDCWD, FILEERR, F_OK, 0) == -1);
ATF_REQUIRE(fchmodat(AT_FDCWD, FILEERR, 0600, 0) == -1);
ATF_REQUIRE(fchmodat(AT_FDCWD, BASEFILE, 0600, 0) == 0);
ATF_REQUIRE(fchownat(AT_FDCWD, BASEFILE, uid, gid, 0) == 0);
ATF_REQUIRE(fchownat(AT_FDCWD, FILEERR, uid, gid, 0) == -1);
ATF_REQUIRE(fstatat(AT_FDCWD, FILEERR, &st, 0) == -1);
ATF_REQUIRE(fstatat(AT_FDCWD, BASEFILE, &st, 0) == 0);
ATF_REQUIRE(linkat(AT_FDCWD, FILEERR, AT_FDCWD, TARGET, 0) == -1);
ATF_REQUIRE(linkat(-1, FILE, AT_FDCWD, TARGET, 0) == -1);
ATF_REQUIRE(linkat(AT_FDCWD, FILE, -1, TARGET, 0) == -1);
ATF_REQUIRE(linkat(AT_FDCWD, FILE, AT_FDCWD, TARGET, 0) == 0);
ATF_REQUIRE(mkdirat(AT_FDCWD, SDIR, mode) != -1);
ATF_REQUIRE(mkdirat(AT_FDCWD, SDIRERR, mode) == -1);
ATF_REQUIRE(mkfifoat(AT_FDCWD, FIFO, mode) != -1);
ATF_REQUIRE(mkfifoat(AT_FDCWD, FIFOERR, mode) == -1);
ATF_REQUIRE((fd = mknodat(AT_FDCWD, FILE, mode, dev)) != -1);
ATF_REQUIRE((fd = mknodat(AT_FDCWD, FILEERR, mode, dev)) == -1);
ATF_REQUIRE((fd = openat(AT_FDCWD, FILEERR, O_RDONLY, 0)) == -1);
ATF_REQUIRE((fd = openat(AT_FDCWD, BASEFILE, O_RDONLY, 0)) != -1);
ATF_REQUIRE(readlinkat(AT_FDCWD, LINK, buf, sizeof(buf)) == -1);
len = readlinkat(AT_FDCWD, LINK, buf, sizeof(buf)-1);
ATF_REQUIRE(renameat(AT_FDCWD, FILE, AT_FDCWD, TARGET) == 0);
ATF_REQUIRE(renameat(AT_FDCWD, FILEERR, AT_FDCWD, TARGET) == -1);
ATF_REQUIRE(renameat(-1, FILE, AT_FDCWD, TARGET) == -1);
ATF_REQUIRE(renameat(AT_FDCWD, FILE, -1, TARGET) == -1);
ATF_REQUIRE(symlinkat(FILEERR, AT_FDCWD, LINK) == 0);
ATF_REQUIRE(symlinkat(RELFILE, AT_FDCWD, LINK) == 0);
ATF_REQUIRE(unlinkat(AT_FDCWD, DIR, 0) == -1);
ATF_REQUIRE(unlinkat(AT_FDCWD, DIR, AT_REMOVEDIR) == 0);
ATF_REQUIRE(unlinkat(AT_FDCWD, BASEFILE, 0) == 0);
ATF_REQUIRE(unlinkat(AT_FDCWD, FILEERR, 0) == -1);
RL(utimensat(AT_FDCWD, BASEFILE, tptr, 0));
ATF_CHECK_ERRNO(ENOENT, utimensat(AT_FDCWD, FILEERR, tptr, 0) == -1);
RL(openat(AT_FDCWD, "file", O_RDWR));