From: Paul Eggert Date: Mon, 11 Apr 2005 20:01:46 +0000 (+0000) Subject: Include unistd-safer.h first, to test interface. X-Git-Tag: CPPI-1_12~1048 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74fdf19ae79901a077ae411a66bbdbe693b0c1a6;p=thirdparty%2Fcoreutils.git Include unistd-safer.h first, to test interface. (dup_safer) [!deefined F_DUPD]: Use new fd_safer function instead of rolling our own code. --- diff --git a/lib/dup-safer.c b/lib/dup-safer.c index 408a1bda76..10c17fcd9e 100644 --- a/lib/dup-safer.c +++ b/lib/dup-safer.c @@ -1,5 +1,5 @@ /* Invoke dup, but avoid some glitches. - Copyright (C) 2001, 2004 Free Software Foundation, Inc. + Copyright (C) 2001, 2004, 2005 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 @@ -21,7 +21,7 @@ # include #endif -#include +#include "unistd-safer.h" #if HAVE_FCNTL_H # include @@ -34,8 +34,6 @@ # define STDERR_FILENO 2 #endif -#include - /* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. */ @@ -45,15 +43,8 @@ dup_safer (int fd) #ifdef F_DUPFD return fcntl (fd, F_DUPFD, STDERR_FILENO + 1); #else - int f = dup (fd); - if (0 <= f && f <= STDERR_FILENO) - { - int f1 = dup_safer (f); - int e = errno; - close (f); - errno = e; - f = f1; - } - return f; + /* fd_safer calls us back, but eventually the recursion unwinds and + does the right thing. */ + return fd_safer (dup (fd)); #endif }