aboutsummaryrefslogtreecommitdiff
path: root/io
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-10-23 16:40:06 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-12-29 16:44:05 -0300
commit4d97cc8cf3da925fd06fc37d4daebafce3247719 (patch)
treea8f43be6e51ce7e87c773622403f742dc55a387e /io
parentfree: preserve errno [BZ#17924] (diff)
downloadglibc-4d97cc8cf3da925fd06fc37d4daebafce3247719.tar.gz
glibc-4d97cc8cf3da925fd06fc37d4daebafce3247719.tar.bz2
glibc-4d97cc8cf3da925fd06fc37d4daebafce3247719.zip
io: Remove xstat implementations
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>
Diffstat (limited to 'io')
-rw-r--r--io/Makefile3
-rw-r--r--io/fstat.c3
-rw-r--r--io/fstat64.c3
-rw-r--r--io/fstatat.c18
-rw-r--r--io/fstatat64.c18
-rw-r--r--io/fxstat.c48
-rw-r--r--io/fxstat64.c47
-rw-r--r--io/fxstatat.c48
-rw-r--r--io/fxstatat64.c49
-rw-r--r--io/lstat.c3
-rw-r--r--io/lstat64.c3
-rw-r--r--io/lxstat.c26
-rw-r--r--io/lxstat64.c30
-rw-r--r--io/stat.c3
-rw-r--r--io/stat64.c3
-rw-r--r--io/xstat.c37
-rw-r--r--io/xstat64.c36
17 files changed, 39 insertions, 339 deletions
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)