Message ID | 20201202193938.2345469-2-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | [1/2] io: Remove xstat implementations | expand |
If no one opposes it, I will commit this. On 02/12/2020 16:39, Adhemerval Zanella wrote: > 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. > --- > 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 887a989c03..d3d0dcf767 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 9eb4a2af7f..22566b259c 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 63a8068ad6..cf491f99a7 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 832dbf778e..0000000000 > --- 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 b6c668170b..0000000000 > --- 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 571277cf7f..90c6b0e9a3 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 1b9c9db741..0000000000 > --- 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 899b6c9c77..472eab700d 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 7e290ddc8b..0000000000 > --- 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) >
On Mon, 28 Dec 2020 16:10:13 -0300 Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> wrote: > If no one opposes it, I will commit this. > > On 02/12/2020 16:39, Adhemerval Zanella wrote: > > 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. --- > > 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 887a989c03..d3d0dcf767 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 9eb4a2af7f..22566b259c 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 63a8068ad6..cf491f99a7 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 832dbf778e..0000000000 > > --- 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 b6c668170b..0000000000 > > --- 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 571277cf7f..90c6b0e9a3 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 1b9c9db741..0000000000 > > --- 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 899b6c9c77..472eab700d > > 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 7e290ddc8b..0000000000 > > --- 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) > > Reviewed-by: Lukasz Majewski <lukma@denx.de> Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
diff --git a/io/Makefile b/io/Makefile index 887a989c03..d3d0dcf767 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 9eb4a2af7f..22566b259c 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 63a8068ad6..cf491f99a7 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 832dbf778e..0000000000 --- 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 b6c668170b..0000000000 --- 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 571277cf7f..90c6b0e9a3 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 1b9c9db741..0000000000 --- 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 899b6c9c77..472eab700d 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 7e290ddc8b..0000000000 --- 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)