Mercurial > hg > octave-kai > gnulib-hg
annotate lib/dup-safer.c @ 5848:a48fb0e98c8c
*** empty log message ***
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 14 May 2005 06:03:57 +0000 (2005-05-14) |
parents | 6962b5c5069f |
children | ace6ea191424 |
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 |
26 #if HAVE_FCNTL_H | |
27 # include <fcntl.h> | |
28 #endif | |
29 | |
30 #if HAVE_UNISTD_H | |
31 # include <unistd.h> | |
32 #endif | |
33 #ifndef STDERR_FILENO | |
34 # define STDERR_FILENO 2 | |
35 #endif | |
36 | |
37 /* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or | |
38 STDERR_FILENO. */ | |
39 | |
40 int | |
41 dup_safer (int fd) | |
42 { | |
43 #ifdef F_DUPFD | |
44 return fcntl (fd, F_DUPFD, STDERR_FILENO + 1); | |
45 #else | |
5813 | 46 /* fd_safer calls us back, but eventually the recursion unwinds and |
47 does the right thing. */ | |
48 return fd_safer (dup (fd)); | |
3196 | 49 #endif |
50 } |