io: Remove xstat implementations
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 23 Oct 2020 19:40:06 +0000 (16:40 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 29 Dec 2020 19:44:05 +0000 (16:44 -0300)
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.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
19 files changed:
io/Makefile
io/fstat.c
io/fstat64.c
io/fstatat.c
io/fstatat64.c
io/fxstat.c [deleted file]
io/fxstat64.c [deleted file]
io/fxstatat.c [deleted file]
io/fxstatat64.c [deleted file]
io/lstat.c
io/lstat64.c
io/lxstat.c [deleted file]
io/lxstat64.c [deleted file]
io/stat.c
io/stat64.c
io/xstat.c [deleted file]
io/xstat64.c [deleted file]
sysdeps/mach/hurd/Makefile
sysdeps/unix/sysv/linux/Makefile

index 33f5b0b..887a989 100644 (file)
@@ -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                              \
index c392ebe..065e6f8 100644 (file)
 
 #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)
index 8f9a6a4..505123e 100644 (file)
 
 #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)
index 19242b7..07f4afb 100644 (file)
    <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)
index 0e0312f..3b5a752 100644 (file)
    <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 (file)
index 2ebb34c..0000000
+++ /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 (file)
index 6059ed0..0000000
+++ /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 (file)
index aac9d31..0000000
+++ /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 (file)
index 5e3aa38..0000000
+++ /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)
index bdd60be..abb4a14 100644 (file)
 
 #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)
index 0e571f6..d244e79 100644 (file)
 
 #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 (file)
index e38336e..0000000
+++ /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 (file)
index 97dae35..0000000
+++ /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)
index 78dbfb3..9c0a8b0 100644 (file)
--- a/io/stat.c
+++ b/io/stat.c
 
 #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)
index 102dcc5..ea47e13 100644 (file)
 
 #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 (file)
index 25edcf8..0000000
+++ /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 (file)
index 898b574..0000000
+++ /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)
index 9c53db3..571277c 100644 (file)
@@ -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))
index 09604e1..899b6c9 100644 (file)
@@ -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