about summary refs log tree commit diff
path: root/io/tst-stat.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-03-29 14:40:30 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-03-31 17:20:14 -0300
commitbfddda2570331da2ae4387b530456e6c4e230257 (patch)
tree63bd920593b38f7f65e282eb1e6ab1c9143bedd2 /io/tst-stat.c
parent18f0afa8485e8cd6434d118cb841d78d897230b6 (diff)
downloadglibc-bfddda2570331da2ae4387b530456e6c4e230257.tar.gz
glibc-bfddda2570331da2ae4387b530456e6c4e230257.tar.xz
glibc-bfddda2570331da2ae4387b530456e6c4e230257.zip
io: Check at runtime if timestamp supports nanoseconds
Now that non-LFS stat function is implemented on to on LFS, it will
use statx when available.  It allows to check for nanosecond timestamp
if the kernel supports __NR_statx.

Checked on s390-linux-gnu with 4.12.14 kernel.
Diffstat (limited to 'io/tst-stat.c')
-rw-r--r--io/tst-stat.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/io/tst-stat.c b/io/tst-stat.c
index 397d480ecc..22b89bb3e7 100644
--- a/io/tst-stat.c
+++ b/io/tst-stat.c
@@ -25,6 +25,7 @@
 #include <support/xunistd.h>
 #include <sys/stat.h>
 #include <sys/sysmacros.h>
+#include <stdio.h>
 #include <unistd.h>
 
 static void
@@ -73,6 +74,10 @@ do_test (void)
 
   test_t tests[] = { stat_check, lstat_check, fstat_check, fstatat_check };
 
+  bool check_ns = support_stat_nanoseconds (path);
+  if (!check_ns)
+    printf ("warning: timestamp with nanoseconds not supportted\n");
+
   for (int i = 0; i < array_length (tests); i++)
     {
       struct stat st;
@@ -92,7 +97,7 @@ do_test (void)
 
       TEST_COMPARE (stx.stx_ctime.tv_sec, st.st_ctim.tv_sec);
       TEST_COMPARE (stx.stx_mtime.tv_sec, st.st_mtim.tv_sec);
-      if (support_stat_nanoseconds ())
+      if (check_ns)
 	{
 	  TEST_COMPARE (stx.stx_ctime.tv_nsec, st.st_ctim.tv_nsec);
 	  TEST_COMPARE (stx.stx_mtime.tv_nsec, st.st_mtim.tv_nsec);