]> sourceware.org Git - glibc.git/commitdiff
Use 64 bit time_t stat internally
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 2 Mar 2021 20:06:02 +0000 (17:06 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 22 Jun 2021 15:09:52 +0000 (12:09 -0300)
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 <lukma@denx.de>
35 files changed:
csu/check_fds.c
elf/dl-load.c
elf/dl-misc.c
elf/dl-profile.c
iconv/gconv_cache.c
include/dirent.h
include/file_change_detection.h
inet/rcmd.c
intl/loadmsgcat.c
io/Makefile
io/file_change_detection.c
io/getdirname.c
libio/filedoalloc.c
libio/fileops.c
libio/oldfileops.c
libio/wfileops.c
locale/loadarchive.c
locale/loadlocale.c
nscd/nscd_helper.c
nss/nss_database.c
sysdeps/posix/dl-fileid.h
sysdeps/posix/euidaccess.c
sysdeps/posix/getaddrinfo.c
sysdeps/posix/getcwd.c
sysdeps/posix/pathconf.c
sysdeps/posix/sysconf.c
sysdeps/posix/tempname.c
sysdeps/unix/sysv/linux/fdopendir.c
sysdeps/unix/sysv/linux/fexecve.c
sysdeps/unix/sysv/linux/opendir.c
sysdeps/unix/sysv/linux/pathconf.c
sysdeps/unix/sysv/linux/ttyname.h
sysdeps/unix/sysv/linux/ttyname_r.c
sysvipc/ftok.c
time/tzfile.c

index fbab28c2849b0166ad033fb54c099c4a65a1739b..6dc67334af1774c3e90d9fa8de270e8e6530cfbe 100644 (file)
@@ -69,10 +69,10 @@ check_one_fd (int fd, int mode)
         Note that the following code assumes that STDIN_FILENO,
         STDOUT_FILENO, STDERR_FILENO are the three lowest file
         decsriptor numbers, in this order.  */
-      struct stat64 st;
-      if (__builtin_expect (nullfd != fd, 0)
-         || __builtin_expect (__fstat64 (fd, &st), 0) != 0
-         || __builtin_expect (S_ISCHR (st.st_mode), 1) == 0
+      struct __stat64_t64 st;
+      if (__glibc_unlikely (nullfd != fd)
+         || __glibc_likely (__fstat64_time64 (fd, &st) != 0)
+         || __glibc_unlikely (S_ISCHR (st.st_mode) == 0)
          || st.st_rdev != dev)
        /* We cannot even give an error message here since it would
           run into the same problems.  */
index 918ec7546c6067ed7f36fafe44c99dde76108eed..a08df001af0beee5dcce6df0f52baa0e58f9fe5e 100644 (file)
@@ -1946,11 +1946,11 @@ open_path (const char *name, size_t namelen, int mode,
                {
                  /* We failed to open machine dependent library.  Let's
                     test whether there is any directory at all.  */
-                 struct stat64 st;
+                 struct __stat64_t64 st;
 
                  buf[buflen - namelen - 1] = '\0';
 
-                 if (__stat64 (buf, &st) != 0
+                 if (__stat64_time64 (buf, &st) != 0
                      || ! S_ISDIR (st.st_mode))
                    /* The directory does not exist or it is no directory.  */
                    this_dir->status[cnt] = nonexisting;
@@ -1968,9 +1968,9 @@ open_path (const char *name, size_t namelen, int mode,
              /* This is an extra security effort to make sure nobody can
                 preload broken shared objects which are in the trusted
                 directories and so exploit the bugs.  */
-             struct stat64 st;
+             struct __stat64_t64 st;
 
-             if (__fstat64 (fd, &st) != 0
+             if (__fstat64_time64 (fd, &st) != 0
                  || (st.st_mode & S_ISUID) == 0)
                {
                  /* The shared object cannot be tested for being SUID
index d4803bba4ed77d8a4a5443ab9657c11b243cf5d4..b256d792c6198683636c9060a2b10511aed54885 100644 (file)
@@ -43,11 +43,11 @@ void *
 _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot)
 {
   void *result = MAP_FAILED;
-  struct stat64 st;
+  struct __stat64_t64 st;
   int fd = __open64_nocancel (file, O_RDONLY | O_CLOEXEC);
   if (fd >= 0)
     {
-      if (__fstat64 (fd, &st) >= 0)
+      if (__fstat64_time64 (fd, &st) >= 0)
        {
          *sizep = st.st_size;
 
index 35b03959bcdfc6c743bf6d85932bb6b6bc8d20f9..088c023d95cd3c17a828540eb003653254af8568 100644 (file)
@@ -185,7 +185,7 @@ _dl_start_profile (void)
 {
   char *filename;
   int fd;
-  struct stat64 st;
+  struct __stat64_t64 st;
   const ElfW(Phdr) *ph;
   ElfW(Addr) mapstart = ~((ElfW(Addr)) 0);
   ElfW(Addr) mapend = 0;
@@ -342,7 +342,7 @@ _dl_start_profile (void)
       return;
     }
 
-  if (__fstat64 (fd, &st) < 0 || !S_ISREG (st.st_mode))
+  if (__fstat64_time64 (fd, &st) < 0 || !S_ISREG (st.st_mode))
     {
       /* Not stat'able or not a regular file => don't use it.  */
       errstr = "%s: cannot stat file: %s\n";
index 642cc731eb67fe487e4f1506054ae75f935b3428..68d6386d01907b9da8524b313fdffad01790915e 100644 (file)
@@ -48,7 +48,7 @@ int
 __gconv_load_cache (void)
 {
   int fd;
-  struct stat64 st;
+  struct __stat64_t64 st;
   struct gconvcache_header *header;
 
   /* We cannot use the cache if the GCONV_PATH environment variable is
@@ -64,7 +64,7 @@ __gconv_load_cache (void)
     return -1;
 
   /* Get information about the file.  */
-  if (__builtin_expect (__fstat64 (fd, &st), 0) < 0
+  if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0)
       /* We do not have to start looking at the file if it cannot contain
         at least the cache header.  */
       || (size_t) st.st_size < sizeof (struct gconvcache_header))
index f1d7e8359c6d4215361a08e802d2c4f368427d1b..d7567f5e866e6ad39211fd816d054e31fe159ea8 100644 (file)
@@ -49,7 +49,7 @@ extern int __versionsort64 (const struct dirent64 **a,
                            const struct dirent64 **b)
      __attribute_pure__;
 extern DIR *__alloc_dir (int fd, bool close_fd, int flags,
-                        const struct stat64 *statp)
+                        const struct __stat64_t64 *statp)
      __nonnull (4) attribute_hidden;
 extern __typeof (rewinddir) __rewinddir;
 extern __typeof (seekdir) __seekdir;
index 9de2bd0b79dd4159ec6f042c6634cbaa788ced4d..953de7c7fd2a57d1d0f63f480127188337bad316 100644 (file)
@@ -33,8 +33,8 @@ struct file_change_detection
   off64_t size;
 
   ino64_t ino;
-  struct timespec mtime;
-  struct timespec ctime;
+  struct __timespec64 mtime;
+  struct __timespec64 ctime;
 };
 
 /* Returns true if *LEFT and *RIGHT describe the same version of the
@@ -45,7 +45,7 @@ bool __file_is_unchanged (const struct file_change_detection *left,
 /* Extract file change information to *FILE from the stat buffer
    *ST.  */
 void __file_change_detection_for_stat (struct file_change_detection *file,
-                                       const struct stat64 *st);
+                                       const struct __stat64_t64 *st);
 
 /* Writes file change information for PATH to *FILE.  Returns true on
    success.  For benign errors, *FILE is cleared, and true is
index 0cfdaee15e9c45dfd5ead74a0c60967c8f79ee30..0d6b59557270c0018e6b8465e29c9df0b5b20a3a 100644 (file)
@@ -468,14 +468,14 @@ ruserok (const char *rhost, int superuser, const char *ruser,
 static FILE *
 iruserfopen (const char *file, uid_t okuser)
 {
-  struct stat64 st;
+  struct __stat64_t64 st;
   char *cp = NULL;
   FILE *res = NULL;
 
   /* If not a regular file, if owned by someone other than user or
      root, if writeable by anyone but the owner, or if hardlinked
      anywhere, quit.  */
-  if (__lstat64 (file, &st))
+  if (__lstat64_time64 (file, &st))
     cp = _("lstat failed");
   else if (!S_ISREG (st.st_mode))
     cp = _("not regular file");
@@ -484,7 +484,7 @@ iruserfopen (const char *file, uid_t okuser)
       res = fopen (file, "rce");
       if (!res)
        cp = _("cannot open");
-      else if (__fstat64 (fileno (res), &st) < 0)
+      else if (__fstat64_time64 (fileno (res), &st) < 0)
        cp = _("fstat failed");
       else if (st.st_uid && st.st_uid != okuser)
        cp = _("bad owner");
index 4fda9b02199f3600f1195fb1bbfb2a9304360056..9b10697dd9aa653b8692e1ed6895da1f063dac51 100644 (file)
@@ -756,7 +756,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
   int fd = -1;
   size_t size;
 #ifdef _LIBC
-  struct stat64 st;
+  struct __stat64_t64 st;
 #else
   struct stat st;
 #endif
@@ -804,7 +804,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
   /* We must know about the size of the file.  */
   if (
 #ifdef _LIBC
-      __builtin_expect (__fstat64 (fd, &st) != 0, 0)
+      __glibc_unlikely (__fstat64_time64 (fd, &st) != 0)
 #else
       __builtin_expect (fstat (fd, &st) != 0, 0)
 #endif
index ba8bd37355964820b73adeda84356c1c2927bb90..1a169902053c0ad8cc34f208e1e8ed1fa9bf8933 100644 (file)
@@ -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)
index 9871bc91664b0545578051bf7e8e3d0587650fdf..fad0907223ece8e8a5ee83def8bac1604cd681d5 100644 (file)
@@ -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
index 32b5ab4b6c4562e92257af2e030f2ee1ed362224..f29e910b37b0c665856129724b8403586d4c48d4 100644 (file)
@@ -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.  */
index 7afa3cb6834d1fa3efae99070f1627e9bf07ac83..c792eec88fdf4d423f533ed2ca420ed625235871 100644 (file)
@@ -78,7 +78,7 @@ _IO_file_doallocate (FILE *fp)
 {
   size_t size;
   char *p;
-  struct stat64 st;
+  struct __stat64_t64 st;
 
   size = BUFSIZ;
   if (fp->_fileno >= 0 && __builtin_expect (_IO_SYSSTAT (fp, &st), 0) >= 0)
index a71a56754735e882a7e73b9ef520a62cef404609..e8ee374821ed4ca94a98083b0adfa099991a3701 100644 (file)
@@ -545,7 +545,7 @@ libc_hidden_ver (_IO_new_file_underflow, _IO_file_underflow)
 static int
 mmap_remap_check (FILE *fp)
 {
-  struct stat64 st;
+  struct __stat64_t64 st;
 
   if (_IO_SYSSTAT (fp, &st) == 0
       && S_ISREG (st.st_mode) && st.st_size != 0
@@ -663,7 +663,7 @@ decide_maybe_mmap (FILE *fp)
      file descriptors are for mmap-able objects and on 32-bit
      machines we don't want to map files which are too large since
      this would require too much virtual memory.  */
-  struct stat64 st;
+  struct __stat64_t64 st;
 
   if (_IO_SYSSTAT (fp, &st) == 0
       && S_ISREG (st.st_mode) && st.st_size != 0
@@ -962,7 +962,7 @@ _IO_new_file_seekoff (FILE *fp, off64_t offset, int dir, int mode)
       break;
     case _IO_seek_end:
       {
-       struct stat64 st;
+       struct __stat64_t64 st;
        if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode))
          {
            offset += st.st_size;
@@ -1145,7 +1145,7 @@ libc_hidden_def (_IO_file_seek)
 int
 _IO_file_stat (FILE *fp, void *st)
 {
-  return __fstat64 (fp->_fileno, (struct stat64 *) st);
+  return __fstat64_time64 (fp->_fileno, (struct __stat64_t64 *) st);
 }
 libc_hidden_def (_IO_file_stat)
 
index ed235360ada670afd2b30c9022ed0e59dbac4cf9..ed3c98bd6dae6e857707e23025f36c8dd754009e 100644 (file)
@@ -487,7 +487,7 @@ _IO_old_file_seekoff (FILE *fp, off64_t offset, int dir, int mode)
       break;
     case _IO_seek_end:
       {
-       struct stat64 st;
+       struct __stat64_t64 st;
        if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode))
          {
            offset += st.st_size;
index 5d23566171931c1f63338ca20d8d81edf6d1e50c..37f44780f811bd382726c5dbe272533ff4496707 100644 (file)
@@ -840,7 +840,7 @@ _IO_wfile_seekoff (FILE *fp, off64_t offset, int dir, int mode)
       break;
     case _IO_seek_end:
       {
-       struct stat64 st;
+       struct __stat64_t64 st;
        if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode))
          {
            offset += st.st_size;
index 4177fc8972966a9c6d61f2e1c5ee6360e33d82ab..512769eaeca0c451f83b0cbf2280badb6eff3c9c 100644 (file)
@@ -78,7 +78,7 @@ static struct archmapped *archmapped;
    ARCHMAPPED points to this; if mapping the archive header failed,
    then headmap.ptr is null.  */
 static struct archmapped headmap;
-static struct stat64 archive_stat; /* stat of archive when header mapped.  */
+static struct __stat64_t64 archive_stat; /* stat of archive when header mapped.  */
 
 /* Record of locales that we have already loaded from the archive.  */
 struct locale_in_archive
@@ -207,7 +207,7 @@ _nl_load_locale_from_archive (int category, const char **namep)
        /* Cannot open the archive, for whatever reason.  */
        return NULL;
 
-      if (__fstat64 (fd, &archive_stat) == -1)
+      if (__fstat64_time64 (fd, &archive_stat) == -1)
        {
          /* stat failed, very strange.  */
        close_and_out:
@@ -396,7 +396,7 @@ _nl_load_locale_from_archive (int category, const char **namep)
          /* Open the file if it hasn't happened yet.  */
          if (fd == -1)
            {
-             struct stat64 st;
+             struct __stat64_t64 st;
              fd = __open_nocancel (archfname,
                                    O_RDONLY|O_LARGEFILE|O_CLOEXEC);
              if (fd == -1)
@@ -405,7 +405,7 @@ _nl_load_locale_from_archive (int category, const char **namep)
              /* Now verify we think this is really the same archive file
                 we opened before.  If it has been changed we cannot trust
                 the header we read previously.  */
-             if (__fstat64 (fd, &st) < 0
+             if (__fstat64_time64 (fd, &st) < 0
                  || st.st_size != archive_stat.st_size
                  || st.st_mtime != archive_stat.st_mtime
                  || st.st_dev != archive_stat.st_dev
index 9c034908831f2a6023472cceec1fb4f6235ac385..f4e6cc9fc2d5c06fae75397e254a6c2bab888416 100644 (file)
@@ -167,7 +167,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
 {
   int fd;
   void *filedata;
-  struct stat64 st;
+  struct __stat64_t64 st;
   struct __locale_data *newdata;
   int save_err;
   int alloc = ld_mapped;
@@ -180,7 +180,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
     /* Cannot open the file.  */
     return;
 
-  if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
+  if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0))
     {
     puntfd:
       __close_nocancel_nostatus (fd);
@@ -206,7 +206,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
       if (__builtin_expect (fd, 0) < 0)
        return;
 
-      if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
+      if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0))
        goto puntfd;
     }
 
index 462504d82889963ccaba8b8b4b970ac31bef37e0..06ba7476e590ab4af55d8ad034a88c5476ad4353 100644 (file)
@@ -324,8 +324,8 @@ __nscd_get_mapping (request_type type, const char *key,
 
   if (__glibc_unlikely (n == keylen))
     {
-      struct stat64 st;
-      if (__builtin_expect (__fstat64 (mapfd, &st) != 0, 0)
+      struct __stat64_t64 st;
+      if (__glibc_unlikely (__fstat64_time64 (mapfd, &st) != 0)
          || __builtin_expect (st.st_size < sizeof (struct database_pers_head),
                               0))
        goto out_close;
index 1e11294406037bb89d5df8380a7eeabf7580b2f1..ab121cb371c087e960f097bdce0c9b51c43d9efb 100644 (file)
@@ -394,7 +394,7 @@ nss_database_check_reload_and_get (struct nss_database_state *local,
                                    nss_action_list *result,
                                    enum nss_database database_index)
 {
-  struct stat64 str;
+  struct __stat64_t64 str;
 
   /* Acquire MO is needed because the thread that sets reload_disabled
      may have loaded the configuration first, so synchronize with the
@@ -424,7 +424,7 @@ nss_database_check_reload_and_get (struct nss_database_state *local,
      errors here are very unlikely, but the chance that we're entering
      a container is also very unlikely, so we err on the side of both
      very unlikely things not happening at the same time.  */
-  if (__stat64 ("/", &str) != 0
+  if (__stat64_time64 ("/", &str) != 0
       || (local->root_ino != 0
          && (str.st_ino != local->root_ino
              ||  str.st_dev != local->root_dev)))
index 0bb6794dbe7ccf31a3b1516cce67590c00a150a4..bf437f3d71afc10e964a970f7b6e673dfccfdaca 100644 (file)
@@ -32,9 +32,9 @@ struct r_file_id
 static inline bool
 _dl_get_file_id (int fd, struct r_file_id *id)
 {
-  struct stat64 st;
+  struct __stat64_t64 st;
 
-  if (__glibc_unlikely (__fstat64 (fd, &st) < 0))
+  if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0))
     return false;
 
   id->dev = st.st_dev;
index 26ebb432a2b52e5fe7c9872dd5cb578bfc1add60..86f3285471f7a9efceb47ee3f157cac59e7774b3 100644 (file)
@@ -119,7 +119,7 @@ int group_member ();
 int
 euidaccess (const char *path, int mode)
 {
-  struct stat64 stats;
+  struct __stat64_t64 stats;
   int granted;
 
 #ifdef _LIBC
@@ -140,7 +140,7 @@ euidaccess (const char *path, int mode)
     return access (path, mode);
 #endif
 
-  if (__stat64 (path, &stats))
+  if (__stat64_time64 (path, &stats))
     return -1;
 
   mode &= (X_OK | W_OK | R_OK);        /* Clear any bogus bits. */
index b7e1aee80f68194a80fc8039d10b01e89d395a33..f7f19f1d7c276bf2d9a563ea4ac476de4433cc0c 100644 (file)
@@ -1636,16 +1636,16 @@ static int gaiconf_reload_flag_ever_set;
 /* Last modification time.  */
 #ifdef _STATBUF_ST_NSEC
 
-static struct timespec gaiconf_mtime;
+static struct __timespec64 gaiconf_mtime;
 
 static inline void
-save_gaiconf_mtime (const struct stat64 *st)
+save_gaiconf_mtime (const struct __stat64_t64 *st)
 {
   gaiconf_mtime = st->st_mtim;
 }
 
 static inline bool
-check_gaiconf_mtime (const struct stat64 *st)
+check_gaiconf_mtime (const struct __stat64_t64 *st)
 {
   return (st->st_mtim.tv_sec == gaiconf_mtime.tv_sec
           && st->st_mtim.tv_nsec == gaiconf_mtime.tv_nsec);
@@ -1656,13 +1656,13 @@ check_gaiconf_mtime (const struct stat64 *st)
 static time_t gaiconf_mtime;
 
 static inline void
-save_gaiconf_mtime (const struct stat64 *st)
+save_gaiconf_mtime (const struct __stat64_t64 *st)
 {
   gaiconf_mtime = st->st_mtime;
 }
 
 static inline bool
-check_gaiconf_mtime (const struct stat64 *st)
+check_gaiconf_mtime (const struct __stat64_t64 *st)
 {
   return st->st_mtime == gaiconf_mtime;
 }
@@ -1777,8 +1777,8 @@ gaiconf_init (void)
   FILE *fp = fopen (GAICONF_FNAME, "rce");
   if (fp != NULL)
     {
-      struct stat64 st;
-      if (__fstat64 (fileno (fp), &st) != 0)
+      struct __stat64_t64 st;
+      if (__fstat64_time64 (fileno (fp), &st) != 0)
        {
          fclose (fp);
          goto no_file;
@@ -2130,8 +2130,8 @@ gaiconf_init (void)
 static void
 gaiconf_reload (void)
 {
-  struct stat64 st;
-  if (__stat64 (GAICONF_FNAME, &st) != 0
+  struct __stat64_t64 st;
+  if (__stat64_time64 (GAICONF_FNAME, &st) != 0
       || !check_gaiconf_mtime (&st))
     gaiconf_init ();
 }
index f11644aae746835238c03fc4dd8fc614e5f95ea5..13680026ffecbd5148c9ac20becfa04d923ef0c4 100644 (file)
@@ -183,7 +183,7 @@ __getcwd_generic (char *buf, size_t size)
   ino_t rootino, thisino;
   char *dir;
   register char *dirp;
-  struct stat64 st;
+  struct __stat64_t64 st;
   size_t allocated = size;
   size_t used;
 
@@ -249,12 +249,12 @@ __getcwd_generic (char *buf, size_t size)
   dirp = dir + allocated;
   *--dirp = '\0';
 
-  if (__lstat64 (".", &st) < 0)
+  if (__lstat64_time64 (".", &st) < 0)
     goto lose;
   thisdev = st.st_dev;
   thisino = st.st_ino;
 
-  if (__lstat64 ("/", &st) < 0)
+  if (__lstat64_time64 ("/", &st) < 0)
     goto lose;
   rootdev = st.st_dev;
   rootino = st.st_ino;
@@ -276,12 +276,12 @@ __getcwd_generic (char *buf, size_t size)
       if (fd < 0)
         goto lose;
       fd_needs_closing = true;
-      parent_status = __fstat64 (fd, &st);
+      parent_status = __fstat64_time64 (fd, &st);
 #else
       dotlist[dotlen++] = '.';
       dotlist[dotlen++] = '.';
       dotlist[dotlen] = '\0';
-      parent_status = __lstat64 (dotlist, &st);
+      parent_status = __lstat64_time64 (dotlist, &st);
 #endif
       if (parent_status != 0)
         goto lose;
@@ -353,7 +353,8 @@ __getcwd_generic (char *buf, size_t size)
           {
             int entry_status;
 #if HAVE_OPENAT_SUPPORT
-            entry_status = __fstatat64 (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
+            entry_status = __fstatat64_time64 (fd, d->d_name, &st,
+                                              AT_SYMLINK_NOFOLLOW);
 #else
             /* Compute size needed for this file name, or for the file
                name ".." in the same directory, whichever is larger.
@@ -390,7 +391,7 @@ __getcwd_generic (char *buf, size_t size)
               }
 
             memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d));
-            entry_status = __lstat64 (dotlist, &st);
+            entry_status = __lstat64_time64 (dotlist, &st);
 #endif
             /* We don't fail here if we cannot stat() a directory entry.
                This can happen when (network) file systems fail.  If this
index 9eb17d1536083be74167421cbdac181d62f80db8..89fcfad49d4e2f95b95e1071e03dd9853ea706c0 100644 (file)
@@ -129,9 +129,9 @@ __pathconf (const char *path, int name)
 #ifdef _POSIX_ASYNC_IO
       {
        /* AIO is only allowed on regular files and block devices.  */
-       struct stat64 st;
+       struct __stat64_t64 st;
 
-       if (__stat64 (path, &st) < 0
+       if (__stat64_time64 (path, &st) < 0
            || (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
          return -1;
        else
index 54d6046d00b8e8915c9b72ac1950e75fa8c984d5..3e8ec5cd512d0e81cd32fc8ee65a5fc68f2db1ef 100644 (file)
@@ -1215,8 +1215,8 @@ __sysconf_check_spec (const char *spec)
                   "/POSIX_V6_", sizeof ("/POSIX_V6_") - 1),
          spec, speclen + 1);
 
-  struct stat64 st;
-  long int ret = __stat64 (name, &st) >= 0 ? 1 : -1;
+  struct __stat64_t64 st;
+  long int ret = __stat64_time64 (name, &st) >= 0 ? 1 : -1;
 
   __set_errno (save_errno);
   return ret;
index 5f804b38d789572e269ff4f80ba13b236fa37360..ff38f1e31fe36af8852ad7670cf9b547f40b36de 100644 (file)
 #include <time.h>
 
 #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
@@ -99,7 +99,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
@@ -191,7 +191,7 @@ try_nocreate (char *tmpl, void *flags _GL_UNUSED)
 {
   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;
 }
index ede43f248512e264f3909cde5231d1fa76dcbeb7..32ec10e206305e3c1e424290d8e68c07e3e00283 100644 (file)
@@ -27,9 +27,9 @@
 DIR *
 __fdopendir (int fd)
 {
-  struct stat64 statbuf;
+  struct __stat64_t64 statbuf;
 
-  if (__builtin_expect (__fstat64 (fd, &statbuf), 0) < 0)
+  if (__glibc_unlikely (__fstat64_time64 (fd, &statbuf) < 0))
     return NULL;
   if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode)))
     {
index df25c2acb860fd929ea893b18810e879b3fe39a7..4dfcaeedc16f1788abb57f79bfa8bdcd237f5e5c 100644 (file)
@@ -58,8 +58,8 @@ fexecve (int fd, char *const argv[], char *const envp[])
 
   /* We come here only if the 'execve' call fails.  Determine whether
      /proc is mounted.  If not we return ENOSYS.  */
-  struct stat64 st;
-  if (__stat64 ("/proc/self/fd", &st) != 0 && errno == ENOENT)
+  struct __stat64_t64 st;
+  if (__stat64_time64 ("/proc/self/fd", &st) != 0 && errno == ENOENT)
     save = ENOSYS;
 
   __set_errno (save);
index 4020a826f9956f09ee7ce68995a31fd424981809..48f254d169469c9a2cad3fa9bed82f26fdab4c2b 100644 (file)
@@ -49,8 +49,8 @@ opendir_tail (int fd)
   /* Now make sure this really is a directory and nothing changed since the
      `stat' call.  The S_ISDIR check is superfluous if O_DIRECTORY works,
      but it's cheap and we need the stat call for st_blksize anyway.  */
-  struct stat64 statbuf;
-  if (__glibc_unlikely (__fstat64 (fd, &statbuf) < 0))
+  struct __stat64_t64 statbuf;
+  if (__glibc_unlikely (__fstat64_time64 (fd, &statbuf) < 0))
     goto lose;
   if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode)))
     {
@@ -88,7 +88,8 @@ __opendir (const char *name)
 weak_alias (__opendir, opendir)
 
 DIR *
-__alloc_dir (int fd, bool close_fd, int flags, const struct stat64 *statp)
+__alloc_dir (int fd, bool close_fd, int flags,
+            const struct __stat64_t64 *statp)
 {
   /* We have to set the close-on-exit flag if the user provided the
      file descriptor.  */
index f37e8aaf6873d4533502b8f6b594fc6bd909b5f6..b599a66c930cad4d84fb504a55795dc7f42075c0 100644 (file)
@@ -65,9 +65,10 @@ distinguish_extX (const struct statfs *fsbuf, const char *file, int fd)
 {
   char buf[64];
   char path[PATH_MAX];
-  struct stat64 st;
+  struct __stat64_t64 st;
 
-  if ((file == NULL ? __fstat64 (fd, &st) : __stat64 (file, &st)) != 0)
+  if ((file == NULL ? __fstat64_time64 (fd, &st)
+                   : __stat64_time64 (file, &st)) != 0)
     /* Strange.  The statfd call worked, but stat fails.  Default to
        the more pessimistic value.  */
     return EXT2_LINK_MAX;
index 0a0048cc021dfe2a3e81378f047f53de8de8ed71..5dcbfef9739d1ffab22d90b5dffa969a057af974 100644 (file)
    linux/Documentation/devices.txt (on linux < 4.10) or
    linux/Documentation/admin-guide/devices.txt (on linux >= 4.10).  */
 static inline bool
-is_pty (struct stat64 *sb)
+is_pty (struct __stat64_t64 *sb)
 {
-#ifdef _STATBUF_ST_RDEV
   int m = __gnu_dev_major (sb->st_rdev);
   return (136 <= m && m <= 143);
-#else
-  return false;
-#endif
 }
 
 static inline bool
-is_mytty (const struct stat64 *mytty, const struct stat64 *maybe)
+is_mytty (const struct __stat64_t64 *mytty, const struct __stat64_t64 *maybe)
 {
   return (maybe->st_ino == mytty->st_ino
          && maybe->st_dev == mytty->st_dev
-#ifdef _STATBUF_ST_RDEV
          && S_ISCHR (maybe->st_mode)
          && maybe->st_rdev == mytty->st_rdev
-#endif
          );
 }
index 899a851a83b9e060141c7a4ea6c90f293218b5b5..9ef9f4288306dd496c4852c26008dade7a28c855 100644 (file)
 #include "ttyname.h"
 
 static int getttyname_r (char *buf, size_t buflen,
-                        const struct stat64 *mytty, int save,
+                        const struct __stat64_t64 *mytty, int save,
                         int *dostat);
 
 static int
 attribute_compat_text_section
-getttyname_r (char *buf, size_t buflen, const struct stat64 *mytty,
+getttyname_r (char *buf, size_t buflen, const struct __stat64_t64 *mytty,
              int save, int *dostat)
 {
-  struct stat64 st;
+  struct __stat64_t64 st;
   DIR *dirstream;
   struct dirent64 *d;
   size_t devlen = strlen (buf);
@@ -71,7 +71,7 @@ getttyname_r (char *buf, size_t buflen, const struct stat64 *mytty,
        cp = __stpncpy (buf + devlen, d->d_name, needed);
        cp[0] = '\0';
 
-       if (__stat64 (buf, &st) == 0
+       if (__stat64_time64 (buf, &st) == 0
            && is_mytty (mytty, &st))
          {
            (void) __closedir (dirstream);
@@ -93,7 +93,7 @@ int
 __ttyname_r (int fd, char *buf, size_t buflen)
 {
   struct fd_to_filename filename;
-  struct stat64 st, st1;
+  struct __stat64_t64 st, st1;
   int dostat = 0;
   int doispty = 0;
   int save = errno;
@@ -118,7 +118,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
   if (__glibc_unlikely (__tcgetattr (fd, &term) < 0))
     return errno;
 
-  if (__fstat64 (fd, &st) < 0)
+  if (__fstat64_time64 (fd, &st) < 0)
     return errno;
 
   /* We try using the /proc filesystem.  */
@@ -144,7 +144,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
 
       /* Verify readlink result, fall back on iterating through devices.  */
       if (buf[0] == '/'
-         && __stat64 (buf, &st1) == 0
+         && __stat64_time64 (buf, &st1) == 0
          && is_mytty (&st, &st1))
        return 0;
 
@@ -155,7 +155,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
   memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
   buflen -= sizeof ("/dev/pts/") - 1;
 
-  if (__stat64 (buf, &st1) == 0 && S_ISDIR (st1.st_mode))
+  if (__stat64_time64 (buf, &st1) == 0 && S_ISDIR (st1.st_mode))
     {
       ret = getttyname_r (buf, buflen, &st, save,
                          &dostat);
index 2e39c7441541d7da7898f4e279c2dc0b3b67864e..bd633bd39596eff6680030412416d3c46c99149f 100644 (file)
 key_t
 ftok (const char *pathname, int proj_id)
 {
-  struct stat64 st;
+  struct __stat64_t64 st;
   key_t key;
 
-  if (__stat64 (pathname, &st) < 0)
+  if (__stat64_time64 (pathname, &st) < 0)
     return (key_t) -1;
 
   key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16)
index 040a5e341f2f8ea223e90686ebeb2cccc0c19995..4377018a559363891829fb400ea3e10a0e110d05 100644 (file)
@@ -150,9 +150,9 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
     }
 
   /* If we were already using tzfile, check whether the file changed.  */
-  struct stat64 st;
+  struct __stat64_t64 st;
   if (was_using_tzfile
-      && __stat64 (file, &st) == 0
+      && __stat64_time64 (file, &st) == 0
       && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev
       && tzfile_mtime == st.st_mtime)
     goto done;  /* Nothing to do.  */
@@ -164,7 +164,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
     goto ret_free_transitions;
 
   /* Get information about the file we are actually using.  */
-  if (__fstat64 (__fileno (f), &st) != 0)
+  if (__fstat64_time64 (__fileno (f), &st) != 0)
     goto lose;
 
   free ((void *) transitions);
This page took 0.092648 seconds and 5 git commands to generate.