mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 05:20:06 +00:00
d552058570
This is clever, but it confuses downstream detection in at least zstd and GNOME's glib. zstd has preprocessor tests for the 'st_mtime' macro, which is not provided by the path using the anonymous union; glib checks for the presence of 'st_mtimensec' in struct stat but then tries to access that field in struct statx (which might be a bug on its own). Checked with a build for alpha-linux-gnu.
92 lines
2.1 KiB
C
92 lines
2.1 KiB
C
/* Definition of `struct stat' used in the kernel. */
|
|
struct kernel_stat
|
|
{
|
|
unsigned int st_dev;
|
|
unsigned int st_ino;
|
|
unsigned int st_mode;
|
|
unsigned int st_nlink;
|
|
unsigned int st_uid;
|
|
unsigned int st_gid;
|
|
unsigned int st_rdev;
|
|
long int st_size;
|
|
unsigned long int st_atime_sec;
|
|
unsigned long int st_mtime_sec;
|
|
unsigned long int st_ctime_sec;
|
|
unsigned int st_blksize;
|
|
int st_blocks;
|
|
unsigned int st_flags;
|
|
unsigned int st_gen;
|
|
};
|
|
|
|
/* Definition of `struct stat64' used in the kernel. */
|
|
struct kernel_stat64
|
|
{
|
|
unsigned long st_dev;
|
|
unsigned long st_ino;
|
|
unsigned long st_rdev;
|
|
long st_size;
|
|
unsigned long st_blocks;
|
|
|
|
unsigned int st_mode;
|
|
unsigned int st_uid;
|
|
unsigned int st_gid;
|
|
unsigned int st_blksize;
|
|
unsigned int st_nlink;
|
|
unsigned int __pad0;
|
|
|
|
unsigned long st_atime_sec;
|
|
unsigned long st_atimensec;
|
|
unsigned long st_mtime_sec;
|
|
unsigned long st_mtimensec;
|
|
unsigned long st_ctime_sec;
|
|
unsigned long st_ctimensec;
|
|
long __glibc_reserved[3];
|
|
};
|
|
|
|
/* Definition of `struct stat' used by glibc 2.0. */
|
|
struct glibc2_stat
|
|
{
|
|
__dev_t st_dev;
|
|
__ino_t st_ino;
|
|
__mode_t st_mode;
|
|
__nlink_t st_nlink;
|
|
__uid_t st_uid;
|
|
__gid_t st_gid;
|
|
__dev_t st_rdev;
|
|
__off_t st_size;
|
|
__time_t st_atime_sec;
|
|
__time_t st_mtime_sec;
|
|
__time_t st_ctime_sec;
|
|
unsigned int st_blksize;
|
|
int st_blocks;
|
|
unsigned int st_flags;
|
|
unsigned int st_gen;
|
|
};
|
|
|
|
/* Definition of `struct stat' used by glibc 2.1. */
|
|
struct glibc21_stat
|
|
{
|
|
__dev_t st_dev;
|
|
__ino64_t st_ino;
|
|
__mode_t st_mode;
|
|
__nlink_t st_nlink;
|
|
__uid_t st_uid;
|
|
__gid_t st_gid;
|
|
__dev_t st_rdev;
|
|
__off_t st_size;
|
|
__time_t st_atime_sec;
|
|
__time_t st_mtime_sec;
|
|
__time_t st_ctime_sec;
|
|
__blkcnt64_t st_blocks;
|
|
__blksize_t st_blksize;
|
|
unsigned int st_flags;
|
|
unsigned int st_gen;
|
|
int __pad3;
|
|
long __glibc_reserved[4];
|
|
};
|
|
|
|
#define STAT_IS_KERNEL_STAT 0
|
|
#define STAT64_IS_KERNEL_STAT64 1
|
|
#define XSTAT_IS_XSTAT64 1
|
|
#define STATFS_IS_STATFS64 0
|