This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.27.9000-607-gde195be


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  de195be01569311dbbdee48c1ae36452f74bf594 (commit)
      from  75d5e4a09ea1d1d790ae3bf3309986a3328af567 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=de195be01569311dbbdee48c1ae36452f74bf594

commit de195be01569311dbbdee48c1ae36452f74bf594
Author: Thomas Schwinge <tschwinge@gnu.org>
Date:   Fri Jul 20 01:29:55 2018 +0200

    hurd: Implement pipe2
    
    	* sysdeps/mach/hurd/pipe2.c: New file, copy from pipe.c.  Evolve it to
    	implement __pipe2.
    	* sysdeps/mach/hurd/pipe.c (__pipe): Reimplement using __pipe2.

diff --git a/ChangeLog b/ChangeLog
index 7692a19..93cc5f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,9 @@
 	SOCK_NONBLOCK.
 	* sysdeps/mach/hurd/socketpair.c (__socketpair): Handle SOCK_CLOEXEC
 	and SOCK_NONBLOCK.
+	* sysdeps/mach/hurd/pipe2.c: New file, copy from pipe.c.  Evolve it to
+	implement __pipe2.
+	* sysdeps/mach/hurd/pipe.c (__pipe): Reimplement using __pipe2.
 
 2018-07-19  Leonardo Sandoval  <leonardo.sandoval.gonzalez@intel.com>
 
diff --git a/sysdeps/mach/hurd/pipe.c b/sysdeps/mach/hurd/pipe.c
index 3f4b202..9e67ef7 100644
--- a/sysdeps/mach/hurd/pipe.c
+++ b/sysdeps/mach/hurd/pipe.c
@@ -15,9 +15,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
 #include <unistd.h>
 
 /* Create a one-way communication channel (pipe).
@@ -28,23 +25,7 @@
 int
 __pipe (int fds[2])
 {
-  int save_errno = errno;
-  int result;
-
-  /* The magic S_IFIFO protocol tells the pflocal server to create
-     sockets which report themselves as FIFOs, as POSIX requires for
-     pipes.  */
-  result = __socketpair (PF_LOCAL, SOCK_STREAM, S_IFIFO, fds);
-  if (result == -1 && errno == EPROTONOSUPPORT)
-    {
-      /* We contacted an "old" pflocal server that doesn't support the
-         magic S_IFIFO protocol.
-	 FIXME: Remove this junk somewhere in the future.  */
-      __set_errno (save_errno);
-      return __socketpair (PF_LOCAL, SOCK_STREAM, 0, fds);
-    }
-
-  return result;
+  return __pipe2 (fds, 0);
 }
 libc_hidden_def (__pipe)
 weak_alias (__pipe, pipe)
diff --git a/sysdeps/mach/hurd/pipe.c b/sysdeps/mach/hurd/pipe2.c
similarity index 69%
copy from sysdeps/mach/hurd/pipe.c
copy to sysdeps/mach/hurd/pipe2.c
index 3f4b202..8086d64 100644
--- a/sysdeps/mach/hurd/pipe.c
+++ b/sysdeps/mach/hurd/pipe2.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2015 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
@@ -12,39 +13,48 @@
    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/>.  */
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
 #include <errno.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <fcntl.h>
+#include <fcntl-internal.h>
+#include <hurd.h>
 
 /* Create a one-way communication channel (pipe).
    Actually the channel is two-way on the Hurd.
    If successful, two file descriptors are stored in FDS;
    bytes written on FDS[1] can be read from FDS[0].
+   Apply FLAGS to the new file descriptors.
    Returns 0 if successful, -1 if not.  */
 int
-__pipe (int fds[2])
+__pipe2 (int fds[2], int flags)
 {
   int save_errno = errno;
   int result;
 
+  if (flags & ~(O_CLOEXEC | O_NONBLOCK))
+    return __hurd_fail (EINVAL);
+
+  flags = o_to_sock_flags (flags);
+
   /* The magic S_IFIFO protocol tells the pflocal server to create
      sockets which report themselves as FIFOs, as POSIX requires for
      pipes.  */
-  result = __socketpair (PF_LOCAL, SOCK_STREAM, S_IFIFO, fds);
+  result = __socketpair (PF_LOCAL, SOCK_STREAM | flags, S_IFIFO, fds);
   if (result == -1 && errno == EPROTONOSUPPORT)
     {
       /* We contacted an "old" pflocal server that doesn't support the
          magic S_IFIFO protocol.
 	 FIXME: Remove this junk somewhere in the future.  */
       __set_errno (save_errno);
-      return __socketpair (PF_LOCAL, SOCK_STREAM, 0, fds);
+      return __socketpair (PF_LOCAL, SOCK_STREAM | flags, 0, fds);
     }
 
   return result;
 }
-libc_hidden_def (__pipe)
-weak_alias (__pipe, pipe)
+weak_alias (__pipe2, pipe2)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                             |    3 +++
 sysdeps/mach/hurd/pipe.c              |   21 +--------------------
 sysdeps/mach/hurd/{pipe.c => pipe2.c} |   26 ++++++++++++++++++--------
 3 files changed, 22 insertions(+), 28 deletions(-)
 copy sysdeps/mach/hurd/{pipe.c => pipe2.c} (69%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]