]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Assume that dup3 is available
authorFlorian Weimer <fweimer@redhat.com>
Tue, 18 Apr 2017 12:42:19 +0000 (14:42 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 18 Apr 2017 12:42:19 +0000 (14:42 +0200)
ChangeLog
include/unistd.h
libio/freopen.c
libio/freopen64.c
socket/Makefile
socket/have_sock_cloexec.c [deleted file]
sysdeps/mach/hurd/kernel-features.h
sysdeps/nacl/kernel-features.h
sysdeps/unix/sysv/linux/kernel-features.h

index 8ce9bea809e39921c991b3ec965fb2d61ce42721..3a8ea7d30348745868afa55ff56ed301103014bc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+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.
index e15fa0e23d6832383356625385ef8ba4494e7f0f..16a88153a0821ac109401e221d01ff314d2e567f 100644 (file)
@@ -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;
 
index 03e3ae77ba17e956b831ca7afea96ff072c93c5e..ad1c8488771c450277cad544a2544e9788c04b95 100644 (file)
@@ -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;
        }
index 1f0d8abd72058ce9e86ba8085d8ebd286042904d..adf749a070db8708b73b342fb10959ff3b397f99 100644 (file)
@@ -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;
        }
index c299d34d22bf1b46506c73d86c85477c73835c01..25d4f6857863adca7f7992761033d90dffaa12fb 100644 (file)
@@ -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 (file)
index 579577d..0000000
+++ /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
index 687c7f0eb65eb6f28c4d1c2a37ff2b02be984581..60c5bca01b5d65b2325f799523f90f6399e55048 100644 (file)
@@ -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
index 38a47f16b47521728bbed32c09f44a8ac2266b1d..4a5808b56c1437248d86bec367fbb6949c755606 100644 (file)
@@ -23,6 +23,5 @@
 #define __ASSUME_O_CLOEXEC     1
 
 /*
-#define __ASSUME_DUP3          1
 #define __ASSUME_ACCEPT4       1
 */
index 233e302c0db34d1d59f1ac5a89660d430c35018f..e0eb4e2f846df725dde5677a90b6d42b920ac0c3 100644 (file)
@@ -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