OpenCoverage

areadlink.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/areadlink.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* areadlink.c -- readlink wrapper to return the link name in malloc'd storage-
2 Unlike xreadlink and xreadlink_with_size, don't ever call exit.-
3-
4 Copyright (C) 2001, 2003-2007, 2009-2018 Free Software Foundation, Inc.-
5-
6 This program is free software: you can redistribute it and/or modify-
7 it under the terms of the GNU General Public License as published by-
8 the Free Software Foundation; either version 3 of the License, or-
9 (at your option) any later version.-
10-
11 This program is distributed in the hope that it will be useful,-
12 but WITHOUT ANY WARRANTY; without even the implied warranty of-
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
14 GNU General Public License for more details.-
15-
16 You should have received a copy of the GNU General Public License-
17 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
18-
19/* Written by Jim Meyering <jim@meyering.net>-
20 and Bruno Haible <bruno@clisp.org>. */-
21-
22#include <config.h>-
23-
24/* Specification. */-
25#include "areadlink.h"-
26-
27#include "careadlinkat.h"-
28-
29#include <stdlib.h>-
30#include <unistd.h>-
31-
32/* Get the symbolic link value of FILENAME and put it into BUFFER, with-
33 size BUFFER_SIZE. This function acts like readlink but has-
34 readlinkat's signature. */-
35static ssize_t-
36careadlinkatcwd (int fd, char const *filename, char *buffer,-
37 size_t buffer_size)-
38{-
39 /* FD must be AT_FDCWD here, otherwise the caller is using this-
40 function in contexts it was not meant for. */-
41 if (fd != AT_FDCWD)
fd != -100Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • stdbuf
0-2
42 abort ();
never executed: abort ();
0
43 return readlink (filename, buffer, buffer_size);
executed 2 times by 1 test: return readlink (filename, buffer, buffer_size);
Executed by:
  • stdbuf
2
44}-
45-
46/* Call readlink to get the symbolic link value of FILENAME.-
47 Return a pointer to that NUL-terminated string in malloc'd storage.-
48 If readlink fails, return NULL and set errno.-
49 If allocation fails, or if the link value is longer than SIZE_MAX :-),-
50 return NULL and set errno to ENOMEM. */-
51-
52char *-
53areadlink (char const *filename)-
54{-
55 return careadlinkat (AT_FDCWD, filename, NULL, 0, NULL, careadlinkatcwd);
executed 2 times by 1 test: return careadlinkat ( -100 , filename, ((void *)0) , 0, ((void *)0) , careadlinkatcwd);
Executed by:
  • stdbuf
2
56}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2