[PATCH 1/2] io: Remove xstat implementations
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Dec 28 19:10:09 GMT 2020
If no one opposes it, I will commit this.
On 02/12/2020 16:39, Adhemerval Zanella wrote:
> With xstat wrapper functions removed (8ed005daf0), the stat functions
> are now properly exported, and version is done using symbols versioning
> instead of the extra _STAT_* argument.
> ---
> io/Makefile | 3 +-
> io/fstat.c | 3 +-
> io/fstat64.c | 3 +-
> io/fstatat.c | 18 ++++++++++--
> io/fstatat64.c | 18 ++++++++++--
> io/fxstat.c | 48 -------------------------------
> io/fxstat64.c | 47 ------------------------------
> io/fxstatat.c | 48 -------------------------------
> io/fxstatat64.c | 49 --------------------------------
> io/lstat.c | 3 +-
> io/lstat64.c | 3 +-
> io/lxstat.c | 26 -----------------
> io/lxstat64.c | 30 -------------------
> io/stat.c | 3 +-
> io/stat64.c | 3 +-
> io/xstat.c | 37 ------------------------
> io/xstat64.c | 36 -----------------------
> sysdeps/mach/hurd/Makefile | 4 ++-
> sysdeps/unix/sysv/linux/Makefile | 4 ++-
> 19 files changed, 45 insertions(+), 341 deletions(-)
> delete mode 100644 io/fxstat.c
> delete mode 100644 io/fxstat64.c
> delete mode 100644 io/fxstatat.c
> delete mode 100644 io/fxstatat64.c
> delete mode 100644 io/lxstat.c
> delete mode 100644 io/lxstat64.c
> delete mode 100644 io/xstat.c
> delete mode 100644 io/xstat64.c
>
> diff --git a/io/Makefile b/io/Makefile
> index 33f5b0b867..887a989c03 100644
> --- a/io/Makefile
> +++ b/io/Makefile
> @@ -33,9 +33,8 @@ routines := \
> utime \
> mkfifo mkfifoat \
> stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64 \
> - xstat fxstat lxstat xstat64 fxstat64 lxstat64 statx \
> + statx \
> mknod mknodat xmknod xmknodat \
> - fxstatat fxstatat64 \
> statfs fstatfs statfs64 fstatfs64 \
> statvfs fstatvfs statvfs64 fstatvfs64 \
> umask chmod fchmod lchmod fchmodat \
> diff --git a/io/fstat.c b/io/fstat.c
> index c392ebe35b..065e6f8f68 100644
> --- a/io/fstat.c
> +++ b/io/fstat.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __fstat
> int
> __fstat (int fd, struct stat *buf)
> {
> - return __fxstat (_STAT_VER, fd, buf);
> + return __fstatat (fd, "", buf, AT_EMPTY_PATH);
> }
>
> weak_alias (__fstat, fstat)
> diff --git a/io/fstat64.c b/io/fstat64.c
> index 8f9a6a4ad0..505123ee0e 100644
> --- a/io/fstat64.c
> +++ b/io/fstat64.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __fstat64
> int
> __fstat64 (int fd, struct stat64 *buf)
> {
> - return __fxstat64 (_STAT_VER, fd, buf);
> + return __fstatat64 (fd, "", buf, AT_EMPTY_PATH);
> }
> hidden_def (__fstat64)
> weak_alias (__fstat64, fstat64)
> diff --git a/io/fstatat.c b/io/fstatat.c
> index 19242b7d5d..07f4afb996 100644
> --- a/io/fstatat.c
> +++ b/io/fstatat.c
> @@ -16,12 +16,26 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sys/stat.h>
> +#include <errno.h>
>
> -#undef __fstatat
> int
> __fstatat (int fd, const char *file, struct stat *buf, int flag)
> {
> - return __fxstatat (_STAT_VER, fd, file, buf, flag);
> + if (fd < 0 && fd != AT_FDCWD)
> + {
> + __set_errno (EBADF);
> + return -1;
> + }
> + if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
> + {
> + __set_errno (EINVAL);
> + return -1;
> + }
> +
> + __set_errno (ENOSYS);
> + return -1;
> }
>
> weak_alias (__fstatat, fstatat)
> +
> +stub_warning (fstatat)
> diff --git a/io/fstatat64.c b/io/fstatat64.c
> index 0e0312fd19..3b5a7528b7 100644
> --- a/io/fstatat64.c
> +++ b/io/fstatat64.c
> @@ -16,12 +16,26 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sys/stat.h>
> +#include <errno.h>
>
> -#undef __fstatat64
> int
> __fstatat64 (int fd, const char *file, struct stat64 *buf, int flag)
> {
> - return __fxstatat64 (_STAT_VER, fd, file, buf, flag);
> + if (fd < 0 && fd != AT_FDCWD)
> + {
> + __set_errno (EBADF);
> + return -1;
> + }
> + if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
> + {
> + __set_errno (EINVAL);
> + return -1;
> + }
> +
> + __set_errno (ENOSYS);
> + return -1;
> }
> hidden_def (__fstatat64)
> weak_alias (__fstatat64, fstatat64)
> +
> +stub_warning (fstatat64)
> diff --git a/io/fxstat.c b/io/fxstat.c
> deleted file mode 100644
> index 2ebb34c0be..0000000000
> --- a/io/fxstat.c
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <stddef.h>
> -#include <sys/stat.h>
> -
> -/* Get information about the file descriptor FD in BUF. */
> -int
> -__fxstat (int vers, int fd, struct stat *buf)
> -{
> - if (vers != _STAT_VER)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - if (fd < 0)
> - {
> - __set_errno (EBADF);
> - return -1;
> - }
> - else if (buf == NULL)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -stub_warning (fstat)
> -hidden_def (__fxstat)
> -weak_alias (__fxstat, _fxstat)
> diff --git a/io/fxstat64.c b/io/fxstat64.c
> deleted file mode 100644
> index 6059ed0ee3..0000000000
> --- a/io/fxstat64.c
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <stddef.h>
> -#include <sys/stat.h>
> -
> -/* Get information about the file descriptor FD in BUF. */
> -int
> -__fxstat64 (int vers, int fd, struct stat64 *buf)
> -{
> - if (vers != _STAT_VER)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - if (fd < 0)
> - {
> - __set_errno (EBADF);
> - return -1;
> - }
> - else if (buf == NULL)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -hidden_def (__fxstat64)
> -stub_warning (fstat64)
> diff --git a/io/fxstatat.c b/io/fxstatat.c
> deleted file mode 100644
> index aac9d31143..0000000000
> --- a/io/fxstatat.c
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <fcntl.h>
> -#include <stddef.h>
> -#include <sys/stat.h>
> -
> -/* Get information about the file descriptor FD in BUF. */
> -int
> -__fxstatat (int vers, int fd, const char *filename, struct stat *buf, int flag)
> -{
> - if (vers != _STAT_VER)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - if (fd < 0 && fd != AT_FDCWD)
> - {
> - __set_errno (EBADF);
> - return -1;
> - }
> - if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -libc_hidden_def (__fxstatat)
> -stub_warning (fstatat)
> diff --git a/io/fxstatat64.c b/io/fxstatat64.c
> deleted file mode 100644
> index 5e3aa382c4..0000000000
> --- a/io/fxstatat64.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <fcntl.h>
> -#include <stddef.h>
> -#include <sys/stat.h>
> -
> -/* Get information about the file descriptor FD in BUF. */
> -int
> -__fxstatat64 (int vers, int fd, const char *filename, struct stat64 *buf,
> - int flag)
> -{
> - if (vers != _STAT_VER)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - if (fd < 0 && fd != AT_FDCWD)
> - {
> - __set_errno (EBADF);
> - return -1;
> - }
> - if (buf == NULL || (flag & ~AT_SYMLINK_NOFOLLOW) != 0)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -libc_hidden_def (__fxstatat64)
> -stub_warning (fstatat64)
> diff --git a/io/lstat.c b/io/lstat.c
> index bdd60bedb6..abb4a14831 100644
> --- a/io/lstat.c
> +++ b/io/lstat.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __lstat
> int
> __lstat (const char *file, struct stat *buf)
> {
> - return __lxstat (_STAT_VER, file, buf);
> + return __fstatat (AT_FDCWD, file, buf, AT_SYMLINK_NOFOLLOW);
> }
>
> weak_alias (__lstat, lstat)
> diff --git a/io/lstat64.c b/io/lstat64.c
> index 0e571f6075..d244e793b2 100644
> --- a/io/lstat64.c
> +++ b/io/lstat64.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __lstat64
> int
> __lstat64 (const char *file, struct stat64 *buf)
> {
> - return __lxstat64 (_STAT_VER, file, buf);
> + return __fstatat64 (AT_FDCWD, file, buf, AT_SYMLINK_NOFOLLOW);
> }
> hidden_def (__lstat64)
> weak_alias (__lstat64, lstat64)
> diff --git a/io/lxstat.c b/io/lxstat.c
> deleted file mode 100644
> index e38336e674..0000000000
> --- a/io/lxstat.c
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <sys/stat.h>
> -
> -int
> -__lxstat (int version, const char *file, struct stat *buf)
> -{
> - return __xstat (version, file, buf);
> -}
> -hidden_def (__lxstat)
> -weak_alias (__lxstat, _lxstat)
> diff --git a/io/lxstat64.c b/io/lxstat64.c
> deleted file mode 100644
> index 97dae35efe..0000000000
> --- a/io/lxstat64.c
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* lxstat64 -- get file metadata, not following symlinks. Stub version.
> - Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <stddef.h>
> -#include <sys/stat.h>
> -
> -/* Get file information about FILE in BUF.
> - If FILE is a symbolic link, do not follow it. */
> -int
> -__lxstat64 (int vers, const char *file, struct stat64 *buf)
> -{
> - return __xstat64 (vers, file, buf);
> -}
> -hidden_def (__lxstat64)
> diff --git a/io/stat.c b/io/stat.c
> index 78dbfb3b8f..9c0a8b0baf 100644
> --- a/io/stat.c
> +++ b/io/stat.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __stat
> int
> __stat (const char *file, struct stat *buf)
> {
> - return __xstat (_STAT_VER, file, buf);
> + return __fstatat (AT_FDCWD, file, buf, 0);
> }
>
> weak_alias (__stat, stat)
> diff --git a/io/stat64.c b/io/stat64.c
> index 102dcc5d5a..ea47e13754 100644
> --- a/io/stat64.c
> +++ b/io/stat64.c
> @@ -17,11 +17,10 @@
>
> #include <sys/stat.h>
>
> -#undef __stat64
> int
> __stat64 (const char *file, struct stat64 *buf)
> {
> - return __xstat64 (_STAT_VER, file, buf);
> + return __fstatat64 (AT_FDCWD, file, buf, 0);
> }
> hidden_def (__stat64)
> weak_alias (__stat64, stat64)
> diff --git a/io/xstat.c b/io/xstat.c
> deleted file mode 100644
> index 25edcf8b45..0000000000
> --- a/io/xstat.c
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <sys/stat.h>
> -#include <stddef.h>
> -
> -/* Get file information about FILE in BUF. */
> -int
> -__xstat (int vers, const char *file, struct stat *buf)
> -{
> - if (vers != _STAT_VER || file == NULL || buf == NULL)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -hidden_def (__xstat)
> -stub_warning (stat)
> -weak_alias (__xstat, _xstat)
> diff --git a/io/xstat64.c b/io/xstat64.c
> deleted file mode 100644
> index 898b574ee5..0000000000
> --- a/io/xstat64.c
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library 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
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -#include <errno.h>
> -#include <sys/stat.h>
> -#include <stddef.h>
> -
> -/* Get file information about FILE in BUF. */
> -int
> -__xstat64 (int vers, const char *file, struct stat64 *buf)
> -{
> - if (vers != _STAT_VER || file == NULL || buf == NULL)
> - {
> - __set_errno (EINVAL);
> - return -1;
> - }
> -
> - __set_errno (ENOSYS);
> - return -1;
> -}
> -hidden_def (__xstat64)
> -stub_warning (stat64)
> diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
> index 9c53db3783..571277cf7f 100644
> --- a/sysdeps/mach/hurd/Makefile
> +++ b/sysdeps/mach/hurd/Makefile
> @@ -199,7 +199,9 @@ ifeq (io, $(subdir))
> sysdep_routines += f_setlk close_nocancel close_nocancel_nostatus \
> fcntl_nocancel open_nocancel openat_nocancel read_nocancel \
> pread64_nocancel write_nocancel pwrite64_nocancel \
> - wait4_nocancel
> + wait4_nocancel \
> + xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
> + fxstatat fxstatat64
> endif
>
> ifeq (misc, $(subdir))
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 09604e128b..899b6c9c77 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -61,7 +61,9 @@ sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
> open_by_handle_at mlock2 pkey_mprotect pkey_set pkey_get \
> timerfd_gettime timerfd_settime prctl \
> process_vm_readv process_vm_writev clock_adjtime \
> - time64-support pselect32
> + time64-support pselect32 \
> + xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
> + fxstatat fxstatat64
>
> CFLAGS-gethostid.c = -fexceptions
> CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
>
More information about the Libc-alpha
mailing list