aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-10-26 08:58:01 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-12-29 16:44:16 -0300
commit99468ed45f5a58f584bab60364af937eb6f8afda (patch)
treec4f743f79860cbee8dd9ff5ec19cd46edb5edcc1
parent4d97cc8cf3da925fd06fc37d4daebafce3247719 (diff)
downloadglibc-99468ed45f5a58f584bab60364af937eb6f8afda.zip
glibc-99468ed45f5a58f584bab60364af937eb6f8afda.tar.gz
glibc-99468ed45f5a58f584bab60364af937eb6f8afda.tar.bz2
io: Remove xmknod{at} implementations
With xmknod wrapper functions removed (589260cef8), the mknod functions are now properly exported, and version is done using symbols versioning instead of the extra _MKNOD_* argument. It also allows us to consolidate Linux and Hurd mknod implementation. Reviewed-by: Lukasz Majewski <lukma@denx.de>
-rw-r--r--io/Makefile2
-rw-r--r--io/mknod.c4
-rw-r--r--io/mknodat.c5
-rw-r--r--io/xmknod.c40
-rw-r--r--io/xmknodat.c62
-rw-r--r--sysdeps/mach/hurd/Makefile1
-rw-r--r--sysdeps/mach/hurd/mknod.c31
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/unix/sysv/linux/mknod.c28
9 files changed, 10 insertions, 166 deletions
diff --git a/io/Makefile b/io/Makefile
index 887a989..d3d0dcf 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -34,7 +34,7 @@ routines := \
mkfifo mkfifoat \
stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64 \
statx \
- mknod mknodat xmknod xmknodat \
+ mknod mknodat \
statfs fstatfs statfs64 fstatfs64 \
statvfs fstatvfs statvfs64 fstatvfs64 \
umask chmod fchmod lchmod fchmodat \
diff --git a/io/mknod.c b/io/mknod.c
index 9eb4a2a..22566b2 100644
--- a/io/mknod.c
+++ b/io/mknod.c
@@ -15,13 +15,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <sys/types.h>
#include <sys/stat.h>
+#include <fcntl.h>
int
__mknod (const char *path, mode_t mode, dev_t dev)
{
- return __xmknod (_MKNOD_VER, path, mode, &dev);
+ return __mknodat (AT_FDCWD, path, mode, dev);
}
libc_hidden_def (__mknod)
weak_alias (__mknod, mknod)
diff --git a/io/mknodat.c b/io/mknodat.c
index 63a8068..cf491f9 100644
--- a/io/mknodat.c
+++ b/io/mknodat.c
@@ -21,7 +21,10 @@
int
__mknodat (int fd, const char *path, mode_t mode, dev_t dev)
{
- return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
+ __set_errno (ENOSYS);
+ return -1;
}
libc_hidden_def (__mknodat)
weak_alias (__mknodat, mknodat)
+
+stub_warning (mknodat)
diff --git a/io/xmknod.c b/io/xmknod.c
deleted file mode 100644
index 832dbf7..0000000
--- a/io/xmknod.c
+++ /dev/null
@@ -1,40 +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/types.h>
-#include <sys/stat.h>
-
-/* Create a device file named PATH, with permission and special bits MODE
- and device number DEV (which can be constructed from major and minor
- device numbers with the `makedev' macro above). */
-int
-__xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
-{
- if (vers != _MKNOD_VER)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- __set_errno (ENOSYS);
- return -1;
-}
-stub_warning (__xmknod)
-
-weak_alias (__xmknod, _xmknod)
-libc_hidden_def (__xmknod)
diff --git a/io/xmknodat.c b/io/xmknodat.c
deleted file mode 100644
index b6c6681..0000000
--- a/io/xmknodat.c
+++ /dev/null
@@ -1,62 +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/types.h>
-#include <sys/stat.h>
-
-/* Create a device file named PATH relative to FD, with permission and
- special bits MODE and device number DEV (which can be constructed
- from major and minor device numbers with the `makedev' macro
- above). */
-int
-__xmknodat (int vers, int fd, const char *path, mode_t mode, dev_t *dev)
-{
- if (vers != _MKNOD_VER)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- if (path == NULL)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- if (fd != AT_FDCWD && path[0] != '/')
- {
- /* Check FD is associated with a directory. */
- struct stat64 st;
- if (__fstat64 (fd, &st) != 0)
- return -1;
-
- if (!S_ISDIR (st.st_mode))
- {
- __set_errno (ENOTDIR);
- return -1;
- }
- }
-
- __set_errno (ENOSYS);
- return -1;
-}
-stub_warning (__xmknodat)
-
-libc_hidden_def (__xmknodat)
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 571277c..90c6b0e 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -201,6 +201,7 @@ sysdep_routines += f_setlk close_nocancel close_nocancel_nostatus \
pread64_nocancel write_nocancel pwrite64_nocancel \
wait4_nocancel \
xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
+ xmknod xmknodat \
fxstatat fxstatat64
endif
diff --git a/sysdeps/mach/hurd/mknod.c b/sysdeps/mach/hurd/mknod.c
deleted file mode 100644
index 1b9c9db..0000000
--- a/sysdeps/mach/hurd/mknod.c
+++ /dev/null
@@ -1,31 +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>
-#include <fcntl.h>
-#include <shlib-compat.h>
-
-/* Create a device file named FILE_NAME, with permission and special bits MODE
- and device number DEV (which can be constructed from major and minor
- device numbers with the `makedev' macro above). */
-int
-__mknod (const char *file_name, mode_t mode, dev_t dev)
-{
- return __mknodat (AT_FDCWD, file_name, mode, dev);
-}
-libc_hidden_def (__mknod)
-weak_alias (__mknod, mknod)
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 899b6c9..472eab7 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -63,7 +63,8 @@ sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
process_vm_readv process_vm_writev clock_adjtime \
time64-support pselect32 \
xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
- fxstatat fxstatat64
+ fxstatat fxstatat64 \
+ xmknod xmknodat
CFLAGS-gethostid.c = -fexceptions
CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
diff --git a/sysdeps/unix/sysv/linux/mknod.c b/sysdeps/unix/sysv/linux/mknod.c
deleted file mode 100644
index 7e290dd..0000000
--- a/sysdeps/unix/sysv/linux/mknod.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Create a special or ordinary file. Linux version.
- Copyright (C) 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>
-#include <fcntl.h>
-
-int
-__mknod (const char *path, mode_t mode, dev_t dev)
-{
- return __mknodat (AT_FDCWD, path, mode, dev);
-}
-libc_hidden_def (__mknod)
-weak_alias (__mknod, mknod)