OpenCoverage

fd-reopen.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gl/lib/fd-reopen.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* Invoke open, but return either a desired file descriptor or -1.-
2-
3 Copyright (C) 2005-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 "fd-reopen.h"-
23-
24#include <errno.h>-
25#include <fcntl.h>-
26#include <unistd.h>-
27-
28/* Open a file to a particular file descriptor. This is like standard-
29 'open', except it always returns DESIRED_FD if successful. */-
30-
31int-
32fd_reopen (int desired_fd, char const *file, int flags, mode_t mode)-
33{-
34 int fd = open (file, flags, mode);-
35-
36 if (fd == desired_fd || fd < 0)
fd == desired_fdDescription
TRUEevaluated 219539 times by 1 test
Evaluated by:
  • touch
FALSEevaluated 4823 times by 4 tests
Evaluated by:
  • csplit
  • dd
  • split
  • touch
fd < 0Description
TRUEevaluated 14 times by 2 tests
Evaluated by:
  • dd
  • touch
FALSEevaluated 4809 times by 4 tests
Evaluated by:
  • csplit
  • dd
  • split
  • touch
14-219539
37 return fd;
executed 219553 times by 2 tests: return fd;
Executed by:
  • dd
  • touch
219553
38 else-
39 {-
40 int fd2 = dup2 (fd, desired_fd);-
41 int saved_errno = errno;-
42 close (fd);-
43 errno = saved_errno;-
44 return fd2;
executed 4809 times by 4 tests: return fd2;
Executed by:
  • csplit
  • dd
  • split
  • touch
4809
45 }-
46}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2