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 /io | |
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>
Diffstat (limited to 'io')
-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 |
5 files changed, 7 insertions, 106 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) |