From 8304617684ba7f71c36fcf49786d3b279dfbefc3 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 22 Aug 2022 12:22:52 -0700 Subject: [PATCH 1/3] tempname: merge 64-bit time_t fix from glibc This merges glibc commit 52a5fe70a2c77935afe807fb6e904e512ddd894e "Use 64 bit time_t stat internally". * lib/tempname.c (struct_stat64) [_LIBC]: Use struct __stat64_t64. (__lstat64_time64) [!_LIBC]: Rename from __lstat64. All uses changed. (direxists): Use __stat64_time64 instead of __stat64. --- ChangeLog | 10 ++++++++++ lib/tempname.c | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index de113ce081..adb445ddcf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2022-08-22 Paul Eggert + + tempname: merge 64-bit time_t fix from glibc + This merges glibc commit 52a5fe70a2c77935afe807fb6e904e512ddd894e + "Use 64 bit time_t stat internally". + * lib/tempname.c (struct_stat64) [_LIBC]: Use struct __stat64_t64. + (__lstat64_time64) [!_LIBC]: Rename from __lstat64. + All uses changed. + (direxists): Use __stat64_time64 instead of __stat64. + 2022-08-16 Bruno Haible tempname: Add more tests. diff --git a/lib/tempname.c b/lib/tempname.c index 5adfe629a8..4f615b90b9 100644 --- a/lib/tempname.c +++ b/lib/tempname.c @@ -55,14 +55,14 @@ #include #if _LIBC -# define struct_stat64 struct stat64 +# define struct_stat64 struct __stat64_t64 # define __secure_getenv __libc_secure_getenv #else # define struct_stat64 struct stat # define __gen_tempname gen_tempname # define __mkdir mkdir # define __open open -# define __lstat64(file, buf) lstat (file, buf) +# define __lstat64_time64(file, buf) lstat (file, buf) # define __stat64(file, buf) stat (file, buf) # define __getrandom getrandom # define __clock_gettime64 clock_gettime @@ -105,7 +105,7 @@ static int direxists (const char *dir) { struct_stat64 buf; - return __stat64 (dir, &buf) == 0 && S_ISDIR (buf.st_mode); + return __stat64_time64 (dir, &buf) == 0 && S_ISDIR (buf.st_mode); } /* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is @@ -197,7 +197,7 @@ try_nocreate (char *tmpl, _GL_UNUSED void *flags) { struct_stat64 st; - if (__lstat64 (tmpl, &st) == 0 || errno == EOVERFLOW) + if (__lstat64_time64 (tmpl, &st) == 0 || errno == EOVERFLOW) __set_errno (EEXIST); return errno == ENOENT ? 0 : -1; } -- 2.37.2