From cb49899215078a33462f878178fa42141cea5b8d Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Sat, 29 Oct 2022 16:38:07 +0200 Subject: [PATCH] squash! stat --- include/linux/arm/kernel-stat.h | 83 +++++++++++++++++++++++++++++++++ include/linux/x86/kernel-stat.h | 19 ++++++-- include/sys/stat.h | 1 - lib/linux/fstat.c | 5 -- lib/linux/lstat.c | 5 -- 5 files changed, 97 insertions(+), 16 deletions(-) create mode 100644 include/linux/arm/kernel-stat.h diff --git a/include/linux/arm/kernel-stat.h b/include/linux/arm/kernel-stat.h new file mode 100644 index 00000000..ff932b4b --- /dev/null +++ b/include/linux/arm/kernel-stat.h @@ -0,0 +1,83 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2017,2022 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ +#ifndef __MES_LINUX_ARM_KERNEL_STAT_H +#define __MES_LINUX_ARM_KERNEL_STAT_H 1 + +// https://github.com/torvalds/linux/blob/master/arch/arm/include/uapi/asm/stat.h + +#include + +// *INDENT-OFF* +struct stat +{ + unsigned long st_dev; + unsigned long st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned long st_rdev; + unsigned long st_size; + unsigned long st_blksize; + unsigned long st_blocks; + unsigned long st_atime; + unsigned long st_atime_usec; + unsigned long st_mtime; + unsigned long st_mtime_usec; + unsigned long st_ctime; + unsigned long st_ctime_usec; + unsigned long __pad0; + unsigned long __pad1; +}; +#if HAVE_LONG_LONG +struct stat64 +{ + unsigned long long st_dev; + unsigned char __pad0[4]; + unsigned long __st_ino; + unsigned int st_mode; + unsigned int st_nlink; + unsigned long st_uid; + unsigned long st_gid; + unsigned long long st_rdev; + unsigned char __pad3[4]; + long long st_size; + unsigned long st_blksize; + unsigned long long st_blocks; + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; + unsigned int st_mtime_nsec; + unsigned long st_ctime; + unsigned long st_ctime_nsec; + unsigned long long st_ino; +}; + +#define stat stat64 +#undef SYS_stat +#define SYS_stat SYS_stat64 +#undef SYS_lstat +#define SYS_lstat SYS_lstat64 +#undef SYS_fstat +#define SYS_fstat SYS_fstat64 + +#endif // HAVE_LONG_LONG + +#endif // __MES_LINUX_ARM_KERNEL_STAT_H diff --git a/include/linux/x86/kernel-stat.h b/include/linux/x86/kernel-stat.h index 0231f250..715020fa 100644 --- a/include/linux/x86/kernel-stat.h +++ b/include/linux/x86/kernel-stat.h @@ -22,8 +22,9 @@ // https://github.com/torvalds/linux/blob/master/arch/x86/include/uapi/asm/stat.h +#include + // *INDENT-OFF* -#if !SYS_stat64 || !HAVE_LONG_LONG struct stat { unsigned long st_dev; @@ -45,9 +46,8 @@ struct stat unsigned long __pad0; unsigned long __pad1; }; -#else // ! (!SYS_stat64 || !HAVE_LONG_LONG) -// struct stat64 -struct stat +#if HAVE_LONG_LONG +struct stat64 { unsigned long long st_dev; unsigned char __pad0[4]; @@ -69,6 +69,15 @@ struct stat unsigned long st_ctime_nsec; unsigned long long st_ino; }; -#endif // ! (!SYS_stat64 || !HAVE_LONG_LONG) + +#define stat stat64 +#undef SYS_stat +#define SYS_stat SYS_stat64 +#undef SYS_lstat +#define SYS_lstat SYS_lstat64 +#undef SYS_fstat +#define SYS_fstat SYS_fstat64 + +#endif // HAVE_LONG_LONG #endif // __MES_LINUX_X86_KERNEL_STAT_H diff --git a/include/sys/stat.h b/include/sys/stat.h index 59ba513d..b93cc4e4 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -29,7 +29,6 @@ #include #include -#include #include #ifndef __MES_MODE_T diff --git a/lib/linux/fstat.c b/lib/linux/fstat.c index b6a4ff3b..7e7e79e4 100644 --- a/lib/linux/fstat.c +++ b/lib/linux/fstat.c @@ -22,11 +22,6 @@ #include #include -#if (__i386__ || __arm__) && SYS_fstat64 && HAVE_LONG_LONG -#undef SYS_fstat -#define SYS_fstat SYS_fstat64 -#endif - int fstat (int filedes, struct stat *statbuf) { diff --git a/lib/linux/lstat.c b/lib/linux/lstat.c index f929cee8..2914eb6f 100644 --- a/lib/linux/lstat.c +++ b/lib/linux/lstat.c @@ -22,11 +22,6 @@ #include #include -#if (__i386__ || __arm__) && SYS_lstat64 && HAVE_LONG_LONG -#undef SYS_lstat -#define SYS_lstat SYS_lstat64 -#endif - int lstat (char const *file_name, struct stat *statbuf) {