]> sourceware.org Git - glibc.git/commitdiff
io: Use struct statx and xstatx in tests
authorFlorian Weimer <fweimer@redhat.com>
Fri, 16 Aug 2024 14:05:20 +0000 (16:05 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Fri, 16 Aug 2024 14:05:20 +0000 (16:05 +0200)
This avoids the need to define struct_statx to an appropriate
struct stat type variant because struct statx does not change
based on time/file offset flags.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
14 files changed:
io/tst-futimens-time64.c
io/tst-futimens.c
io/tst-futimes-time64.c
io/tst-futimes.c
io/tst-futimesat-time64.c
io/tst-futimesat.c
io/tst-lutimes-time64.c
io/tst-lutimes.c
io/tst-utime-time64.c
io/tst-utime.c
io/tst-utimensat-time64.c
io/tst-utimensat.c
io/tst-utimes-time64.c
io/tst-utimes.c

index 88fcb38489b160dee9203835ed655a2ad751441d..71204a6166eaba565d3c8ecd3de80076ee3baa07 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-futimens.c"
index 6204befedd869bb66dde984a2225ba3f4b541eef..075ca42b9378d98fe58f7ccc8ed82a8b1dc5198f 100644 (file)
 
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_futimens_helper (const char *file, int fd, const struct timespec *ts)
 {
   int result = futimens (fd, ts);
   TEST_VERIFY_EXIT (result == 0);
 
-  struct_stat st;
-  xfstat (fd, &st);
+  struct statx st;
+  xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
 
   /* Check if seconds for atime match */
-  TEST_COMPARE (st.st_atime, ts[0].tv_sec);
+  TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec);
 
   /* Check if seconds for mtime match */
-  TEST_COMPARE (st.st_mtime, ts[1].tv_sec);
+  TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec);
 
   return 0;
 }
index d489c265d196419620e1838d310847b02e8b8c67..eeb4bed7c4f5fb12bd2f30509a44987649feaf27 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-futimes.c"
index d21acf6a24715a104e915b4822b8b78dc3893d0c..612fe460cf505547f7cee66f8fe49e7170a6ba33 100644 (file)
 
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_futimens_helper (const char *file, int fd, const struct timeval *tv)
 {
   int r = futimes (fd, tv);
   TEST_VERIFY_EXIT (r == 0);
 
-  struct_stat st;
-  xfstat (fd, &st);
+  struct statx st;
+  xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
 
   /* Check if seconds for atime match */
-  TEST_COMPARE (st.st_atime, tv[0].tv_sec);
+  TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec);
 
   /* Check if seconds for mtime match */
-  TEST_COMPARE (st.st_mtime, tv[1].tv_sec);
+  TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec);
 
   return 0;
 }
index f6c0500eefb9c98b8b4e648013a2ecc159a6f3bc..15853175796e59ddf20c3bbbea7e9ab42f3f8d41 100644 (file)
@@ -1,4 +1 @@
-#define struct_stat  struct stat
-#define fstat        fstat
-#define fstatat      fstatat
 #include "io/tst-futimesat.c"
index 67a8551bebf23190b3596e6c8535fa8e3aceb49b..feae4e7aa76ddee7be7a85b86a7a76ffcabd6d4a 100644 (file)
 #include <support/temp_file.h>
 #include <support/xunistd.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-# define fstat       fstat64
-# define fstatat     fstatat64
-#endif
-
 static int dir_fd;
 
 static void
@@ -118,19 +112,15 @@ do_test (void)
   xwrite (fd, "hello", 5);
   puts ("file created");
 
-  struct_stat st1;
-  if (fstat (fd, &st1) != 0)
-    {
-      puts ("fstat64 failed");
-      return 1;
-    }
+  struct statx st1;
+  xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st1);
 
   close (fd);
 
   struct timeval tv[2];
-  tv[0].tv_sec = st1.st_atime + 1;
+  tv[0].tv_sec = st1.stx_atime.tv_sec + 1;
   tv[0].tv_usec = 0;
-  tv[1].tv_sec = st1.st_mtime + 1;
+  tv[1].tv_sec = st1.stx_mtime.tv_sec + 1;
   tv[1].tv_usec = 0;
   if (futimesat (dir_fd, "some-file", tv) != 0)
     {
@@ -138,16 +128,12 @@ do_test (void)
       return 1;
     }
 
-  struct_stat st2;
-  if (fstatat (dir_fd, "some-file", &st2, 0) != 0)
-    {
-      puts ("fstatat64 failed");
-      return 1;
-    }
+  struct statx st2;
+  xstatx (dir_fd, "some-file", 0, STATX_BASIC_STATS, &st2);
 
