diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-10-26 08:58:01 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-12-29 16:44:16 -0300 |
commit | 99468ed45f5a58f584bab60364af937eb6f8afda (patch) | |
tree | c4f743f79860cbee8dd9ff5ec19cd46edb5edcc1 | |
parent | 4d97cc8cf3da925fd06fc37d4daebafce3247719 (diff) | |
download | glibc-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/Makefile | 2 | ||||
-rw-r--r-- | io/mknod.c | 4 | ||||
-rw-r--r-- | io/mknodat.c | 5 | ||||
-rw-r--r-- | io/xmknod.c | 40 | ||||
-rw-r--r-- | io/xmknodat.c | 62 | ||||
-rw-r--r-- | sysdeps/mach/hurd/Makefile | 1 | ||||
-rw-r--r-- | sysdeps/mach/hurd/mknod.c | 31 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mknod.c | 28 |
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 \ @@ -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) |