From nobody Wed Aug 19 08:11:35 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hPzmt0lFZz6plPQ for ; Wed, 19 Aug 2026 08:11:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hPzmr61XFz3Pjc for ; Wed, 19 Aug 2026 08:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787127101; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gv27RIjp2APtkBUSmHuv+8qH2co6yzMauEJRUZhqYys=; b=l9fPVGcI7dx7VcJSE6y5BBLTeUQHuS8lttk9rsvhkCfLsRMJ1iJBpXwuCaCoJRnK9rRM0W 3OwaHD6mMKvEBZzbHGik4LaD5zyL2QA0rvt/bRz0yLY4z2kcwyjsznlqBPTerSnRR8kNEt 5W8JnjbbYT3VYfaFB8DtZp5mxwUNt1y3R3p2r3ENLsGsoRIFZZgW5zD7YeSXsO5ZEqQD9i LWl7QNNGvV9fmelS6f51uXaAdIGWj9iECkRZbdttGLjAkKBTEITUaWppZn0TW7RSRU/5nP H7QGtYwtewZ1bMD+8T0odSAJqoErPSJO9JN/4g8l31Vcuu5FnFuLeDmnpf5/FA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787127101; a=rsa-sha256; cv=none; b=CR3oCAiKE0OTcZRblGGzEBSjvVR9U0Itp2ruc9uVmmZ4qK2vLPXwlW3ZskTU4qfH+VuPoR fHMpUVcM8dSYrEsWEE/jP6kTTMJAYXfXGsfE+Q6YI5yIncJlfGLSzp8sCHXVNAW1EQMPSq PgN2aZZDZ7Hey3P+ocETDW2ZG/3V+tDQSZoTtKZUn3UcF6bzE/jttI8xJ64EL+lbF4LMaz PtiUG8for6088bsSyF/rD1Re8SAimSXtNXm8qJg60ZuOO3bOVi5mqQAYTzw4V70dhFhTSI bMYfXf0Rx/BG36xcapdcdDlndNu0/B9OxYXU/quok8ppragwxHpSytqfqDF3IQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787127101; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gv27RIjp2APtkBUSmHuv+8qH2co6yzMauEJRUZhqYys=; b=pbfd2cb46QxIzlY2A8qaIvvkalMuJ+gfQoww9PImc2Q6dyc5Wzn3DdbUx18rGPvTBEaqIb x56EglFHwPlr5Cq2sqOdqQutKxaW3sUHnZ/h76Oz3nnxZqcoIUIhPwzLi5bk+F4AgKRInr XmIEi5jymIVFkQKI5u8a+/OyRcmJYDZrJLgWXev001/HAi20uwsGzEbRqHCUxmAH2yJxKk hsBGbSAspDq/1EjuIrAaEtQL7alFqX1PakbC5JUZJyyZUz3G9oW+bj/u8ITIyL0XRO+z7l 2OQBbYOzHnpLpHS5Qo9f2kI179+lIO5XD7fea1TRquSWctlvOAekXXATk7Dkzg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hPzmr1vwqz6yq for ; Wed, 19 Aug 2026 08:11:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1d6c8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 19 Aug 2026 08:11:35 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Enji Cooper Subject: git: 8109a5c0fba0 - main - contrib/netbsd-tests: lib/libc/c063: sync with NetBSD List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ngie X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8109a5c0fba0d015354a69b40e6682d5e8c0f638 Auto-Submitted: auto-generated Date: Wed, 19 Aug 2026 08:11:35 +0000 Message-Id: <6a856537.1d6c8.7cc296d3@gitrepo.freebsd.org> The branch main has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=8109a5c0fba0d015354a69b40e6682d5e8c0f638 commit 8109a5c0fba0d015354a69b40e6682d5e8c0f638 Author: Enji Cooper AuthorDate: 2026-08-19 07:57:27 +0000 Commit: Enji Cooper CommitDate: 2026-08-19 08:10:20 +0000 contrib/netbsd-tests: lib/libc/c063: sync with NetBSD This change syncs the lib/libc/c063 NetBSD tests with FreeBSD. This does two things: - Addresses bogus tautologically true assertions flagged by clang and gcc with ATF 0.22+ [1]. - Brings in some new test coverage. Obtained from: NetBSD (date tag: `20260818UTC`) MFC after: 2 weeks 1. https://github.com/freebsd/atf/pull/72 --- contrib/netbsd-tests/lib/libc/c063/t_faccessat.c | 73 ++++++++++- contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c | 17 ++- contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c | 31 ++++- contrib/netbsd-tests/lib/libc/c063/t_utimensat.c | 148 ++++++++++++++--------- 4 files changed, 198 insertions(+), 71 deletions(-) diff --git a/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c b/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c index 5e6829f7ea45..7fb638db6b62 100644 --- a/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c +++ b/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_faccessat.c,v 1.3 2017/01/10 15:13:56 christos Exp $ */ +/* $NetBSD: t_faccessat.c,v 1.5 2024/07/07 14:29:48 christos Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: t_faccessat.c,v 1.3 2017/01/10 15:13:56 christos Exp $"); +__RCSID("$NetBSD: t_faccessat.c,v 1.5 2024/07/07 14:29:48 christos Exp $"); #include #include @@ -72,7 +72,7 @@ ATF_TC(faccessat_fdcwd); ATF_TC_HEAD(faccessat_fdcwd, tc) { atf_tc_set_md_var(tc, "descr", - "See that faccessat works with fd as AT_FDCWD"); + "See that faccessat works with fd as AT_FDCWD"); } ATF_TC_BODY(faccessat_fdcwd, tc) { @@ -90,7 +90,7 @@ ATF_TC(faccessat_fdcwderr); ATF_TC_HEAD(faccessat_fdcwderr, tc) { atf_tc_set_md_var(tc, "descr", - "See that faccessat fails with fd as AT_FDCWD and bad path"); + "See that faccessat fails with fd as AT_FDCWD and bad path"); } ATF_TC_BODY(faccessat_fdcwderr, tc) { @@ -171,6 +171,68 @@ ATF_TC_BODY(faccessat_fdlink, tc) ATF_REQUIRE(close(dfd) == 0); } +ATF_TC(faccessat_abs); +ATF_TC_HEAD(faccessat_abs, tc) +{ + atf_tc_set_md_var(tc, "descr", "See that faccessat works with invalid " + "fd when absolute path is provided."); +} +ATF_TC_BODY(faccessat_abs, tc) +{ + int fd; + char cwd[MAXPATHLEN]; + char abs_path[MAXPATHLEN * 2]; + + ATF_REQUIRE(mkdir(DIR, 0755) == 0); + ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1); + ATF_REQUIRE(close(fd) == 0); + + ATF_REQUIRE(getcwd(cwd, MAXPATHLEN)); + snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, FILE); + ATF_REQUIRE(faccessat(-1, abs_path, W_OK, 0) == 0); + +} + +ATF_TC(faccessat_abs_fddir); +ATF_TC_HEAD(faccessat_abs_fddir, tc) +{ + atf_tc_set_md_var(tc, "descr", "See that faccessat works with " + "fd of directory when absolute path is provided."); +} +ATF_TC_BODY(faccessat_abs_fddir, tc) +{ + int dfd; + char cwd[MAXPATHLEN]; + char abs_path[MAXPATHLEN * 2]; + + ATF_REQUIRE(mkdir(DIR, 0755) == 0); + ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1); + ATF_REQUIRE(close(dfd) == 0); + + ATF_REQUIRE(getcwd(cwd, MAXPATHLEN)); + snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, DIR); + ATF_REQUIRE(faccessat(dfd, abs_path, W_OK, 0) == 0); + +} + +ATF_TC(faccessat_abs_fdcwd); +ATF_TC_HEAD(faccessat_abs_fdcwd, tc) +{ + atf_tc_set_md_var(tc, "descr", "See that faccessat works with fd " + "of current directory when absolute path is provided."); +} +ATF_TC_BODY(faccessat_abs_fdcwd, tc) +{ + char cwd[MAXPATHLEN]; + char abs_path[MAXPATHLEN * 2]; + + ATF_REQUIRE(mkdir(DIR, 0755) == 0); + + ATF_REQUIRE(getcwd(cwd, MAXPATHLEN)); + snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, DIR); + ATF_REQUIRE(faccessat(AT_FDCWD, abs_path, W_OK, 0) == 0); +} + ATF_TP_ADD_TCS(tp) { @@ -181,6 +243,9 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, faccessat_fderr2); ATF_TP_ADD_TC(tp, faccessat_fderr3); ATF_TP_ADD_TC(tp, faccessat_fdlink); + ATF_TP_ADD_TC(tp, faccessat_abs); + ATF_TP_ADD_TC(tp, faccessat_abs_fddir); + ATF_TP_ADD_TC(tp, faccessat_abs_fdcwd); return atf_no_error(); } diff --git a/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c b/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c index a7bb6831b86c..4dd015542735 100644 --- a/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c +++ b/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_fchmodat.c,v 1.3 2017/01/10 15:13:56 christos Exp $ */ +/* $NetBSD: t_fchmodat.c,v 1.7 2024/07/10 20:44:06 rillig Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: t_fchmodat.c,v 1.3 2017/01/10 15:13:56 christos Exp $"); +__RCSID("$NetBSD: t_fchmodat.c,v 1.7 2024/07/10 20:44:06 rillig Exp $"); #include #include @@ -49,6 +49,11 @@ __RCSID("$NetBSD: t_fchmodat.c,v 1.3 2017/01/10 15:13:56 christos Exp $"); #define BASELINK "symlink" #define FILEERR "dir/fchmodaterr" +#define modecheck(a, b) \ + ATF_REQUIRE_MSG(((a) & ALLPERMS) == (b), \ + "Incorrect mode found %#o != expected %#o", \ + ((a) & ALLPERMS), (b)); + ATF_TC(fchmodat_fd); ATF_TC_HEAD(fchmodat_fd, tc) { @@ -69,7 +74,7 @@ ATF_TC_BODY(fchmodat_fd, tc) ATF_REQUIRE(close(dfd) == 0); ATF_REQUIRE(stat(FILE, &st) == 0); - ATF_REQUIRE(st.st_mode = 0600); + modecheck(st.st_mode, 0600); } ATF_TC(fchmodat_fdcwd); @@ -91,7 +96,7 @@ ATF_TC_BODY(fchmodat_fdcwd, tc) ATF_REQUIRE(fchmodat(AT_FDCWD, BASEFILE, 0600, 0) == 0); ATF_REQUIRE(stat(BASEFILE, &st) == 0); - ATF_REQUIRE(st.st_mode = 0600); + modecheck(st.st_mode, 0600); } ATF_TC(fchmodat_fdcwderr); @@ -173,14 +178,14 @@ ATF_TC_BODY(fchmodat_fdlink, tc) ATF_REQUIRE((dfdlink = open(DIR, O_RDONLY, 0)) != -1); ATF_REQUIRE(fchmodat(dfdlink, BASELINK, 0600, 0) == -1); - ATF_REQUIRE(errno = ENOENT); + ATF_REQUIRE(errno == ENOENT); ATF_REQUIRE(fchmodat(dfdlink, BASELINK, 0600, AT_SYMLINK_NOFOLLOW) == 0); ATF_REQUIRE(close(dfdlink) == 0); ATF_REQUIRE(lstat(LINK, &st) == 0); - ATF_REQUIRE(st.st_mode = 0600); + modecheck(st.st_mode, 0600); } ATF_TP_ADD_TCS(tp) diff --git a/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c b/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c index 4f91afd979a7..3f6c17d5e141 100644 --- a/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c +++ b/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_mkfifoat.c,v 1.4 2017/01/14 20:55:26 christos Exp $ */ +/* $NetBSD: t_mkfifoat.c,v 1.5 2019/06/20 03:31:53 kamil Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: t_mkfifoat.c,v 1.4 2017/01/14 20:55:26 christos Exp $"); +__RCSID("$NetBSD: t_mkfifoat.c,v 1.5 2019/06/20 03:31:53 kamil Exp $"); #include #include @@ -108,6 +108,32 @@ ATF_TC_BODY(mkfifoat_fderr, tc) ATF_REQUIRE(mkfifoat(-1, FIFO, mode) == -1); } +ATF_TC(mknodat_s_ififo); +ATF_TC_HEAD(mknodat_s_ififo, tc) +{ + atf_tc_set_md_var(tc, "descr", "Test mknodat(2) with S_IFIFO"); +} + +ATF_TC_BODY(mknodat_s_ififo, tc) +{ + struct stat st; + int dfd; + mode_t mode = S_IFIFO | 0600; + + (void)memset(&st, 0, sizeof(struct stat)); + + ATF_REQUIRE(mkdir(DIR, 0755) == 0); + ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1); + ATF_REQUIRE(mknodat(dfd, BASEFIFO, mode, 0) != -1); + ATF_REQUIRE(access(FIFO, F_OK) == 0); + ATF_REQUIRE(stat(FIFO, &st) == 0); + + if (S_ISFIFO(st.st_mode) == 0) + atf_tc_fail("invalid mode from mknodat(2) with S_IFIFO"); + + (void)close(dfd); +} + ATF_TP_ADD_TCS(tp) { @@ -115,6 +141,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, mkfifoat_fdcwd); ATF_TP_ADD_TC(tp, mkfifoat_fdcwderr); ATF_TP_ADD_TC(tp, mkfifoat_fderr); + ATF_TP_ADD_TC(tp, mknodat_s_ififo); return atf_no_error(); } diff --git a/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c b/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c index 682c2df06974..8534647b0e32 100644 --- a/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c +++ b/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_utimensat.c,v 1.6 2017/01/10 15:13:56 christos Exp $ */ +/* $NetBSD: t_utimensat.c,v 1.9 2024/08/10 15:20:22 riastradh Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,11 +29,14 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: t_utimensat.c,v 1.6 2017/01/10 15:13:56 christos Exp $"); +__RCSID("$NetBSD: t_utimensat.c,v 1.9 2024/08/10 15:20:22 riastradh Exp $"); #include + #include +#include #include + #include #include #include @@ -43,6 +46,8 @@ __RCSID("$NetBSD: t_utimensat.c,v 1.6 2017/01/10 15:13:56 christos Exp $"); #include #include +#include "h_macros.h" + #define DIR "dir" #define FILE "dir/utimensat" #define BASEFILE "utimensat" @@ -50,11 +55,37 @@ __RCSID("$NetBSD: t_utimensat.c,v 1.6 2017/01/10 15:13:56 christos Exp $"); #define BASELINK "symlink" #define FILEERR "dir/symlink" -const struct timespec tptr[] = { +static const struct timespec tptr[] = { { 0x12345678, 987654321 }, { 0x15263748, 123456789 }, }; +static void +checkstattime(const struct stat *st, const struct statvfs *fs) +{ + +/* Begin FreeBSD: upstream conditional. */ +#ifdef ST_NOATIME + if ((fs->f_flag & ST_NOATIME) == 0) { + ATF_CHECK_EQ_MSG(st->st_atimespec.tv_sec, tptr[0].tv_sec, + "st->st_atimespec.tv_sec=%lld tptr[0].tv_sec=%lld", + (long long)st->st_atimespec.tv_sec, + (long long)tptr[0].tv_sec); + ATF_CHECK_EQ_MSG(st->st_atimespec.tv_nsec, tptr[0].tv_nsec, + "st->st_atimespec.tv_nsec=%ld tptr[0].tv_nsec=%ld", + (long)st->st_atimespec.tv_nsec, (long)tptr[0].tv_nsec); + } +#endif +/* End FreeBSD */ + + ATF_CHECK_EQ_MSG(st->st_mtimespec.tv_sec, tptr[1].tv_sec, + "st->st_mtimespec.tv_sec=%lld tptr[1].tv_sec=%lld", + (long long)st->st_mtimespec.tv_sec, (long long)tptr[1].tv_sec); + ATF_CHECK_EQ_MSG(st->st_mtimespec.tv_nsec, tptr[1].tv_nsec, + "st->st_mtimespec.tv_nsec=%ld tptr[1].tv_nsec=%ld", + (long)st->st_mtimespec.tv_nsec, (long)tptr[1].tv_nsec); +} + ATF_TC(utimensat_fd); ATF_TC_HEAD(utimensat_fd, tc) { @@ -65,78 +96,78 @@ ATF_TC_BODY(utimensat_fd, tc) int dfd; int fd; struct stat st; + struct statvfs fs; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1); - ATF_REQUIRE(close(fd) == 0); + RL(mkdir(DIR, 0755)); + RL(fd = open(FILE, O_CREAT|O_RDWR, 0644)); + RL(close(fd)); - ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1); - ATF_REQUIRE(utimensat(dfd, BASEFILE, tptr, 0) == 0); - ATF_REQUIRE(close(dfd) == 0); + RL(dfd = open(DIR, O_RDONLY, 0)); + RL(utimensat(dfd, BASEFILE, tptr, 0)); + RL(close(dfd)); - ATF_REQUIRE(stat(FILE, &st) == 0); - ATF_REQUIRE(st.st_atimespec.tv_sec == tptr[0].tv_sec); - ATF_REQUIRE(st.st_atimespec.tv_nsec == tptr[0].tv_nsec); - ATF_REQUIRE(st.st_mtimespec.tv_sec == tptr[1].tv_sec); - ATF_REQUIRE(st.st_mtimespec.tv_nsec == tptr[1].tv_nsec); + RL(stat(FILE, &st)); + RL(statvfs(FILE, &fs)); + checkstattime(&st, &fs); } ATF_TC(utimensat_fdcwd); ATF_TC_HEAD(utimensat_fdcwd, tc) { - atf_tc_set_md_var(tc, "descr", - "See that utimensat works with fd as AT_FDCWD"); + atf_tc_set_md_var(tc, "descr", + "See that utimensat works with fd as AT_FDCWD"); } ATF_TC_BODY(utimensat_fdcwd, tc) { int fd; struct stat st; + struct statvfs fs; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1); - ATF_REQUIRE(close(fd) == 0); + RL(mkdir(DIR, 0755)); + RL(fd = open(FILE, O_CREAT|O_RDWR, 0644)); + RL(close(fd)); - ATF_REQUIRE(chdir(DIR) == 0); - ATF_REQUIRE(utimensat(AT_FDCWD, BASEFILE, tptr, 0) == 0); + RL(chdir(DIR)); + RL(utimensat(AT_FDCWD, BASEFILE, tptr, 0)); - ATF_REQUIRE(stat(BASEFILE, &st) == 0); - ATF_REQUIRE(st.st_atimespec.tv_sec == tptr[0].tv_sec); - ATF_REQUIRE(st.st_atimespec.tv_nsec == tptr[0].tv_nsec); - ATF_REQUIRE(st.st_mtimespec.tv_sec == tptr[1].tv_sec); - ATF_REQUIRE(st.st_mtimespec.tv_nsec == tptr[1].tv_nsec); + RL(stat(BASEFILE, &st)); + RL(statvfs(BASEFILE, &fs)); + checkstattime(&st, &fs); } ATF_TC(utimensat_fdcwderr); ATF_TC_HEAD(utimensat_fdcwderr, tc) { - atf_tc_set_md_var(tc, "descr", - "See that utimensat fails with fd as AT_FDCWD and bad path"); + atf_tc_set_md_var(tc, "descr", + "See that utimensat fails with fd as AT_FDCWD and bad path"); } ATF_TC_BODY(utimensat_fdcwderr, tc) { - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE(utimensat(AT_FDCWD, FILEERR, tptr, 0) == -1); + RL(mkdir(DIR, 0755)); + ATF_CHECK_ERRNO(ENOENT, utimensat(AT_FDCWD, FILEERR, tptr, 0) == -1); } ATF_TC(utimensat_fderr1); ATF_TC_HEAD(utimensat_fderr1, tc) { - atf_tc_set_md_var(tc, "descr", "See that utimensat fail with bad path"); + atf_tc_set_md_var(tc, "descr", + "See that utimensat fail with bad path"); } ATF_TC_BODY(utimensat_fderr1, tc) { int dfd; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1); - ATF_REQUIRE(utimensat(dfd, FILEERR, tptr, 0) == -1); - ATF_REQUIRE(close(dfd) == 0); + RL(mkdir(DIR, 0755)); + RL(dfd = open(DIR, O_RDONLY, 0)); + ATF_CHECK_ERRNO(ENOENT, utimensat(dfd, FILEERR, tptr, 0) == -1); + RL(close(dfd)); } ATF_TC(utimensat_fderr2); ATF_TC_HEAD(utimensat_fderr2, tc) { - atf_tc_set_md_var(tc, "descr", "See that utimensat fails with bad fdat"); + atf_tc_set_md_var(tc, "descr", + "See that utimensat fails with bad fdat"); } ATF_TC_BODY(utimensat_fderr2, tc) { @@ -144,29 +175,30 @@ ATF_TC_BODY(utimensat_fderr2, tc) int fd; char cwd[MAXPATHLEN]; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1); - ATF_REQUIRE(close(fd) == 0); + RL(mkdir(DIR, 0755)); + RL(fd = open(FILE, O_CREAT|O_RDWR, 0644)); + RL(close(fd)); - ATF_REQUIRE((dfd = open(getcwd(cwd, MAXPATHLEN), O_RDONLY, 0)) != -1); - ATF_REQUIRE(utimensat(dfd, BASEFILE, tptr, 0) == -1); - ATF_REQUIRE(close(dfd) == 0); + RL(dfd = open(getcwd(cwd, MAXPATHLEN), O_RDONLY, 0)); + ATF_CHECK_ERRNO(ENOENT, utimensat(dfd, BASEFILE, tptr, 0) == -1); + RL(close(dfd)); } ATF_TC(utimensat_fderr3); ATF_TC_HEAD(utimensat_fderr3, tc) { - atf_tc_set_md_var(tc, "descr", "See that utimensat fails with fd as -1"); + atf_tc_set_md_var(tc, "descr", + "See that utimensat fails with fd as -1"); } ATF_TC_BODY(utimensat_fderr3, tc) { int fd; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1); - ATF_REQUIRE(close(fd) == 0); + RL(mkdir(DIR, 0755)); + RL(fd = open(FILE, O_CREAT|O_RDWR, 0644)); + RL(close(fd)); - ATF_REQUIRE(utimensat(-1, FILE, tptr, 0) == -1); + ATF_CHECK_ERRNO(EBADF, utimensat(-1, FILE, tptr, 0) == -1); } ATF_TC(utimensat_fdlink); @@ -178,24 +210,22 @@ ATF_TC_BODY(utimensat_fdlink, tc) { int dfd; struct stat st; + struct statvfs fs; - ATF_REQUIRE(mkdir(DIR, 0755) == 0); - ATF_REQUIRE(symlink(FILE, LINK) == 0); /* NB: FILE does not exists */ + RL(mkdir(DIR, 0755)); + RL(symlink(FILE, LINK)); /* NB: FILE does not exists */ - ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1); + RL(dfd = open(DIR, O_RDONLY, 0)); - ATF_REQUIRE(utimensat(dfd, BASELINK, tptr, 0) == -1); - ATF_REQUIRE(errno = ENOENT); + ATF_CHECK_ERRNO(ENOENT, utimensat(dfd, BASELINK, tptr, 0) == -1); - ATF_REQUIRE(utimensat(dfd, BASELINK, tptr, AT_SYMLINK_NOFOLLOW) == 0); + RL(utimensat(dfd, BASELINK, tptr, AT_SYMLINK_NOFOLLOW)); - ATF_REQUIRE(close(dfd) == 0); + RL(close(dfd)); - ATF_REQUIRE(lstat(LINK, &st) == 0); - ATF_REQUIRE(st.st_atimespec.tv_sec == tptr[0].tv_sec); - ATF_REQUIRE(st.st_atimespec.tv_nsec == tptr[0].tv_nsec); - ATF_REQUIRE(st.st_mtimespec.tv_sec == tptr[1].tv_sec); - ATF_REQUIRE(st.st_mtimespec.tv_nsec == tptr[1].tv_nsec); + RL(lstat(LINK, &st)); + RL(statvfs(DIR, &fs)); /* XXX should do lstatvfs(LINK, &fs) */ + checkstattime(&st, &fs); } ATF_TP_ADD_TCS(tp)