-  if (st2.st_mtime != tv[1].tv_sec
+  if (st2.stx_mtime.tv_sec != tv[1].tv_sec
 #ifdef _STATBUF_ST_NSEC
-      || st2.st_mtim.tv_nsec != 0
+      || st2.stx_mtime.tv_nsec != 0
 #endif
       )
     {
index 06caec0a91d91b6c2ec9a55ee0a88ce29278b116..c5bea965dabe6cd7ab536de4f991932b8d656f35 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-lutimes.c"
index edef5ab90e8681c7fbd776b379991a34fe91544b..78bcc58291fdcdc85ad033a06e748e068bf27c71 100644 (file)
 
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_lutimes_helper (const char *testfile, int fd, const char *testlink,
                      const struct timeval *tv)
 {
-  struct_stat stfile_orig;
-  xlstat (testfile, &stfile_orig);
+  struct statx stfile_orig;
+  xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+          &stfile_orig);
 
   TEST_VERIFY_EXIT (lutimes (testlink, tv) == 0);
 
-  struct_stat stlink;
-  xlstat (testlink, &stlink);
+  struct statx stlink;
+  xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stlink);
 
-  TEST_COMPARE (stlink.st_atime, tv[0].tv_sec);
-  TEST_COMPARE (stlink.st_mtime, tv[1].tv_sec);
+  TEST_COMPARE (stlink.stx_atime.tv_sec, tv[0].tv_sec);
+  TEST_COMPARE (stlink.stx_mtime.tv_sec, tv[1].tv_sec);
 
   /* Check if the timestamp from original file is not changed.  */
-  struct_stat stfile;
-  xlstat (testfile, &stfile);
+  struct statx stfile;
+  xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stfile);
 
-  TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime);
-  TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime);
+  TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec);
+  TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec);
 
   return 0;
 }
index eb62f591265648967781674f3a0af8fc3a1d1363..8894592a1570a36689a737375b29ca0f910346d8 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-utime.c"
index e2e6dcd04cebb7fcb6ea8ec2b4ea792b66522997..f32935828923a47fca2385a9206a28ee84c1cc56 100644 (file)
 #include <utime.h>
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_utime_helper (const char *file, int fd, const struct utimbuf *ut)
 {
   int result = utime (file, ut);
   TEST_VERIFY_EXIT (result == 0);
 
-  struct_stat st;
-  xfstat (fd, &st);
+  struct statx st;
+  xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
 
   /* Check if seconds for actime match */
-  TEST_COMPARE (st.st_atime, ut->actime);
+  TEST_COMPARE (st.stx_atime.tv_sec, ut->actime);
 
   /* Check if seconds for modtime match */
-  TEST_COMPARE (st.st_mtime, ut->modtime);
+  TEST_COMPARE (st.stx_mtime.tv_sec, ut->modtime);
 
   return 0;
 }
index 7ac7d8df1d48f0a0c73339a1becfe3c25d4dd083..5d60fce8818f754538dffbf85ab1495e4f36a850 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-utimensat.c"
index 3d9a72c4719cc6c966cd2bece5354ff017e860e0..2a756d7b07b6b07ff8cf5e5dcba387de4004996f 100644 (file)
 #include <sys/stat.h>
 #include <sys/time.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_utimesat_helper (const char *testfile, int fd, const char *testlink,
                       const struct timespec *ts)
@@ -33,35 +29,38 @@ test_utimesat_helper (const char *testfile, int fd, const char *testlink,
   {
     TEST_VERIFY_EXIT (utimensat (fd, testfile, ts, 0) == 0);
 
-    struct_stat st;
-    xfstat (fd, &st);
+    struct statx st;
+    xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
 
     /* Check if seconds for atime match */
-    TEST_COMPARE (st.st_atime, ts[0].tv_sec);
+    TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec);
 
     /* Check if seconds for mtime match */
-    TEST_COMPARE (st.st_mtime, ts[1].tv_sec);
+    TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec);
   }
 
   {
-    struct_stat stfile_orig;
-    xlstat (testfile, &stfile_orig);
+    struct statx stfile_orig;
+    xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+           &stfile_orig);
 
     TEST_VERIFY_EXIT (utimensat (0 /* ignored  */, testlink, ts,
                                 AT_SYMLINK_NOFOLLOW)
                       == 0);
-    struct_stat stlink;
-    xlstat (testlink, &stlink);
+    struct statx stlink;
+    xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+           &stlink);
 
-    TEST_COMPARE (stlink.st_atime, ts[0].tv_sec);
-    TEST_COMPARE (stlink.st_mtime, ts[1].tv_sec);
+    TEST_COMPARE (stlink.stx_atime.tv_sec, ts[0].tv_sec);
+    TEST_COMPARE (stlink.stx_mtime.tv_sec, ts[1].tv_sec);
 
     /* Check if the timestamp from original file is not changed.  */
-    struct_stat stfile;
-    xlstat (testfile, &stfile);
+    struct statx stfile;
+    xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS,
+           &stfile);
 
-    TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime);
-    TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime);
+    TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec);
+    TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec);
   }
 
   return 0;
index 234ec025410320173ea829c7ca7e2d98be7ddd1b..026ef5f78dd4616c3129851cad1c1cd7e0c1513b 100644 (file)
@@ -1,2 +1 @@
-#define struct_stat struct stat
 #include "tst-utimes.c"
index 8edcfabebfbd978de91796383c3fc139c669648e..6cd436c5a0f94d84aed738f6908622b538977d4b 100644 (file)
 
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <time.h>
 
-#ifndef struct_stat
-# define struct_stat struct stat64
-#endif
-
 static int
 test_utimes_helper (const char *file, int fd, const struct timeval *tv)
 {
   int result = utimes (file, tv);
   TEST_VERIFY_EXIT (result == 0);
 
-  struct_stat st;
-  xfstat (fd, &st);
+  struct statx st;
+  xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st);
 
   /* Check if seconds for atime match */
-  TEST_COMPARE (st.st_atime, tv[0].tv_sec);
+  TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec);
 
   /* Check if seconds for mtime match */
-  TEST_COMPARE (st.st_mtime, tv[1].tv_sec);
+  TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec);
 
   return 0;
 }
This page took 0.058714 seconds and 5 git commands to generate.