r5698 - in glibc-package/trunk/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2013-09-21 23:42:42 +0000 (Sat, 21 Sep 2013)
New Revision: 5698
Added:
glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/debian/patches/series
Log:
* patches/hurd-i386/tg-pipe2.diff: New patch to add pipe2 support.
Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2013-09-21 23:40:55 UTC (rev 5697)
+++ glibc-package/trunk/debian/changelog 2013-09-21 23:42:42 UTC (rev 5698)
@@ -21,6 +21,7 @@
pthread_atfork support.
* patches/hurd-i386/tg-thread-cancel.diff: Update patch against two other
overzealous assertions.
+ * patches/hurd-i386/tg-pipe2.diff: New patch to add pipe2 support.
-- Adam Conrad <adconrad@0c3.net> Thu, 01 Aug 2013 23:00:51 +0100
Added: glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff 2013-09-21 23:42:42 UTC (rev 5698)
@@ -0,0 +1,134 @@
+From: Thomas Schwinge <thomas@schwinge.name>
+Subject: [PATCH] pipe2
+
+2008-12-17 Thomas Schwinge <tschwinge@gnu.org>
+
+ pipe2 for GNU Hurd.
+ * 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.
+ * sysdeps/mach/hurd/kernel-features.h (__ASSUME_PIPE2): Define.
+
+---
+ sysdeps/mach/hurd/kernel-features.h | 1 +
+ sysdeps/mach/hurd/pipe.c | 21 +------------
+ sysdeps/mach/hurd/pipe2.c | 61 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 63 insertions(+), 20 deletions(-)
+
+diff --git a/sysdeps/mach/hurd/kernel-features.h b/sysdeps/mach/hurd/kernel-features.h
+index 2b10327..d603be8 100644
+--- a/sysdeps/mach/hurd/kernel-features.h
++++ b/sysdeps/mach/hurd/kernel-features.h
+@@ -24,3 +24,4 @@
+ #define __ASSUME_DUP3 1
+ #define __ASSUME_ACCEPT4 1
+ #define __ASSUME_SOCK_CLOEXEC 1
++#define __ASSUME_PIPE2 1
+diff --git a/sysdeps/mach/hurd/pipe.c b/sysdeps/mach/hurd/pipe.c
+index 5f91648..24a74ca 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/pipe2.c b/sysdeps/mach/hurd/pipe2.c
+new file mode 100644
+index 0000000..c2e5f03
+--- /dev/null
++++ b/sysdeps/mach/hurd/pipe2.c
+@@ -0,0 +1,61 @@
++/* Copyright (C) 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2008 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, 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
++__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 | 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 | flags, 0, fds);
++ }
++
++ return result;
++}
++weak_alias (__pipe2, pipe2)
+--
+tg: (6965864..) t/pipe2 (depends on: t/socketpair_flags)
Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2013-09-21 23:40:55 UTC (rev 5697)
+++ glibc-package/trunk/debian/patches/series 2013-09-21 23:42:42 UTC (rev 5698)
@@ -132,6 +132,7 @@
hurd-i386/tg-socketpair_flags.diff
hurd-i386/tg-pthread-atfork.diff
hurd-i386/cvs-pthread_atfork.diff
+hurd-i386/tg-pipe2.diff
i386/local-biarch.diff
i386/local-cmov.diff
Reply to: