Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/pipe-safer.c |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | /* Invoke pipe, but avoid some glitches. | - | ||||||
2 | Copyright (C) 2005-2006, 2009-2018 Free Software Foundation, Inc. | - | ||||||
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 3 of the License, or | - | ||||||
7 | (at your option) 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, see <https://www.gnu.org/licenses/>. */ | - | ||||||
16 | - | |||||||
17 | /* Written by Jim Meyering. */ | - | ||||||
18 | - | |||||||
19 | #include <config.h> | - | ||||||
20 | - | |||||||
21 | #include "unistd-safer.h" | - | ||||||
22 | - | |||||||
23 | #include <unistd.h> | - | ||||||
24 | #include <errno.h> | - | ||||||
25 | - | |||||||
26 | /* Like pipe, but ensure that neither of the file descriptors is | - | ||||||
27 | STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. Fail with ENOSYS on | - | ||||||
28 | platforms that lack pipe. */ | - | ||||||
29 | - | |||||||
30 | int | - | ||||||
31 | pipe_safer (int fd[2]) | - | ||||||
32 | { | - | ||||||
33 | #if HAVE_PIPE | - | ||||||
34 | if (pipe (fd) == 0)
| 0 | ||||||
35 | { | - | ||||||
36 | int i; | - | ||||||
37 | for (i = 0; i < 2; i++)
| 0 | ||||||
38 | { | - | ||||||
39 | fd[i] = fd_safer (fd[i]); | - | ||||||
40 | if (fd[i] < 0)
| 0 | ||||||
41 | { | - | ||||||
42 | int e = errno; | - | ||||||
43 | close (fd[1 - i]); | - | ||||||
44 | errno = e; | - | ||||||
45 | return -1; never executed: return -1; | 0 | ||||||
46 | } | - | ||||||
47 | } never executed: end of block | 0 | ||||||
48 | - | |||||||
49 | return 0; never executed: return 0; | 0 | ||||||
50 | } | - | ||||||
51 | #else | - | ||||||
52 | errno = ENOSYS; | - | ||||||
53 | #endif | - | ||||||
54 | - | |||||||
55 | return -1; never executed: return -1; | 0 | ||||||
56 | } | - | ||||||
Source code | Switch to Preprocessed file |