# HG changeset patch # User Paul Eggert # Date 1424716480 28800 # Node ID 587c85f38b58f11e888d4e0c9867a632b7d55171 # Parent 70199a43c7c87c3f2ff819f3ef4bb91d0e210292 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. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-02-23 Paul Eggert + + 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 Replace dup2() on Android diff --git a/doc/posix-functions/dup2.texi b/doc/posix-functions/dup2.texi --- a/doc/posix-functions/dup2.texi +++ b/doc/posix-functions/dup2.texi @@ -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. diff --git a/m4/dup2.m4 b/m4/dup2.m4 --- a/m4/dup2.m4 +++ b/m4/dup2.m4 @@ -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)