From 52a5fe70a2c77935afe807fb6e904e512ddd894e Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Tue, 2 Mar 2021 17:06:02 -0300 Subject: Use 64 bit time_t stat internally For the legacy ABI with supports 32-bit time_t it calls the 64-bit time directly, since the LFS symbols calls the 64-bit time_t ones internally. Checked on i686-linux-gnu and x86_64-linux-gnu. Reviewed-by: Lukasz Majewski --- io/Makefile | 4 ++-- io/file_change_detection.c | 10 +++++----- io/getdirname.c | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'io') diff --git a/io/Makefile b/io/Makefile index ba8bd37355..1a16990205 100644 --- a/io/Makefile +++ b/io/Makefile @@ -69,7 +69,7 @@ tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \ tst-posix_fallocate tst-posix_fallocate64 \ tst-fts tst-fts-lfs tst-open-tmpfile \ tst-copy_file_range tst-getcwd-abspath tst-lockf \ - tst-ftw-lnk tst-file_change_detection tst-lchmod \ + tst-ftw-lnk tst-lchmod \ tst-ftw-bz26353 tst-stat tst-stat-lfs \ tst-utime \ tst-utimes \ @@ -90,7 +90,7 @@ tests-time64 := \ tst-utimes-time64 \ # Likewise for statx, but we do not need static linking here. -tests-internal += tst-statx +tests-internal += tst-statx tst-file_change_detection tests-static += tst-statx ifeq ($(run-built-tests),yes) diff --git a/io/file_change_detection.c b/io/file_change_detection.c index 9871bc9166..fad0907223 100644 --- a/io/file_change_detection.c +++ b/io/file_change_detection.c @@ -44,7 +44,7 @@ libc_hidden_def (__file_is_unchanged) void __file_change_detection_for_stat (struct file_change_detection *file, - const struct stat64 *st) + const struct __stat64_t64 *st) { if (S_ISDIR (st->st_mode)) /* Treat as empty file. */ @@ -66,8 +66,8 @@ bool __file_change_detection_for_path (struct file_change_detection *file, const char *path) { - struct stat64 st; - if (__stat64 (path, &st) != 0) + struct __stat64_t64 st; + if (__stat64_time64 (path, &st) != 0) switch (errno) { case EACCES: @@ -104,8 +104,8 @@ __file_change_detection_for_fp (struct file_change_detection *file, } else { - struct stat64 st; - if (__fstat64 (__fileno (fp), &st) != 0) + struct __stat64_t64 st; + if (__fstat64_time64 (__fileno (fp), &st) != 0) /* If we already have a file descriptor, all errors are fatal. */ return false; else diff --git a/io/getdirname.c b/io/getdirname.c index 32b5ab4b6c..f29e910b37 100644 --- a/io/getdirname.c +++ b/io/getdirname.c @@ -28,12 +28,12 @@ char * get_current_dir_name (void) { char *pwd; - struct stat64 dotstat, pwdstat; + struct __stat64_t64 dotstat, pwdstat; pwd = getenv ("PWD"); if (pwd != NULL - && __stat64 (".", &dotstat) == 0 - && __stat64 (pwd, &pwdstat) == 0 + && __stat64_time64 (".", &dotstat) == 0 + && __stat64_time64 (pwd, &pwdstat) == 0 && pwdstat.st_dev == dotstat.st_dev && pwdstat.st_ino == dotstat.st_ino) /* The PWD value is correct. Use it. */ -- cgit 1.4.1