summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-04-18 14:42:19 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-04-18 14:42:19 +0200
commitb48061e1a534a2421c65e4258418d41a5335ba32 (patch)
tree7b2a00fe1f6b7a9e9e6726c0bbfedd20506ad1b9
parent46d8874d5b2fcb7831dd84c5e2f6df51922a7936 (diff)
downloadglibc-b48061e1a534a2421c65e4258418d41a5335ba32.tar.gz
Assume that dup3 is available
-rw-r--r--ChangeLog14
-rw-r--r--include/unistd.h2
-rw-r--r--libio/freopen.c29
-rw-r--r--libio/freopen64.c29
-rw-r--r--socket/Makefile2
-rw-r--r--socket/have_sock_cloexec.c24
-rw-r--r--sysdeps/mach/hurd/kernel-features.h1
-rw-r--r--sysdeps/nacl/kernel-features.h1
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h1
9 files changed, 21 insertions, 82 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ce9bea809..3a8ea7d303 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2017-04-18 Florian Weimer <fweimer@redhat.com>
+ * 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 <fweimer@redhat.com>
+
* include/unistd.h (__have_pipe2): Remove declaration.
* socket/have_sock_cloexec.c (__have_pipe2): Remove definition.
* libio/iopopen.c (_IO_new_proc_open): Assume that pipe2 is
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
- <http://www.gnu.org/licenses/>. */
-
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <kernel-features.h>
-
-#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