Remove internal usage of extensible stat functions

It replaces the internal usage of __{f,l}xstat{at}{64} with the
__{f,l}stat{at}{64}.  It should not change the generate code since
sys/stat.h explicit defines redirections to internal calls back to
xstat* symbols.

Checked with a build for all affected ABIs.  I also check on
x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Adhemerval Zanella 2020-07-15 19:35:58 +00:00
parent 2315996215
commit 04986243d1
56 changed files with 109 additions and 114 deletions

View File

@ -194,7 +194,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
return -1; return -1;
} }
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0) if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
goto close_unlock_return; goto close_unlock_return;
if (__builtin_expect (!S_ISREG (st.st_mode), 0) if (__builtin_expect (!S_ISREG (st.st_mode), 0)

View File

@ -71,7 +71,7 @@ check_one_fd (int fd, int mode)
decsriptor numbers, in this order. */ decsriptor numbers, in this order. */
struct stat64 st; struct stat64 st;
if (__builtin_expect (nullfd != fd, 0) if (__builtin_expect (nullfd != fd, 0)
|| __builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) != 0 || __builtin_expect (__fstat64 (fd, &st), 0) != 0
|| __builtin_expect (S_ISCHR (st.st_mode), 1) == 0 || __builtin_expect (S_ISCHR (st.st_mode), 1) == 0
|| st.st_rdev != dev) || st.st_rdev != dev)
/* We cannot even give an error message here since it would /* We cannot even give an error message here since it would

View File

@ -163,7 +163,7 @@ print_cache (const char *cache_name)
error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), cache_name); error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), cache_name);
struct stat64 st; struct stat64 st;
if (fstat64 (fd, &st) < 0 if (__fstat64 (fd, &st) < 0
/* No need to map the file if it is empty. */ /* No need to map the file if it is empty. */
|| st.st_size == 0) || st.st_size == 0)
{ {
@ -699,7 +699,7 @@ load_aux_cache (const char *aux_cache_name)
} }
struct stat64 st; struct stat64 st;
if (fstat64 (fd, &st) < 0 || st.st_size < sizeof (struct aux_cache_file)) if (__fstat64 (fd, &st) < 0 || st.st_size < sizeof (struct aux_cache_file))
{ {
close (fd); close (fd);
init_aux_cache (); init_aux_cache ();

View File

@ -1914,7 +1914,7 @@ open_path (const char *name, size_t namelen, int mode,
buf[buflen - namelen - 1] = '\0'; buf[buflen - namelen - 1] = '\0';
if (__xstat64 (_STAT_VER, buf, &st) != 0 if (__stat64 (buf, &st) != 0
|| ! S_ISDIR (st.st_mode)) || ! S_ISDIR (st.st_mode))
/* The directory does not exist or it is no directory. */ /* The directory does not exist or it is no directory. */
this_dir->status[cnt] = nonexisting; this_dir->status[cnt] = nonexisting;
@ -1934,7 +1934,7 @@ open_path (const char *name, size_t namelen, int mode,
directories and so exploit the bugs. */ directories and so exploit the bugs. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0 if (__fstat64 (fd, &st) != 0
|| (st.st_mode & S_ISUID) == 0) || (st.st_mode & S_ISUID) == 0)
{ {
/* The shared object cannot be tested for being SUID /* The shared object cannot be tested for being SUID

View File

@ -47,7 +47,7 @@ _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot)
int fd = __open64_nocancel (file, O_RDONLY | O_CLOEXEC); int fd = __open64_nocancel (file, O_RDONLY | O_CLOEXEC);
if (fd >= 0) if (fd >= 0)
{ {
if (__fxstat64 (_STAT_VER, fd, &st) >= 0) if (__fstat64 (fd, &st) >= 0)
{ {
*sizep = st.st_size; *sizep = st.st_size;

View File

@ -342,7 +342,7 @@ _dl_start_profile (void)
return; return;
} }
if (__fxstat64 (_STAT_VER, fd, &st) < 0 || !S_ISREG (st.st_mode)) if (__fstat64 (fd, &st) < 0 || !S_ISREG (st.st_mode))
{ {
/* Not stat'able or not a regular file => don't use it. */ /* Not stat'able or not a regular file => don't use it. */
errstr = "%s: cannot stat file: %s\n"; errstr = "%s: cannot stat file: %s\n";

View File

@ -64,7 +64,7 @@ __gconv_load_cache (void)
return -1; return -1;
/* Get information about the file. */ /* Get information about the file. */
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0 if (__builtin_expect (__fstat64 (fd, &st), 0) < 0
/* We do not have to start looking at the file if it cannot contain /* We do not have to start looking at the file if it cannot contain
at least the cache header. */ at least the cache header. */
|| (size_t) st.st_size < sizeof (struct gconvcache_header)) || (size_t) st.st_size < sizeof (struct gconvcache_header))

View File

@ -53,6 +53,7 @@ extern __typeof (__fxstatat64) __fxstatat64 attribute_hidden;
#define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) #define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf)
#define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf) #define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf)
#define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf) #define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf)
#define __stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf)
#define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) #define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf)
#define __fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf) #define __fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf)
#define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf) #define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf)

View File

@ -474,7 +474,7 @@ iruserfopen (const char *file, uid_t okuser)
/* If not a regular file, if owned by someone other than user or /* If not a regular file, if owned by someone other than user or
root, if writeable by anyone but the owner, or if hardlinked root, if writeable by anyone but the owner, or if hardlinked
anywhere, quit. */ anywhere, quit. */
if (__lxstat64 (_STAT_VER, file, &st)) if (__lstat64 (file, &st))
cp = _("lstat failed"); cp = _("lstat failed");
else if (!S_ISREG (st.st_mode)) else if (!S_ISREG (st.st_mode))
cp = _("not regular file"); cp = _("not regular file");
@ -483,7 +483,7 @@ iruserfopen (const char *file, uid_t okuser)
res = fopen (file, "rce"); res = fopen (file, "rce");
if (!res) if (!res)
cp = _("cannot open"); cp = _("cannot open");
else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0) else if (__fstat64 (fileno (res), &st) < 0)
cp = _("fstat failed"); cp = _("fstat failed");
else if (st.st_uid && st.st_uid != okuser) else if (st.st_uid && st.st_uid != okuser)
cp = _("bad owner"); cp = _("bad owner");

View File

@ -174,7 +174,7 @@ next:
break; break;
case PASSWD: case PASSWD:
if (strcmp(*aname, "anonymous") && if (strcmp(*aname, "anonymous") &&
fstat64(fileno(cfile), &stb) >= 0 && __fstat64(fileno(cfile), &stb) >= 0 &&
(stb.st_mode & 077) != 0) { (stb.st_mode & 077) != 0) {
warnx(_("Error: .netrc file is readable by others.")); warnx(_("Error: .netrc file is readable by others."));
warnx(_("Remove 'password' line or make file unreadable by others.")); warnx(_("Remove 'password' line or make file unreadable by others."));

View File

@ -804,7 +804,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
/* We must know about the size of the file. */ /* We must know about the size of the file. */
if ( if (
#ifdef _LIBC #ifdef _LIBC
__builtin_expect (fstat64 (fd, &st) != 0, 0) __builtin_expect (__fstat64 (fd, &st) != 0, 0)
#else #else
__builtin_expect (fstat (fd, &st) != 0, 0) __builtin_expect (fstat (fd, &st) != 0, 0)
#endif #endif

View File

@ -67,7 +67,7 @@ __file_change_detection_for_path (struct file_change_detection *file,
const char *path) const char *path)
{ {
struct stat64 st; struct stat64 st;
if (stat64 (path, &st) != 0) if (__stat64 (path, &st) != 0)
switch (errno) switch (errno)
{ {
case EACCES: case EACCES:
@ -105,7 +105,7 @@ __file_change_detection_for_fp (struct file_change_detection *file,
else else
{ {
struct stat64 st; struct stat64 st;
if (fstat64 (__fileno (fp), &st) != 0) if (__fstat64 (__fileno (fp), &st) != 0)
/* If we already have a file descriptor, all errors are fatal. */ /* If we already have a file descriptor, all errors are fatal. */
return false; return false;
else else

View File

@ -81,8 +81,9 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
# define FTSOBJ FTS # define FTSOBJ FTS
# define FTSENTRY FTSENT # define FTSENTRY FTSENT
# define INO_T ino_t # define INO_T ino_t
# define STAT stat # define STRUCT_STAT stat
# define LSTAT lstat # define STAT __stat
# define LSTAT __lstat
#endif #endif
static FTSENTRY *fts_alloc (FTSOBJ *, const char *, size_t); static FTSENTRY *fts_alloc (FTSOBJ *, const char *, size_t);
@ -872,7 +873,7 @@ fts_stat (FTSOBJ *sp, FTSENTRY *p, int follow)
FTSENTRY *t; FTSENTRY *t;
dev_t dev; dev_t dev;
INO_T ino; INO_T ino;
struct STAT *sbp, sb; struct STRUCT_STAT *sbp, sb;
int saved_errno; int saved_errno;
/* If user needs stat info, stat buffer already allocated. */ /* If user needs stat info, stat buffer already allocated. */
@ -906,7 +907,7 @@ fts_stat (FTSOBJ *sp, FTSENTRY *p, int follow)
} }
} else if (LSTAT(p->fts_accpath, sbp)) { } else if (LSTAT(p->fts_accpath, sbp)) {
p->fts_errno = errno; p->fts_errno = errno;
err: memset(sbp, 0, sizeof(struct STAT)); err: memset(sbp, 0, sizeof(struct STRUCT_STAT));
return (FTS_NS); return (FTS_NS);
} }
@ -996,7 +997,7 @@ fts_alloc (FTSOBJ *sp, const char *name, size_t namelen)
*/ */
len = sizeof(FTSENTRY) + namelen; len = sizeof(FTSENTRY) + namelen;
if (!ISSET(FTS_NOSTAT)) if (!ISSET(FTS_NOSTAT))
len += sizeof(struct STAT) + ALIGNBYTES; len += sizeof(struct STRUCT_STAT) + ALIGNBYTES;
if ((p = malloc(len)) == NULL) if ((p = malloc(len)) == NULL)
return (NULL); return (NULL);
@ -1005,7 +1006,7 @@ fts_alloc (FTSOBJ *sp, const char *name, size_t namelen)
p->fts_name[namelen] = '\0'; p->fts_name[namelen] = '\0';
if (!ISSET(FTS_NOSTAT)) if (!ISSET(FTS_NOSTAT))
p->fts_statp = (struct STAT *)ALIGN(p->fts_name + namelen + 2); p->fts_statp = (struct STRUCT_STAT *)ALIGN(p->fts_name + namelen + 2);
p->fts_namelen = namelen; p->fts_namelen = namelen;
p->fts_path = sp->fts_path; p->fts_path = sp->fts_path;
p->fts_errno = 0; p->fts_errno = 0;
@ -1116,7 +1117,7 @@ fts_safe_changedir (FTSOBJ *sp, FTSENTRY *p, int fd, const char *path)
return (0); return (0);
if (fd < 0 && (newfd = __open(path, O_RDONLY, 0)) < 0) if (fd < 0 && (newfd = __open(path, O_RDONLY, 0)) < 0)
return (-1); return (-1);
if (__fxstat64(_STAT_VER, newfd, &sb)) { if (__fstat64(newfd, &sb)) {
ret = -1; ret = -1;
goto bail; goto bail;
} }

View File

@ -24,7 +24,8 @@
#define FTSOBJ FTS64 #define FTSOBJ FTS64
#define FTSENTRY FTSENT64 #define FTSENTRY FTSENT64
#define INO_T ino64_t #define INO_T ino64_t
#define STAT stat64 #define STRUCT_STAT stat64
#define LSTAT lstat64 #define STAT __stat64
#define LSTAT __lstat64
#include "fts.c" #include "fts.c"

View File

@ -135,15 +135,15 @@ int rpl_lstat (const char *, struct stat *);
# define NFTW_OLD_NAME __old_nftw # define NFTW_OLD_NAME __old_nftw
# define NFTW_NEW_NAME __new_nftw # define NFTW_NEW_NAME __new_nftw
# define INO_T ino_t # define INO_T ino_t
# define STAT stat # define STRUCT_STAT stat
# ifdef _LIBC # ifdef _LIBC
# define LXSTAT __lxstat # define LSTAT __lstat
# define XSTAT __xstat # define STAT __stat
# define FXSTATAT __fxstatat # define FSTATAT __fstatat
# else # else
# define LXSTAT(V,f,sb) lstat (f,sb) # define LSTAT lstat
# define XSTAT(V,f,sb) stat (f,sb) # define XTAT stat
# define FXSTATAT(V,d,f,sb,m) fstatat (d, f, sb, m) # define FSTATAT fstatat
# endif # endif
# define FTW_FUNC_T __ftw_func_t # define FTW_FUNC_T __ftw_func_t
# define NFTW_FUNC_T __nftw_func_t # define NFTW_FUNC_T __nftw_func_t
@ -219,7 +219,7 @@ static const int ftw_arr[] =
/* Forward declarations of local functions. */ /* Forward declarations of local functions. */
static int ftw_dir (struct ftw_data *data, struct STAT *st, static int ftw_dir (struct ftw_data *data, struct STRUCT_STAT *st,
struct dir_data *old_dir); struct dir_data *old_dir);
@ -239,7 +239,7 @@ object_compare (const void *p1, const void *p2)
static int static int
add_object (struct ftw_data *data, struct STAT *st) add_object (struct ftw_data *data, struct STRUCT_STAT *st)
{ {
struct known_object *newp = malloc (sizeof (struct known_object)); struct known_object *newp = malloc (sizeof (struct known_object));
if (newp == NULL) if (newp == NULL)
@ -251,7 +251,7 @@ add_object (struct ftw_data *data, struct STAT *st)
static inline int static inline int
find_object (struct ftw_data *data, struct STAT *st) find_object (struct ftw_data *data, struct STRUCT_STAT *st)
{ {
struct known_object obj; struct known_object obj;
obj.dev = st->st_dev; obj.dev = st->st_dev;
@ -378,7 +378,7 @@ static int
process_entry (struct ftw_data *data, struct dir_data *dir, const char *name, process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
size_t namlen, int d_type) size_t namlen, int d_type)
{ {
struct STAT st; struct STRUCT_STAT st;
int result = 0; int result = 0;
int flag = 0; int flag = 0;
size_t new_buflen; size_t new_buflen;
@ -405,16 +405,16 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
int statres; int statres;
if (dir->streamfd != -1) if (dir->streamfd != -1)
statres = FXSTATAT (_STAT_VER, dir->streamfd, name, &st, statres = FSTATAT (dir->streamfd, name, &st,
(data->flags & FTW_PHYS) ? AT_SYMLINK_NOFOLLOW : 0); (data->flags & FTW_PHYS) ? AT_SYMLINK_NOFOLLOW : 0);
else else
{ {
if ((data->flags & FTW_CHDIR) == 0) if ((data->flags & FTW_CHDIR) == 0)
name = data->dirbuf; name = data->dirbuf;
statres = ((data->flags & FTW_PHYS) statres = ((data->flags & FTW_PHYS)
? LXSTAT (_STAT_VER, name, &st) ? LSTAT (name, &st)
: XSTAT (_STAT_VER, name, &st)); : STAT (name, &st));
} }
if (statres < 0) if (statres < 0)
@ -430,10 +430,10 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
it should contain information about the link (ala lstat). it should contain information about the link (ala lstat).
We do our best to fill in what data we can. */ We do our best to fill in what data we can. */
if (dir->streamfd != -1) if (dir->streamfd != -1)
statres = FXSTATAT (_STAT_VER, dir->streamfd, name, &st, statres = FSTATAT (dir->streamfd, name, &st,
AT_SYMLINK_NOFOLLOW); AT_SYMLINK_NOFOLLOW);
else else
statres = LXSTAT (_STAT_VER, name, &st); statres = LSTAT (name, &st);
if (statres == 0 && S_ISLNK (st.st_mode)) if (statres == 0 && S_ISLNK (st.st_mode))
flag = FTW_SLN; flag = FTW_SLN;
else else
@ -476,7 +476,7 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
static int static int
__attribute ((noinline)) __attribute ((noinline))
ftw_dir (struct ftw_data *data, struct STAT *st, struct dir_data *old_dir) ftw_dir (struct ftw_data *data, struct STRUCT_STAT *st, struct dir_data *old_dir)
{ {
struct dir_data dir; struct dir_data dir;
struct dirent64 *d; struct dirent64 *d;
@ -630,7 +630,7 @@ ftw_startup (const char *dir, int is_nftw, void *func, int descriptors,
int flags) int flags)
{ {
struct ftw_data data; struct ftw_data data;
struct STAT st; struct STRUCT_STAT st;
int result = 0; int result = 0;
int save_err; int save_err;
int cwdfd = -1; int cwdfd = -1;
@ -740,12 +740,12 @@ ftw_startup (const char *dir, int is_nftw, void *func, int descriptors,
name = data.dirbuf; name = data.dirbuf;
if (((flags & FTW_PHYS) if (((flags & FTW_PHYS)
? LXSTAT (_STAT_VER, name, &st) ? LSTAT (name, &st)
: XSTAT (_STAT_VER, name, &st)) < 0) : STAT (name, &st)) < 0)
{ {
if (!(flags & FTW_PHYS) if (!(flags & FTW_PHYS)
&& errno == ENOENT && errno == ENOENT
&& LXSTAT (_STAT_VER, name, &st) == 0 && LSTAT (name, &st) == 0
&& S_ISLNK (st.st_mode)) && S_ISLNK (st.st_mode))
result = (*data.func) (data.dirbuf, &st, data.cvt_arr[FTW_SLN], result = (*data.func) (data.dirbuf, &st, data.cvt_arr[FTW_SLN],
&data.ftw); &data.ftw);

View File

@ -22,10 +22,10 @@
#define NFTW_OLD_NAME __old_nftw64 #define NFTW_OLD_NAME __old_nftw64
#define NFTW_NEW_NAME __new_nftw64 #define NFTW_NEW_NAME __new_nftw64
#define INO_T ino64_t #define INO_T ino64_t
#define STAT stat64 #define STRUCT_STAT stat64
#define LXSTAT __lxstat64 #define LSTAT __lstat64
#define XSTAT __xstat64 #define STAT __stat64
#define FXSTATAT __fxstatat64 #define FSTATAT __fstatat64
#define FTW_FUNC_T __ftw64_func_t #define FTW_FUNC_T __ftw64_func_t
#define NFTW_FUNC_T __nftw64_func_t #define NFTW_FUNC_T __nftw64_func_t

View File

@ -32,8 +32,8 @@ get_current_dir_name (void)
pwd = getenv ("PWD"); pwd = getenv ("PWD");
if (pwd != NULL if (pwd != NULL
&& stat64 (".", &dotstat) == 0 && __stat64 (".", &dotstat) == 0
&& stat64 (pwd, &pwdstat) == 0 && __stat64 (pwd, &pwdstat) == 0
&& pwdstat.st_dev == dotstat.st_dev && pwdstat.st_dev == dotstat.st_dev
&& pwdstat.st_ino == dotstat.st_ino) && pwdstat.st_ino == dotstat.st_ino)
/* The PWD value is correct. Use it. */ /* The PWD value is correct. Use it. */

View File

@ -36,7 +36,7 @@ mkdirat (int fd, const char *path, mode_t mode)
{ {
/* Check FD is associated with a directory. */ /* Check FD is associated with a directory. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return -1; return -1;
if (!S_ISDIR (st.st_mode)) if (!S_ISDIR (st.st_mode))

View File

@ -37,7 +37,7 @@ mkfifoat (int fd, const char *path, mode_t mode)
{ {
/* Check FD is associated with a directory. */ /* Check FD is associated with a directory. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return -1; return -1;
if (!S_ISDIR (st.st_mode)) if (!S_ISDIR (st.st_mode))

View File

@ -42,7 +42,7 @@ __openat (int fd, const char *file, int oflag, ...)
{ {
/* Check FD is associated with a directory. */ /* Check FD is associated with a directory. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return -1; return -1;
if (!S_ISDIR (st.st_mode)) if (!S_ISDIR (st.st_mode))

View File

@ -40,7 +40,7 @@ __openat64 (int fd, const char *file, int oflag, ...)
{ {
/* Check FD is associated with a directory. */ /* Check FD is associated with a directory. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return -1; return -1;
if (!S_ISDIR (st.st_mode)) if (!S_ISDIR (st.st_mode))

View File

@ -44,7 +44,7 @@ __xmknodat (int vers, int fd, const char *path, mode_t mode, dev_t *dev)
{ {
/* Check FD is associated with a directory. */ /* Check FD is associated with a directory. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return -1; return -1;
if (!S_ISDIR (st.st_mode)) if (!S_ISDIR (st.st_mode))

View File

@ -1145,7 +1145,7 @@ libc_hidden_def (_IO_file_seek)
int int
_IO_file_stat (FILE *fp, void *st) _IO_file_stat (FILE *fp, void *st)
{ {
return __fxstat64 (_STAT_VER, fp->_fileno, (struct stat64 *) st); return __fstat64 (fp->_fileno, (struct stat64 *) st);
} }
libc_hidden_def (_IO_file_stat) libc_hidden_def (_IO_file_stat)

View File

@ -207,7 +207,7 @@ _nl_load_locale_from_archive (int category, const char **namep)
/* Cannot open the archive, for whatever reason. */ /* Cannot open the archive, for whatever reason. */
return NULL; return NULL;
if (__fxstat64 (_STAT_VER, fd, &archive_stat) == -1) if (__fstat64 (fd, &archive_stat) == -1)
{ {
/* stat failed, very strange. */ /* stat failed, very strange. */
close_and_out: close_and_out:
@ -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 /* Now verify we think this is really the same archive file
we opened before. If it has been changed we cannot trust we opened before. If it has been changed we cannot trust
the header we read previously. */ the header we read previously. */
if (__fxstat64 (_STAT_VER, fd, &st) < 0 if (__fstat64 (fd, &st) < 0
|| st.st_size != archive_stat.st_size || st.st_size != archive_stat.st_size
|| st.st_mtime != archive_stat.st_mtime || st.st_mtime != archive_stat.st_mtime
|| st.st_dev != archive_stat.st_dev || st.st_dev != archive_stat.st_dev

View File

@ -180,7 +180,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
/* Cannot open the file. */ /* Cannot open the file. */
return; return;
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0) if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
{ {
puntfd: puntfd:
__close_nocancel_nostatus (fd); __close_nocancel_nostatus (fd);
@ -206,7 +206,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
if (__builtin_expect (fd, 0) < 0) if (__builtin_expect (fd, 0) < 0)
return; return;
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0) if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
goto puntfd; goto puntfd;
} }

View File

@ -64,7 +64,7 @@ daemon (int nochdir, int noclose)
struct stat64 st; struct stat64 st;
if ((fd = __open_nocancel(_PATH_DEVNULL, O_RDWR, 0)) != -1 if ((fd = __open_nocancel(_PATH_DEVNULL, O_RDWR, 0)) != -1
&& (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) && (__builtin_expect (__fstat64 (fd, &st), 0)
== 0)) { == 0)) {
if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0 if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0
#if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR #if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR

View File

@ -106,7 +106,7 @@ initshells (void)
strings = NULL; strings = NULL;
if ((fp = fopen(_PATH_SHELLS, "rce")) == NULL) if ((fp = fopen(_PATH_SHELLS, "rce")) == NULL)
goto init_okshells_noclose; goto init_okshells_noclose;
if (fstat64(fileno(fp), &statb) == -1) { if (__fstat64(fileno(fp), &statb) == -1) {
init_okshells: init_okshells:
(void)fclose(fp); (void)fclose(fp);
init_okshells_noclose: init_okshells_noclose:

View File

@ -68,7 +68,7 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
/* Get the information about the file. */ /* Get the information about the file. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) == 0) if (__fstat64 (fd, &st) == 0)
{ {
/* Get the lock. */ /* Get the lock. */
lll_lock (__sem_mappings_lock, LLL_PRIVATE); lll_lock (__sem_mappings_lock, LLL_PRIVATE);

View File

@ -325,7 +325,7 @@ __nscd_get_mapping (request_type type, const char *key,
if (__glibc_unlikely (n == keylen)) if (__glibc_unlikely (n == keylen))
{ {
struct stat64 st; struct stat64 st;
if (__builtin_expect (fstat64 (mapfd, &st) != 0, 0) if (__builtin_expect (__fstat64 (mapfd, &st) != 0, 0)
|| __builtin_expect (st.st_size < sizeof (struct database_pers_head), || __builtin_expect (st.st_size < sizeof (struct database_pers_head),
0)) 0))
goto out_close; goto out_close;

View File

@ -49,12 +49,6 @@
# define readdir(str) __readdir64 (str) # define readdir(str) __readdir64 (str)
# define getpwnam_r(name, bufp, buf, len, res) \ # define getpwnam_r(name, bufp, buf, len, res) \
__getpwnam_r (name, bufp, buf, len, res) __getpwnam_r (name, bufp, buf, len, res)
# ifndef __lstat64
# define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf)
# endif
# ifndef __stat64
# define __stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf)
# endif
# define struct_stat64 struct stat64 # define struct_stat64 struct stat64
# define FLEXIBLE_ARRAY_MEMBER # define FLEXIBLE_ARRAY_MEMBER
# include <shlib-compat.h> # include <shlib-compat.h>
@ -63,7 +57,6 @@
# define __getlogin_r(buf, len) getlogin_r (buf, len) # define __getlogin_r(buf, len) getlogin_r (buf, len)
# define __lstat64(fname, buf) lstat (fname, buf) # define __lstat64(fname, buf) lstat (fname, buf)
# define __stat64(fname, buf) stat (fname, buf) # define __stat64(fname, buf) stat (fname, buf)
# define __fxstatat64(_, d, f, st, flag) fstatat (d, f, st, flag)
# define struct_stat64 struct stat # define struct_stat64 struct stat
# ifndef __MVS__ # ifndef __MVS__
# define __alloca alloca # define __alloca alloca

View File

@ -158,7 +158,7 @@ __realpath (const char *name, char *resolved)
dest = __mempcpy (dest, start, end - start); dest = __mempcpy (dest, start, end - start);
*dest = '\0'; *dest = '\0';
if (__lxstat64 (_STAT_VER, rpath, &st) < 0) if (__lstat64 (rpath, &st) < 0)
goto error; goto error;
if (S_ISLNK (st.st_mode)) if (S_ISLNK (st.st_mode))

View File

@ -32,7 +32,7 @@
#undef stat #undef stat
#define stat stat64 #define stat stat64
#undef __stat #undef __stat
#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) #define __stat(file, buf) __stat64 (file, buf)
#define COMPILE_GLOB64 1 #define COMPILE_GLOB64 1

View File

@ -12,7 +12,7 @@
#undef stat #undef stat
#define stat stat64 #define stat stat64
#undef __stat #undef __stat
#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) #define __stat(file, buf) __stat64 (file, buf)
#define COMPILE_GLOB64 1 #define COMPILE_GLOB64 1

View File

@ -63,7 +63,7 @@ __ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp)
if (stp) if (stp)
{ {
if (__xstat64 (_STAT_VER, peername, stp) < 0) if (__stat64 (peername, stp) < 0)
return errno; return errno;
} }

View File

@ -34,7 +34,7 @@ _dl_get_file_id (int fd, struct r_file_id *id)
{ {
struct stat64 st; struct stat64 st;
if (__glibc_unlikely (__fxstat64 (_STAT_VER, fd, &st) < 0)) if (__glibc_unlikely (__fstat64 (fd, &st) < 0))
return false; return false;
id->dev = st.st_dev; id->dev = st.st_dev;

View File

@ -140,7 +140,7 @@ euidaccess (const char *path, int mode)
return access (path, mode); return access (path, mode);
#endif #endif
if (stat64 (path, &stats)) if (__stat64 (path, &stats))
return -1; return -1;
mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */ mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */

View File

@ -29,7 +29,7 @@ __fdopendir (int fd)
{ {
struct stat64 statbuf; struct stat64 statbuf;
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0) if (__builtin_expect (__fstat64 (fd, &statbuf), 0) < 0)
return NULL; return NULL;
if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode))) if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode)))
{ {

View File

@ -133,7 +133,7 @@ __fpathconf (int fd, int name)
/* AIO is only allowed on regular files and block devices. */ /* AIO is only allowed on regular files and block devices. */
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fd, &st) < 0 if (__fstat64 (fd, &st) < 0
|| (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode))) || (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
return -1; return -1;
else else

View File

@ -1785,7 +1785,7 @@ gaiconf_init (void)
if (fp != NULL) if (fp != NULL)
{ {
struct stat64 st; struct stat64 st;
if (__fxstat64 (_STAT_VER, fileno (fp), &st) != 0) if (__fstat64 (fileno (fp), &st) != 0)
{ {
fclose (fp); fclose (fp);
goto no_file; goto no_file;
@ -2138,7 +2138,7 @@ static void
gaiconf_reload (void) gaiconf_reload (void)
{ {
struct stat64 st; struct stat64 st;
if (__xstat64 (_STAT_VER, GAICONF_FNAME, &st) != 0 if (stat64 (GAICONF_FNAME, &st) != 0
|| !check_gaiconf_mtime (&st)) || !check_gaiconf_mtime (&st))
gaiconf_init (); gaiconf_init ();
} }

View File

@ -29,7 +29,7 @@ isfdtype (int fildes, int fdtype)
{ {
int save_error = errno; int save_error = errno;
result = fstat64 (fildes, &st); result = __fstat64 (fildes, &st);
__set_errno (save_error); __set_errno (save_error);
} }

View File

@ -56,7 +56,7 @@ opendir_tail (int fd)
`stat' call. The S_ISDIR check is superfluous if O_DIRECTORY works, `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. */ but it's cheap and we need the stat call for st_blksize anyway. */
struct stat64 statbuf; struct stat64 statbuf;
if (__glibc_unlikely (__fxstat64 (_STAT_VER, fd, &statbuf) < 0)) if (__glibc_unlikely (__fstat64 (fd, &statbuf) < 0))
goto lose; goto lose;
if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode))) if (__glibc_unlikely (! S_ISDIR (statbuf.st_mode)))
{ {

View File

@ -131,7 +131,7 @@ __pathconf (const char *path, int name)
/* AIO is only allowed on regular files and block devices. */ /* AIO is only allowed on regular files and block devices. */
struct stat64 st; struct stat64 st;
if (__xstat64 (_STAT_VER, path, &st) < 0 if (__stat64 (path, &st) < 0
|| (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode))) || (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
return -1; return -1;
else else

View File

@ -48,7 +48,7 @@ posix_fallocate (int fd, __off_t offset, __off_t len)
} }
/* We have to make sure that this is really a regular file. */ /* We have to make sure that this is really a regular file. */
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return EBADF; return EBADF;
if (S_ISFIFO (st.st_mode)) if (S_ISFIFO (st.st_mode))
return ESPIPE; return ESPIPE;

View File

@ -48,7 +48,7 @@ __posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
} }
/* We have to make sure that this is really a regular file. */ /* We have to make sure that this is really a regular file. */
if (__fxstat64 (_STAT_VER, fd, &st) != 0) if (__fstat64 (fd, &st) != 0)
return EBADF; return EBADF;
if (S_ISFIFO (st.st_mode)) if (S_ISFIFO (st.st_mode))
return ESPIPE; return ESPIPE;

View File

@ -1216,7 +1216,7 @@ __sysconf_check_spec (const char *spec)
spec, speclen + 1); spec, speclen + 1);
struct stat64 st; struct stat64 st;
long int ret = __xstat64 (_STAT_VER, name, &st) >= 0 ? 1 : -1; long int ret = __stat64 (name, &st) >= 0 ? 1 : -1;
__set_errno (save_errno); __set_errno (save_errno);
return ret; return ret;

View File

@ -65,7 +65,6 @@
# define __getpid getpid # define __getpid getpid
# define __mkdir mkdir # define __mkdir mkdir
# define __open open # define __open open
# define __lxstat64(version, file, buf) lstat (file, buf)
# define __secure_getenv secure_getenv # define __secure_getenv secure_getenv
#endif #endif
@ -96,7 +95,7 @@ static int
direxists (const char *dir) direxists (const char *dir)
{ {
struct_stat64 buf; struct_stat64 buf;
return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode); return __stat64 (dir, &buf) == 0 && S_ISDIR (buf.st_mode);
} }
/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is /* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is
@ -251,10 +250,10 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
case __GT_NOCREATE: case __GT_NOCREATE:
/* This case is backward from the other three. __gen_tempname /* This case is backward from the other three. __gen_tempname
succeeds if __xstat fails because the name does not exist. succeeds if lstat fails because the name does not exist.
Note the continue to bypass the common logic at the bottom Note the continue to bypass the common logic at the bottom
of the loop. */ of the loop. */
if (__lxstat64 (_STAT_VER, tmpl, &st) < 0) if (__lstat64 (tmpl, &st) < 0)
{ {
if (errno == ENOENT) if (errno == ENOENT)
{ {

View File

@ -44,7 +44,7 @@ faccessat (int fd, const char *file, int mode, int flag)
return INLINE_SYSCALL (faccessat, 3, fd, file, mode); return INLINE_SYSCALL (faccessat, 3, fd, file, mode);
struct stat64 stats; struct stat64 stats;
if (__fxstatat64 (_STAT_VER, fd, file, &stats, flag & AT_SYMLINK_NOFOLLOW)) if (__fstatat64 (fd, file, &stats, flag & AT_SYMLINK_NOFOLLOW))
return -1; return -1;
mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */ mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */

View File

@ -60,8 +60,8 @@ fexecve (int fd, char *const argv[], char *const envp[])
/* We come here only if the 'execve' call fails. Determine whether /* We come here only if the 'execve' call fails. Determine whether
/proc is mounted. If not we return ENOSYS. */ /proc is mounted. If not we return ENOSYS. */
struct stat st; struct stat64 st;
if (stat ("/proc/self/fd", &st) != 0 && errno == ENOENT) if (__stat64 ("/proc/self/fd", &st) != 0 && errno == ENOENT)
save = ENOSYS; save = ENOSYS;
__set_errno (save); __set_errno (save);

View File

@ -31,7 +31,7 @@ libc_hidden_proto (__old_glob64);
#undef stat #undef stat
#define stat stat64 #define stat stat64
#undef __stat #undef __stat
#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) #define __stat(file, buf) __stat64 (file, buf)
/* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */
#define GLOB_NO_LSTAT #define GLOB_NO_LSTAT

View File

@ -67,7 +67,7 @@ distinguish_extX (const struct statfs *fsbuf, const char *file, int fd)
char path[PATH_MAX]; char path[PATH_MAX];
struct stat64 st; struct stat64 st;
if ((file == NULL ? fstat64 (fd, &st) : stat64 (file, &st)) != 0) if ((file == NULL ? __fstat64 (fd, &st) : __stat64 (file, &st)) != 0)
/* Strange. The statfd call worked, but stat fails. Default to /* Strange. The statfd call worked, but stat fails. Default to
the more pessimistic value. */ the more pessimistic value. */
return EXT2_LINK_MAX; return EXT2_LINK_MAX;
@ -110,7 +110,7 @@ distinguish_extX (const struct statfs *fsbuf, const char *file, int fd)
continue; continue;
struct stat64 fsst; struct stat64 fsst;
if (stat64 (mntbuf.mnt_dir, &fsst) >= 0 if (__stat64 (mntbuf.mnt_dir, &fsst) >= 0
&& st.st_dev == fsst.st_dev) && st.st_dev == fsst.st_dev)
{ {
if (strcmp (mntbuf.mnt_type, "ext4") == 0) if (strcmp (mntbuf.mnt_type, "ext4") == 0)

View File

@ -114,7 +114,7 @@ __ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp)
return ERANGE; return ERANGE;
} }
if (__fxstat64 (_STAT_VER, fd, stp) < 0) if (__fstat64 (fd, stp) < 0)
return errno; return errno;
/* Check if FD really is a master pseudo terminal. */ /* Check if FD really is a master pseudo terminal. */
@ -138,7 +138,7 @@ __ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp)
p[2] = '\0'; p[2] = '\0';
} }
if (__xstat64 (_STAT_VER, buf, stp) < 0) if (__stat64 (buf, stp) < 0)
return errno; return errno;
/* Check if the name we're about to return really corresponds to a /* Check if the name we're about to return really corresponds to a

View File

@ -84,7 +84,7 @@ getttyname (const char *dev, const struct stat64 *mytty, int save, int *dostat)
*((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/'; *((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/';
} }
memcpy (&getttyname_name[devlen], d->d_name, dlen); memcpy (&getttyname_name[devlen], d->d_name, dlen);
if (__xstat64 (_STAT_VER, getttyname_name, &st) == 0 if (__stat64 (getttyname_name, &st) == 0
&& is_mytty (mytty, &st)) && is_mytty (mytty, &st))
{ {
(void) __closedir (dirstream); (void) __closedir (dirstream);
@ -125,7 +125,7 @@ ttyname (int fd)
if (__glibc_unlikely (__tcgetattr (fd, &term) < 0)) if (__glibc_unlikely (__tcgetattr (fd, &term) < 0))
return NULL; return NULL;
if (__fxstat64 (_STAT_VER, fd, &st) < 0) if (__fstat64 (fd, &st) < 0)
return NULL; return NULL;
/* We try using the /proc filesystem. */ /* We try using the /proc filesystem. */
@ -162,14 +162,14 @@ ttyname (int fd)
/* Verify readlink result, fall back on iterating through devices. */ /* Verify readlink result, fall back on iterating through devices. */
if (ttyname_buf[0] == '/' if (ttyname_buf[0] == '/'
&& __xstat64 (_STAT_VER, ttyname_buf, &st1) == 0 && __stat64 (ttyname_buf, &st1) == 0
&& is_mytty (&st, &st1)) && is_mytty (&st, &st1))
return ttyname_buf; return ttyname_buf;
doispty = 1; doispty = 1;
} }
if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode)) if (__stat64 ("/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
{ {
name = getttyname ("/dev/pts", &st, save, &dostat); name = getttyname ("/dev/pts", &st, save, &dostat);
} }

View File

@ -71,7 +71,7 @@ getttyname_r (char *buf, size_t buflen, const struct stat64 *mytty,
cp = __stpncpy (buf + devlen, d->d_name, needed); cp = __stpncpy (buf + devlen, d->d_name, needed);
cp[0] = '\0'; cp[0] = '\0';
if (__xstat64 (_STAT_VER, buf, &st) == 0 if (__stat64 (buf, &st) == 0
&& is_mytty (mytty, &st)) && is_mytty (mytty, &st))
{ {
(void) __closedir (dirstream); (void) __closedir (dirstream);
@ -118,7 +118,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
if (__glibc_unlikely (__tcgetattr (fd, &term) < 0)) if (__glibc_unlikely (__tcgetattr (fd, &term) < 0))
return errno; return errno;
if (__fxstat64 (_STAT_VER, fd, &st) < 0) if (__fstat64 (fd, &st) < 0)
return errno; return errno;
/* We try using the /proc filesystem. */ /* We try using the /proc filesystem. */
@ -146,7 +146,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
/* Verify readlink result, fall back on iterating through devices. */ /* Verify readlink result, fall back on iterating through devices. */
if (buf[0] == '/' if (buf[0] == '/'
&& __xstat64 (_STAT_VER, buf, &st1) == 0 && __stat64 (buf, &st1) == 0
&& is_mytty (&st, &st1)) && is_mytty (&st, &st1))
return 0; return 0;
@ -157,7 +157,7 @@ __ttyname_r (int fd, char *buf, size_t buflen)
memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/")); memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
buflen -= sizeof ("/dev/pts/") - 1; buflen -= sizeof ("/dev/pts/") - 1;
if (__xstat64 (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode)) if (__stat64 (buf, &st1) == 0 && S_ISDIR (st1.st_mode))
{ {
ret = getttyname_r (buf, buflen, &st, save, ret = getttyname_r (buf, buflen, &st, save,
&dostat); &dostat);

View File

@ -25,7 +25,7 @@ ftok (const char *pathname, int proj_id)
struct stat64 st; struct stat64 st;
key_t key; key_t key;
if (__xstat64 (_STAT_VER, pathname, &st) < 0) if (__stat64 (pathname, &st) < 0)
return (key_t) -1; return (key_t) -1;
key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16)

View File

@ -121,7 +121,7 @@ __getdate_r (const char *string, struct tm *tp)
if (datemsk == NULL || *datemsk == '\0') if (datemsk == NULL || *datemsk == '\0')
return 1; return 1;
if (stat64 (datemsk, &st) < 0) if (__stat64 (datemsk, &st) < 0)
return 3; return 3;
if (!S_ISREG (st.st_mode)) if (!S_ISREG (st.st_mode))

View File

@ -152,7 +152,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
/* If we were already using tzfile, check whether the file changed. */ /* If we were already using tzfile, check whether the file changed. */
struct stat64 st; struct stat64 st;
if (was_using_tzfile if (was_using_tzfile
&& stat64 (file, &st) == 0 && __stat64 (file, &st) == 0
&& tzfile_ino == st.st_ino && tzfile_dev == st.st_dev && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev
&& tzfile_mtime == st.st_mtime) && tzfile_mtime == st.st_mtime)
goto done; /* Nothing to do. */ goto done; /* Nothing to do. */
@ -164,7 +164,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
goto ret_free_transitions; goto ret_free_transitions;
/* Get information about the file we are actually using. */ /* Get information about the file we are actually using. */
if (fstat64 (__fileno (f), &st) != 0) if (__fstat64 (__fileno (f), &st) != 0)
goto lose; goto lose;
free ((void *) transitions); free ((void *) transitions);