From b48061e1a534a2421c65e4258418d41a5335ba32 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 18 Apr 2017 14:42:19 +0200 Subject: Assume that dup3 is available --- ChangeLog | 14 ++++++++++++++ include/unistd.h | 2 -- libio/freopen.c | 29 +++-------------------------- libio/freopen64.c | 29 +++-------------------------- socket/Makefile | 2 +- socket/have_sock_cloexec.c | 24 ------------------------ sysdeps/mach/hurd/kernel-features.h | 1 - sysdeps/nacl/kernel-features.h | 1 - sysdeps/unix/sysv/linux/kernel-features.h | 1 - 9 files changed, 21 insertions(+), 82 deletions(-) delete mode 100644 socket/have_sock_cloexec.c diff --git a/ChangeLog b/ChangeLog index 8ce9bea809..3a8ea7d303 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2017-04-18 Florian Weimer + + * include/unistd.h (__have_dup3): Remove declaration. + * libio/freopen.c (freopen): Assume that O_CLOEXEC is defined and + dup3 is available. + * libio/freopen64.c (freopen64): Likewise. + * socket/Makefile (aux): Remove have_sock_cloexec. + * socket/have_sock_cloexec.c: Remove file. + * sysdeps/mach/hurd/kernel-features.h (__ASSUME_DUP3): Remove + definition. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_DUP3): + Likewise. + * sysdeps/nacl/kernel-features.h: Update comment. + 2017-04-18 Florian Weimer * include/unistd.h (__have_pipe2): Remove declaration. diff --git a/include/unistd.h b/include/unistd.h index e15fa0e23d..16a88153a0 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -171,8 +171,6 @@ extern int __libc_pause (void); /* Not cancelable variant. */ extern int __pause_nocancel (void) attribute_hidden; -extern int __have_dup3 attribute_hidden; - extern int __getlogin_r_loginuid (char *name, size_t namesize) attribute_hidden; diff --git a/libio/freopen.c b/libio/freopen.c index 03e3ae77ba..ad1c848877 100644 --- a/libio/freopen.c +++ b/libio/freopen.c @@ -78,32 +78,9 @@ freopen (const char *filename, const char *mode, FILE *fp) if (fd != -1) { -#ifdef O_CLOEXEC -# ifndef __ASSUME_DUP3 - int newfd; - if (__have_dup3 < 0) - newfd = -1; - else - newfd = -# endif - __dup3 (_IO_fileno (result), fd, - (result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 - ? O_CLOEXEC : 0); -#else -# define newfd 1 -#endif - -#ifndef __ASSUME_DUP3 - if (newfd < 0) - { - if (errno == ENOSYS) - __have_dup3 = -1; - - __dup2 (_IO_fileno (result), fd); - if ((result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0) - __fcntl (fd, F_SETFD, FD_CLOEXEC); - } -#endif + __dup3 (_IO_fileno (result), fd, + (result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 + ? O_CLOEXEC : 0); __close (_IO_fileno (result)); _IO_fileno (result) = fd; } diff --git a/libio/freopen64.c b/libio/freopen64.c index 1f0d8abd72..adf749a070 100644 --- a/libio/freopen64.c +++ b/libio/freopen64.c @@ -61,32 +61,9 @@ freopen64 (const char *filename, const char *mode, FILE *fp) if (fd != -1) { -#ifdef O_CLOEXEC -# ifndef __ASSUME_DUP3 - int newfd; - if (__have_dup3 < 0) - newfd = -1; - else - newfd = -# endif - __dup3 (_IO_fileno (result), fd, - (result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 - ? O_CLOEXEC : 0); -#else -# define newfd 1 -#endif - -#ifndef __ASSUME_DUP3 - if (newfd < 0) - { - if (errno == ENOSYS) - __have_dup3 = -1; - - __dup2 (_IO_fileno (result), fd); - if ((result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0) - __fcntl (fd, F_SETFD, FD_CLOEXEC); - } -#endif + __dup3 (_IO_fileno (result), fd, + (result->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 + ? O_CLOEXEC : 0); __close (_IO_fileno (result)); _IO_fileno (result) = fd; } diff --git a/socket/Makefile b/socket/Makefile index c299d34d22..25d4f68578 100644 --- a/socket/Makefile +++ b/socket/Makefile @@ -31,6 +31,6 @@ routines := accept bind connect getpeername getsockname getsockopt \ setsockopt shutdown socket socketpair isfdtype opensock \ sockatmark accept4 recvmmsg sendmmsg -aux := have_sock_cloexec sa_len +aux := sa_len include ../Rules diff --git a/socket/have_sock_cloexec.c b/socket/have_sock_cloexec.c deleted file mode 100644 index 579577d895..0000000000 --- a/socket/have_sock_cloexec.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2008-2017 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 - -#if defined O_CLOEXEC && !defined __ASSUME_DUP3 -int __have_dup3; -#endif diff --git a/sysdeps/mach/hurd/kernel-features.h b/sysdeps/mach/hurd/kernel-features.h index 687c7f0eb6..60c5bca01b 100644 --- a/sysdeps/mach/hurd/kernel-features.h +++ b/sysdeps/mach/hurd/kernel-features.h @@ -21,5 +21,4 @@ But those referring to POSIX-level features like O_* flags can be. */ #define __ASSUME_O_CLOEXEC 1 -#define __ASSUME_DUP3 1 #define __ASSUME_ACCEPT4 1 diff --git a/sysdeps/nacl/kernel-features.h b/sysdeps/nacl/kernel-features.h index 38a47f16b4..4a5808b56c 100644 --- a/sysdeps/nacl/kernel-features.h +++ b/sysdeps/nacl/kernel-features.h @@ -23,6 +23,5 @@ #define __ASSUME_O_CLOEXEC 1 /* -#define __ASSUME_DUP3 1 #define __ASSUME_ACCEPT4 1 */ diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 233e302c0d..e0eb4e2f84 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -74,7 +74,6 @@ /* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.27. */ #define __ASSUME_IN_NONBLOCK 1 -#define __ASSUME_DUP3 1 /* Support for accept4 functionality was added in 2.6.28, but for some architectures using a separate syscall rather than socketcall that -- cgit v1.2.3-65-gdbad