Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/getndelim2.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | ssize_t | - | ||||||||||||||||||
7 | getndelim2 (char **lineptr, size_t *linesize, size_t offset, size_t nmax, | - | ||||||||||||||||||
8 | int delim1, int delim2, FILE *stream) | - | ||||||||||||||||||
9 | { | - | ||||||||||||||||||
10 | size_t nbytes_avail; | - | ||||||||||||||||||
11 | char *read_pos; | - | ||||||||||||||||||
12 | ssize_t bytes_stored = -1; | - | ||||||||||||||||||
13 | char *ptr = *lineptr; | - | ||||||||||||||||||
14 | size_t size = *linesize; | - | ||||||||||||||||||
15 | - | |||||||||||||||||||
16 | _Bool | - | ||||||||||||||||||
17 | found_delimiter; | - | ||||||||||||||||||
18 | - | |||||||||||||||||||
19 | if (!ptr
| 83 | ||||||||||||||||||
20 | { | - | ||||||||||||||||||
21 | size = nmax < 64
| 0-83 | ||||||||||||||||||
22 | ptr = malloc (size); | - | ||||||||||||||||||
23 | if (!ptr
| 0-83 | ||||||||||||||||||
24 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
25 | } executed 83 times by 1 test: end of block Executed by:
| 83 | ||||||||||||||||||
26 | - | |||||||||||||||||||
27 | if (size < offset
| 0-166 | ||||||||||||||||||
28 | goto never executed: done;goto done; never executed: goto done; | 0 | ||||||||||||||||||
29 | - | |||||||||||||||||||
30 | nbytes_avail = size - offset; | - | ||||||||||||||||||
31 | read_pos = ptr + offset; | - | ||||||||||||||||||
32 | - | |||||||||||||||||||
33 | if (nbytes_avail == 0
| 0-166 | ||||||||||||||||||
34 | goto never executed: done;goto done; never executed: goto done; | 0 | ||||||||||||||||||
35 | - | |||||||||||||||||||
36 | - | |||||||||||||||||||
37 | if (delim1 ==
| 0-166 | ||||||||||||||||||
38 | (-1)
| 0-166 | ||||||||||||||||||
39 | ) | - | ||||||||||||||||||
40 | delim1 = delim2; never executed: delim1 = delim2; | 0 | ||||||||||||||||||
41 | else if (delim2 ==
| 0-166 | ||||||||||||||||||
42 | (-1)
| 0-166 | ||||||||||||||||||
43 | ) | - | ||||||||||||||||||
44 | delim2 = delim1; never executed: delim2 = delim1; | 0 | ||||||||||||||||||
45 | - | |||||||||||||||||||
46 | ((void) 0); | - | ||||||||||||||||||
47 | - | |||||||||||||||||||
48 | found_delimiter = | - | ||||||||||||||||||
49 | 0 | - | ||||||||||||||||||
50 | ; | - | ||||||||||||||||||
51 | do | - | ||||||||||||||||||
52 | { | - | ||||||||||||||||||
53 | - | |||||||||||||||||||
54 | - | |||||||||||||||||||
55 | - | |||||||||||||||||||
56 | int c ; | - | ||||||||||||||||||
57 | const char *buffer; | - | ||||||||||||||||||
58 | size_t buffer_len; | - | ||||||||||||||||||
59 | - | |||||||||||||||||||
60 | buffer = freadptr (stream, &buffer_len); | - | ||||||||||||||||||
61 | if (buffer
| 61-110 | ||||||||||||||||||
62 | { | - | ||||||||||||||||||
63 | if (delim1 !=
| 0-110 | ||||||||||||||||||
64 | (-1)
| 0-110 | ||||||||||||||||||
65 | ) | - | ||||||||||||||||||
66 | { | - | ||||||||||||||||||
67 | const char *end = memchr2 (buffer, delim1, delim2, buffer_len); | - | ||||||||||||||||||
68 | if (end
| 5-105 | ||||||||||||||||||
69 | { | - | ||||||||||||||||||
70 | buffer_len = end - buffer + 1; | - | ||||||||||||||||||
71 | found_delimiter = | - | ||||||||||||||||||
72 | 1 | - | ||||||||||||||||||
73 | ; | - | ||||||||||||||||||
74 | } executed 105 times by 1 test: end of block Executed by:
| 105 | ||||||||||||||||||
75 | } executed 110 times by 1 test: end of block Executed by:
| 110 | ||||||||||||||||||
76 | } executed 110 times by 1 test: end of block Executed by:
| 110 | ||||||||||||||||||
77 | else | - | ||||||||||||||||||
78 | { | - | ||||||||||||||||||
79 | c = getc_unlocked (stream); | - | ||||||||||||||||||
80 | if (c ==
| 0-61 | ||||||||||||||||||
81 | (-1)
| 0-61 | ||||||||||||||||||
82 | ) | - | ||||||||||||||||||
83 | { | - | ||||||||||||||||||
84 | - | |||||||||||||||||||
85 | if (read_pos == ptr
| 5-56 | ||||||||||||||||||
86 | goto executed 56 times by 1 test: unlock_done;goto unlock_done; Executed by:
executed 56 times by 1 test: goto unlock_done; Executed by:
| 56 | ||||||||||||||||||
87 | else | - | ||||||||||||||||||
88 | break; executed 5 times by 1 test: break; Executed by:
| 5 | ||||||||||||||||||
89 | } | - | ||||||||||||||||||
90 | if (c == delim1
| 0 | ||||||||||||||||||
91 | found_delimiter = never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
92 | 1 never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
93 | ; never executed: found_delimiter = 1 ; | 0 | ||||||||||||||||||
94 | buffer_len = 1; | - | ||||||||||||||||||
95 | } never executed: end of block | 0 | ||||||||||||||||||
96 | - | |||||||||||||||||||
97 | - | |||||||||||||||||||
98 | - | |||||||||||||||||||
99 | - | |||||||||||||||||||
100 | - | |||||||||||||||||||
101 | if (nbytes_avail < buffer_len + 1
| 0-110 | ||||||||||||||||||
102 | { | - | ||||||||||||||||||
103 | - | |||||||||||||||||||
104 | - | |||||||||||||||||||
105 | size_t newsize = size < 64
| 0 | ||||||||||||||||||
106 | char *newptr; | - | ||||||||||||||||||
107 | - | |||||||||||||||||||
108 | - | |||||||||||||||||||
109 | - | |||||||||||||||||||
110 | if (newsize - (read_pos - ptr) < buffer_len + 1
| 0 | ||||||||||||||||||
111 | newsize = (read_pos - ptr) + buffer_len + 1; never executed: newsize = (read_pos - ptr) + buffer_len + 1; | 0 | ||||||||||||||||||
112 | - | |||||||||||||||||||
113 | if (! (size < newsize
| 0 | ||||||||||||||||||
114 | newsize = nmax; never executed: newsize = nmax; | 0 | ||||||||||||||||||
115 | - | |||||||||||||||||||
116 | if ((
| 0 | ||||||||||||||||||
117 | (
| 0 | ||||||||||||||||||
118 | < 0x7fffffffffffffffL
| 0 | ||||||||||||||||||
119 | (9223372036854775807L)
| 0 | ||||||||||||||||||
120 | : 0x7fffffffffffffffL) < newsize - offset
| 0 | ||||||||||||||||||
121 | { | - | ||||||||||||||||||
122 | size_t newsizemax = offset + ( | - | ||||||||||||||||||
123 | (
| 0 | ||||||||||||||||||
124 | < 0x7fffffffffffffffL
| 0 | ||||||||||||||||||
125 | (9223372036854775807L) | - | ||||||||||||||||||
126 | : 0x7fffffffffffffffL) + 1; | - | ||||||||||||||||||
127 | if (size == newsizemax
| 0 | ||||||||||||||||||
128 | goto never executed: unlock_done;goto unlock_done; never executed: goto unlock_done; | 0 | ||||||||||||||||||
129 | newsize = newsizemax; | - | ||||||||||||||||||
130 | } never executed: end of block | 0 | ||||||||||||||||||
131 | - | |||||||||||||||||||
132 | nbytes_avail = newsize - (read_pos - ptr); | - | ||||||||||||||||||
133 | newptr = realloc (ptr, newsize); | - | ||||||||||||||||||
134 | if (!newptr
| 0 | ||||||||||||||||||
135 | goto never executed: unlock_done;goto unlock_done; never executed: goto unlock_done; | 0 | ||||||||||||||||||
136 | ptr = newptr; | - | ||||||||||||||||||
137 | size = newsize; | - | ||||||||||||||||||
138 | read_pos = size - nbytes_avail + ptr; | - | ||||||||||||||||||
139 | } never executed: end of block | 0 | ||||||||||||||||||
140 | - | |||||||||||||||||||
141 | - | |||||||||||||||||||
142 | - | |||||||||||||||||||
143 | - | |||||||||||||||||||
144 | if (1 < nbytes_avail
| 0-110 | ||||||||||||||||||
145 | { | - | ||||||||||||||||||
146 | size_t copy_len = nbytes_avail - 1; | - | ||||||||||||||||||
147 | if (buffer_len < copy_len
| 0-110 | ||||||||||||||||||
148 | copy_len = buffer_len; executed 110 times by 1 test: copy_len = buffer_len; Executed by:
| 110 | ||||||||||||||||||
149 | if (buffer
| 0-110 | ||||||||||||||||||
150 | memcpy (read_pos, buffer, copy_len); executed 110 times by 1 test: memcpy (read_pos, buffer, copy_len); Executed by:
| 110 | ||||||||||||||||||
151 | else | - | ||||||||||||||||||
152 | * never executed: read_pos = c;*read_pos = c; never executed: *read_pos = c; | 0 | ||||||||||||||||||
153 | read_pos += copy_len; | - | ||||||||||||||||||
154 | nbytes_avail -= copy_len; | - | ||||||||||||||||||
155 | } executed 110 times by 1 test: end of block Executed by:
| 110 | ||||||||||||||||||
156 | - | |||||||||||||||||||
157 | - | |||||||||||||||||||
158 | - | |||||||||||||||||||
159 | if (buffer
| 0-110 | ||||||||||||||||||
160 | goto never executed: unlock_done;goto unlock_done; never executed: goto unlock_done; | 0 | ||||||||||||||||||
161 | } executed 110 times by 1 test: end of block Executed by:
| 110 | ||||||||||||||||||
162 | while (!found_delimiter
| 5-105 | ||||||||||||||||||
163 | - | |||||||||||||||||||
164 | - | |||||||||||||||||||
165 | - | |||||||||||||||||||
166 | *read_pos = '\0'; | - | ||||||||||||||||||
167 | - | |||||||||||||||||||
168 | bytes_stored = read_pos - (ptr + offset); | - | ||||||||||||||||||
169 | - | |||||||||||||||||||
170 | unlock_done: code before this statement executed 110 times by 1 test: unlock_done: Executed by:
| 110 | ||||||||||||||||||
171 | ((void) 0); | - | ||||||||||||||||||
172 | - | |||||||||||||||||||
173 | done: code before this statement executed 166 times by 1 test: done: Executed by:
| 166 | ||||||||||||||||||
174 | *lineptr = ptr; | - | ||||||||||||||||||
175 | *linesize = size; | - | ||||||||||||||||||
176 | return executed 166 times by 1 test: bytes_stored ? bytes_stored : -1;return bytes_stored ? bytes_stored : -1; Executed by:
executed 166 times by 1 test: return bytes_stored ? bytes_stored : -1; Executed by:
| 166 | ||||||||||||||||||
177 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |