diff mbox series

[2/2] io: Remove xmknod{at} implementations

Message ID 20201202193938.2345469-2-adhemerval.zanella@linaro.org
State Committed
Commit 99468ed45f5a58f584bab60364af937eb6f8afda
Headers show
Series [1/2] io: Remove xstat implementations | expand

Commit Message

Adhemerval Zanella Dec. 2, 2020, 7:39 p.m. UTC
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

Comments

Adhemerval Zanella Dec. 28, 2020, 7:10 p.m. UTC | #1
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)
>
Lukasz Majewski Dec. 29, 2020, 10:18 a.m. UTC | #2
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 mbox series

Patch

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)