From 99468ed45f5a58f584bab60364af937eb6f8afda Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 26 Oct 2020 08:58:01 -0300 Subject: [PATCH] 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 --- io/Makefile | 2 +- io/mknod.c | 4 +-- io/mknodat.c | 5 +++- io/xmknod.c | 40 -------------------------- io/xmknodat.c | 62 ---------------------------------------- sysdeps/mach/hurd/Makefile | 1 + sysdeps/mach/hurd/mknod.c | 31 -------------------- sysdeps/unix/sysv/linux/Makefile | 3 +- sysdeps/unix/sysv/linux/mknod.c | 28 ------------------ 9 files changed, 10 insertions(+), 166 deletions(-) delete mode 100644 io/xmknod.c delete mode 100644 io/xmknodat.c delete mode 100644 sysdeps/mach/hurd/mknod.c delete mode 100644 sysdeps/unix/sysv/linux/mknod.c 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 . */ -#include #include +#include 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 - . */ - -#include -#include -#include - -/* 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 - . */ - -#include -#include -#include -#include -#include - -/* 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 - . */ - -#include -#include -#include - -/* 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 - . */ - -#include -#include - -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) -- 2.7.4