changeset 17932:587c85f38b58

dup2: doc and test for Android bug Reported by Kevin Cernekee in: http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00125.html * doc/posix-functions/dup2.texi (dup2): Document the bug. * m4/dup2.m4 (gl_FUNC_DUP2): Test for the bug.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 23 Feb 2015 10:34:40 -0800
parents 70199a43c7c8
children 7dd80fb0f8e2
files ChangeLog doc/posix-functions/dup2.texi m4/dup2.m4
diffstat 3 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Feb 23 09:38:14 2015 -0800
+++ b/ChangeLog	Mon Feb 23 10:34:40 2015 -0800
@@ -1,3 +1,11 @@
+2015-02-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+	dup2: doc and test for Android bug
+	Reported by Kevin Cernekee in:
+	http://lists.gnu.org/archive/html/bug-gnulib/2015-02/msg00125.html
+	* doc/posix-functions/dup2.texi (dup2): Document the bug.
+	* m4/dup2.m4 (gl_FUNC_DUP2): Test for the bug.
+
 2015-02-23  Kevin Cernekee  <cernekee@google.com>
 
 	Replace dup2() on Android
--- a/doc/posix-functions/dup2.texi	Mon Feb 23 09:38:14 2015 -0800
+++ b/doc/posix-functions/dup2.texi	Mon Feb 23 10:34:40 2015 -0800
@@ -25,6 +25,10 @@
 Cygwin 1.7.25.
 
 @item
+This function fails with @code{EINVAL} when duplicating an fd to itself:
+Android.
+
+@item
 This function resets the @code{FD_CLOEXEC} flag when duplicating an fd
 to itself on some platforms:
 Haiku.
--- a/m4/dup2.m4	Mon Feb 23 09:38:14 2015 -0800
+++ b/m4/dup2.m4	Mon Feb 23 10:34:40 2015 -0800
@@ -1,4 +1,4 @@
-#serial 23
+#serial 24
 dnl Copyright (C) 2002, 2005, 2007, 2009-2015 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -45,7 +45,7 @@
                if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
                  result |= 1;
              #endif
-             if (dup2 (1, 1) == 0)
+             if (dup2 (1, 1) != 1)
                result |= 2;
              #ifdef FD_CLOEXEC
                if (fcntl (1, F_GETFD) != FD_CLOEXEC)