|
Message-Id: <20200903112309.102601-6-sorear@fastmail.com> Date: Thu, 3 Sep 2020 07:23:00 -0400 From: Stefan O'Rear <sorear@...tmail.com> To: musl@...ts.openwall.com Cc: Stefan O'Rear <sorear@...tmail.com> Subject: [PATCH 05/14] Add src/internal/statx.h We need to make internal syscalls to SYS_statx when SYS_fstatat is not available without changing the musl API. --- src/internal/statx.h | 28 ++++++++++++++++++++++++++++ src/stat/fstatat.c | 28 ++-------------------------- 2 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 src/internal/statx.h diff --git a/src/internal/statx.h b/src/internal/statx.h new file mode 100644 index 00000000..46b16f62 --- /dev/null +++ b/src/internal/statx.h @@ -0,0 +1,28 @@ +struct statx { + uint32_t stx_mask; + uint32_t stx_blksize; + uint64_t stx_attributes; + uint32_t stx_nlink; + uint32_t stx_uid; + uint32_t stx_gid; + uint16_t stx_mode; + uint16_t pad1; + uint64_t stx_ino; + uint64_t stx_size; + uint64_t stx_blocks; + uint64_t stx_attributes_mask; + struct { + int64_t tv_sec; + uint32_t tv_nsec; + int32_t pad; + } stx_atime, stx_btime, stx_ctime, stx_mtime; + uint32_t stx_rdev_major; + uint32_t stx_rdev_minor; + uint32_t stx_dev_major; + uint32_t stx_dev_minor; + uint64_t spare[14]; +}; + +#define STATX_TYPE 0x001U +#define STATX_SIZE 0x200U +#define STATX_BASIC_STATS 0x7ffU diff --git a/src/stat/fstatat.c b/src/stat/fstatat.c index de165b5c..230a83fc 100644 --- a/src/stat/fstatat.c +++ b/src/stat/fstatat.c @@ -7,37 +7,13 @@ #include <sys/sysmacros.h> #include "syscall.h" #include "kstat.h" - -struct statx { - uint32_t stx_mask; - uint32_t stx_blksize; - uint64_t stx_attributes; - uint32_t stx_nlink; - uint32_t stx_uid; - uint32_t stx_gid; - uint16_t stx_mode; - uint16_t pad1; - uint64_t stx_ino; - uint64_t stx_size; - uint64_t stx_blocks; - uint64_t stx_attributes_mask; - struct { - int64_t tv_sec; - uint32_t tv_nsec; - int32_t pad; - } stx_atime, stx_btime, stx_ctime, stx_mtime; - uint32_t stx_rdev_major; - uint32_t stx_rdev_minor; - uint32_t stx_dev_major; - uint32_t stx_dev_minor; - uint64_t spare[14]; -}; +#include "statx.h" static int fstatat_statx(int fd, const char *restrict path, struct stat *restrict st, int flag) { struct statx stx; - int ret = __syscall(SYS_statx, fd, path, flag, 0x7ff, &stx); + int ret = __syscall(SYS_statx, fd, path, flag, STATX_BASIC_STATS, &stx); if (ret) return ret; *st = (struct stat){ -- 2.25.4
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.