X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fdup-safer-flag.c;h=e922b91bbe6f13081c962b17569ae43e0a14f5fc;hb=135351c549050196b5c1322b3ab1e956565ab3d8;hp=3549d0d12f869708a7442bf94959de37f4d2e12d;hpb=a3255b1b9848874572e0df9d0609e263da50de4b;p=gnulib.git diff --git a/lib/dup-safer-flag.c b/lib/dup-safer-flag.c index 3549d0d12..e922b91bb 100644 --- a/lib/dup-safer-flag.c +++ b/lib/dup-safer-flag.c @@ -1,7 +1,7 @@ /* Duplicate a file descriptor result, avoiding clobbering STD{IN,OUT,ERR}_FILENO, with specific flags. - Copyright (C) 2001, 2004-2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2004-2006, 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,10 +28,6 @@ #include "cloexec.h" -#ifndef O_CLOEXEC -# define O_CLOEXEC 0 -#endif - /* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. If FLAG contains O_CLOEXEC, behave like fcntl(F_DUPFD_CLOEXEC) rather than fcntl(F_DUPFD). */ @@ -39,16 +35,6 @@ int dup_safer_flag (int fd, int flag) { - if (flag & O_CLOEXEC) - { -#if defined F_DUPFD_CLOEXEC && !REPLACE_FCHDIR - return fcntl (fd, F_DUPFD_CLOEXEC, STDERR_FILENO + 1); -#else - /* fd_safer_flag calls us back, but eventually the recursion - unwinds and does the right thing. */ - fd = dup_cloexec (fd); - return fd_safer_flag (fd, flag); -#endif - } - return dup_safer (fd); + return fcntl (fd, (flag & O_CLOEXEC) ? F_DUPFD_CLOEXEC : F_DUPFD, + STDERR_FILENO + 1); }