Mercurial > hg > octave-kai > gnulib-hg
annotate lib/dup-safer.c @ 6150:882f5823cabb
Merge minor changes from coreutils.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sat, 27 Aug 2005 20:49:12 +0000 |
parents | ace6ea191424 |
children | 96c32553b4c6 |
rev | line source |
---|---|
3196 | 1 /* Invoke dup, but avoid some glitches. |
5813 | 2 Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. |
3196 | 3 |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 2, or (at your option) | |
7 any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program; if not, write to the Free Software Foundation, | |
5848
a48fb0e98c8c
*** empty log message ***
Paul Eggert <eggert@cs.ucla.edu>
parents:
5813
diff
changeset
|
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
3196 | 17 |
18 /* Written by Paul Eggert. */ | |
19 | |
20 #if HAVE_CONFIG_H | |
21 # include <config.h> | |
22 #endif | |
23 | |
5813 | 24 #include "unistd-safer.h" |
3196 | 25 |
5955
ace6ea191424
Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
Jim Meyering <jim@meyering.net>
parents:
5848
diff
changeset
|
26 #include <fcntl.h> |
3196 | 27 |
6150
882f5823cabb
Merge minor changes from coreutils.
Jim Meyering <jim@meyering.net>
parents:
5955
diff
changeset
|
28 #include <unistd.h> |
3196 | 29 #ifndef STDERR_FILENO |
30 # define STDERR_FILENO 2 | |
31 #endif | |
32 | |
33 /* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or | |
34 STDERR_FILENO. */ | |
35 | |
36 int | |
37 dup_safer (int fd) | |
38 { | |
39 #ifdef F_DUPFD | |
40 return fcntl (fd, F_DUPFD, STDERR_FILENO + 1); | |
41 #else | |
5813 | 42 /* fd_safer calls us back, but eventually the recursion unwinds and |
43 does the right thing. */ | |
44 return fd_safer (dup (fd)); | |
3196 | 45 #endif |
46 } |