Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/careadlinkat.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | char * | - | ||||||||||||||||||
4 | careadlinkat (int fd, char const *filename, | - | ||||||||||||||||||
5 | char *buffer, size_t buffer_size, | - | ||||||||||||||||||
6 | struct allocator const *alloc, | - | ||||||||||||||||||
7 | ssize_t (*preadlinkat) (int, char const *, char *, size_t)) | - | ||||||||||||||||||
8 | { | - | ||||||||||||||||||
9 | char *buf; | - | ||||||||||||||||||
10 | size_t buf_size; | - | ||||||||||||||||||
11 | size_t buf_size_max = | - | ||||||||||||||||||
12 | 0x7fffffffffffffffL < ((size_t) -1)
| 0-2 | ||||||||||||||||||
13 | char stack_buf[1024]; | - | ||||||||||||||||||
14 | - | |||||||||||||||||||
15 | if (! alloc
| 0-2 | ||||||||||||||||||
16 | alloc = &stdlib_allocator; executed 2 times by 1 test: alloc = &stdlib_allocator; Executed by:
| 2 | ||||||||||||||||||
17 | - | |||||||||||||||||||
18 | if (! buffer_size
| 0-2 | ||||||||||||||||||
19 | { | - | ||||||||||||||||||
20 | - | |||||||||||||||||||
21 | - | |||||||||||||||||||
22 | - | |||||||||||||||||||
23 | - | |||||||||||||||||||
24 | buffer = stack_buf; | - | ||||||||||||||||||
25 | buffer_size = sizeof stack_buf; | - | ||||||||||||||||||
26 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||||||||||||||
27 | - | |||||||||||||||||||
28 | buf = buffer; | - | ||||||||||||||||||
29 | buf_size = buffer_size; | - | ||||||||||||||||||
30 | - | |||||||||||||||||||
31 | do | - | ||||||||||||||||||
32 | { | - | ||||||||||||||||||
33 | - | |||||||||||||||||||
34 | ssize_t link_length = preadlinkat (fd, filename, buf, buf_size); | - | ||||||||||||||||||
35 | size_t link_size; | - | ||||||||||||||||||
36 | if (link_length < 0
| 0-2 | ||||||||||||||||||
37 | { | - | ||||||||||||||||||
38 | - | |||||||||||||||||||
39 | - | |||||||||||||||||||
40 | int readlinkat_errno = | - | ||||||||||||||||||
41 | (*__errno_location ()) | - | ||||||||||||||||||
42 | ; | - | ||||||||||||||||||
43 | if (readlinkat_errno !=
| 0 | ||||||||||||||||||
44 | 34
| 0 | ||||||||||||||||||
45 | ) | - | ||||||||||||||||||
46 | { | - | ||||||||||||||||||
47 | if (buf != buffer
| 0 | ||||||||||||||||||
48 | { | - | ||||||||||||||||||
49 | alloc->free (buf); | - | ||||||||||||||||||
50 | - | |||||||||||||||||||
51 | (*__errno_location ()) | - | ||||||||||||||||||
52 | = readlinkat_errno; | - | ||||||||||||||||||
53 | } never executed: end of block | 0 | ||||||||||||||||||
54 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
55 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
56 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
57 | } | - | ||||||||||||||||||
58 | } never executed: end of block | 0 | ||||||||||||||||||
59 | - | |||||||||||||||||||
60 | link_size = link_length; | - | ||||||||||||||||||
61 | - | |||||||||||||||||||
62 | if (link_size < buf_size
| 0-2 | ||||||||||||||||||
63 | { | - | ||||||||||||||||||
64 | buf[link_size++] = '\0'; | - | ||||||||||||||||||
65 | - | |||||||||||||||||||
66 | if (buf == stack_buf
| 0-2 | ||||||||||||||||||
67 | { | - | ||||||||||||||||||
68 | char *b = (char *) alloc->allocate (link_size); | - | ||||||||||||||||||
69 | buf_size = link_size; | - | ||||||||||||||||||
70 | if (! b
| 0-2 | ||||||||||||||||||
71 | break; never executed: break; | 0 | ||||||||||||||||||
72 | memcpy (b, buf, link_size); | - | ||||||||||||||||||
73 | buf = b; | - | ||||||||||||||||||
74 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||||||||||||||
75 | else if (link_size < buf_size
| 0 | ||||||||||||||||||
76 | { | - | ||||||||||||||||||
77 | - | |||||||||||||||||||
78 | char *b = (char *) alloc->reallocate (buf, link_size); | - | ||||||||||||||||||
79 | if (b
| 0 | ||||||||||||||||||
80 | buf = b; never executed: buf = b; | 0 | ||||||||||||||||||
81 | } never executed: end of block | 0 | ||||||||||||||||||
82 | - | |||||||||||||||||||
83 | return executed 2 times by 1 test: buf;return buf; Executed by:
executed 2 times by 1 test: return buf; Executed by:
| 2 | ||||||||||||||||||
84 | } | - | ||||||||||||||||||
85 | - | |||||||||||||||||||
86 | if (buf != buffer
| 0 | ||||||||||||||||||
87 | alloc->free (buf); never executed: alloc->free (buf); | 0 | ||||||||||||||||||
88 | - | |||||||||||||||||||
89 | if (buf_size <= buf_size_max / 2
| 0 | ||||||||||||||||||
90 | buf_size *= 2; never executed: buf_size *= 2; | 0 | ||||||||||||||||||
91 | else if (buf_size < buf_size_max
| 0 | ||||||||||||||||||
92 | buf_size = buf_size_max; never executed: buf_size = buf_size_max; | 0 | ||||||||||||||||||
93 | else if (buf_size_max < ((size_t) -1)
| 0 | ||||||||||||||||||
94 | { | - | ||||||||||||||||||
95 | - | |||||||||||||||||||
96 | (*__errno_location ()) | - | ||||||||||||||||||
97 | = | - | ||||||||||||||||||
98 | 36 | - | ||||||||||||||||||
99 | ; | - | ||||||||||||||||||
100 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
101 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
102 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
103 | } | - | ||||||||||||||||||
104 | else | - | ||||||||||||||||||
105 | break; never executed: break; | 0 | ||||||||||||||||||
106 | buf = (char *) alloc->allocate (buf_size); | - | ||||||||||||||||||
107 | } never executed: end of block | 0 | ||||||||||||||||||
108 | while (buf
| 0 | ||||||||||||||||||
109 | - | |||||||||||||||||||
110 | if (alloc->die
| 0 | ||||||||||||||||||
111 | alloc->die (buf_size); never executed: alloc->die (buf_size); | 0 | ||||||||||||||||||
112 | - | |||||||||||||||||||
113 | (*__errno_location ()) | - | ||||||||||||||||||
114 | = | - | ||||||||||||||||||
115 | 12 | - | ||||||||||||||||||
116 | ; | - | ||||||||||||||||||
117 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
118 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
119 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
120 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |