Message ID | 20201202193938.2345469-1-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | [1/2] io: Remove xstat implementations | expand |
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 >
Hi Adhemerval, > 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 > > Reviewed-by: Lukasz Majewski <lukma@denx.de> Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
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