OpenCoverage

fd-safer.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/fd-safer.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Return a safer copy of a file descriptor.-
2-
3 Copyright (C) 2005-2006, 2009-2018 Free Software Foundation, Inc.-
4-
5 This program is free software: you can redistribute it and/or modify-
6 it under the terms of the GNU General Public License as published by-
7 the Free Software Foundation; either version 3 of the License, or-
8 (at your option) any later version.-
9-
10 This program is distributed in the hope that it will be useful,-
11 but WITHOUT ANY WARRANTY; without even the implied warranty of-
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
13 GNU General Public License for more details.-
14-
15 You should have received a copy of the GNU General Public License-
16 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
17-
18/* Written by Paul Eggert. */-
19-
20#include <config.h>-
21-
22#include "unistd-safer.h"-
23-
24#include <errno.h>-
25#include <unistd.h>-
26-
27/* Return FD, unless FD would be a copy of standard input, output, or-
28 error; in that case, return a duplicate of FD, closing FD. On-
29 failure to duplicate, close FD, set errno, and return -1. Preserve-
30 errno if FD is negative, so that the caller can always inspect-
31 errno when the returned value is negative.-
32-
33 This function is usefully wrapped around functions that return file-
34 descriptors, e.g., fd_safer (open ("file", O_RDONLY)). */-
35-
36int-
37fd_safer (int fd)-
38{-
39 if (STDIN_FILENO <= fd && fd <= STDERR_FILENO)
0 <= fdDescription
TRUEevaluated 87721 times by 15 tests
Evaluated by:
  • chgrp
  • chmod
  • chown
  • cp
  • df
  • du
  • ginstall
  • mkdir
  • mv
  • rm
  • shred
  • split
  • stat
  • tac
  • tail
FALSEevaluated 328 times by 8 tests
Evaluated by:
  • cp
  • du
  • ginstall
  • rm
  • shred
  • split
  • tac
  • tail
fd <= 2Description
TRUEevaluated 5 times by 3 tests
Evaluated by:
  • cp
  • tac
  • tail
FALSEevaluated 87716 times by 15 tests
Evaluated by:
  • chgrp
  • chmod
  • chown
  • cp
  • df
  • du
  • ginstall
  • mkdir
  • mv
  • rm
  • shred
  • split
  • stat
  • tac
  • tail
5-87721
40 {-
41 int f = dup_safer (fd);-
42 int e = errno;-
43 close (fd);-
44 errno = e;-
45 fd = f;-
46 }
executed 5 times by 3 tests: end of block
Executed by:
  • cp
  • tac
  • tail
5
47-
48 return fd;
executed 88049 times by 15 tests: return fd;
Executed by:
  • chgrp
  • chmod
  • chown
  • cp
  • df
  • du
  • ginstall
  • mkdir
  • mv
  • rm
  • shred
  • split
  • stat
  • tac
  • tail
88049
49}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2