Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | | - |
20 | | - |
21 | | - |
22 | | - |
23 | | - |
24 | | - |
25 | | - |
26 | | - |
27 | extern char *sh_get_home_dir (void); | - |
28 | extern char *sh_get_env_value (const char *); | - |
29 | | - |
30 | | - |
31 | | - |
32 | | - |
33 | static const char *default_prefixes[] = | - |
34 | { " ~", "\t~", (const char *) | - |
35 | ((void *)0) | - |
36 | }; | - |
37 | | - |
38 | | - |
39 | | - |
40 | | - |
41 | static const char *default_suffixes[] = | - |
42 | { " ", "\n", (const char *) | - |
43 | ((void *)0) | - |
44 | }; | - |
45 | | - |
46 | | - |
47 | | - |
48 | | - |
49 | | - |
50 | tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *) | - |
51 | ((void *)0) | - |
52 | ; | - |
53 | | - |
54 | | - |
55 | | - |
56 | | - |
57 | | - |
58 | tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *) | - |
59 | ((void *)0) | - |
60 | ; | - |
61 | | - |
62 | | - |
63 | | - |
64 | | - |
65 | char **tilde_additional_prefixes = (char **)default_prefixes; | - |
66 | | - |
67 | | - |
68 | | - |
69 | | - |
70 | char **tilde_additional_suffixes = (char **)default_suffixes; | - |
71 | | - |
72 | static int tilde_find_prefix (const char *, int *); | - |
73 | static int tilde_find_suffix (const char *); | - |
74 | static char *isolate_tilde_prefix (const char *, int *); | - |
75 | static char *glue_prefix_and_suffix (char *, const char *, int); | - |
76 | | - |
77 | | - |
78 | | - |
79 | | - |
80 | static int | - |
81 | tilde_find_prefix (const char *string, int *len) | - |
82 | { | - |
83 | register int i, j, string_len; | - |
84 | register char **prefixes; | - |
85 | | - |
86 | prefixes = tilde_additional_prefixes; | - |
87 | | - |
88 | string_len = strlen (string); | - |
89 | *len = 0; | - |
90 | | - |
91 | if (*TRUE | evaluated 51 times by 1 test | FALSE | evaluated 55 times by 1 test |
string == '\0'TRUE | evaluated 51 times by 1 test | FALSE | evaluated 55 times by 1 test |
|| *TRUE | evaluated 50 times by 1 test | FALSE | evaluated 5 times by 1 test |
string == '~'TRUE | evaluated 50 times by 1 test | FALSE | evaluated 5 times by 1 test |
) | 5-55 |
92 | returnexecuted 101 times by 1 test: return (0); (0);executed 101 times by 1 test: return (0); | 101 |
93 | | - |
94 | if (prefixesTRUE | never evaluated | FALSE | evaluated 5 times by 1 test |
) | 0-5 |
95 | { | - |
96 | for (i = 0; i < string_lenTRUE | never evaluated | FALSE | never evaluated |
; i++) | 0 |
97 | { | - |
98 | for (j = 0; prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
; j++) | 0 |
99 | { | - |
100 | if ( | - |
101 | (TRUE | never evaluated | FALSE | never evaluated |
__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
102 | strlen (prefixes[j])TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
103 | )TRUE | never evaluated | FALSE | never evaluated |
&& ((__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
104 | string + iTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
105 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
106 | string + iTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
107 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
108 | strlen (prefixes[j])TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
109 | ))TRUE | never evaluated | FALSE | never evaluated |
) || (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
110 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
111 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
112 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
113 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
114 | strlen (prefixes[j])TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
115 | ))TRUE | never evaluated | FALSE | never evaluated |
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
116 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
117 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
118 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
119 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
120 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
121 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
122 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
123 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
124 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
125 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
126 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
127 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
128 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
129 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
130 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
131 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
132 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
133 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
134 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
135 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
136 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
137 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
138 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
139 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
140 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
141 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
142 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
143 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
144 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
145 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
146 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
147 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
148 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
149 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
150 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
151 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
152 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
153 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
154 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
155 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
156 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
157 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
158 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
159 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
160 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
161 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( string + i ))[3] - __s2[3]); | 0 |
162 | string + iTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( string + i ))[3] - __s2[3]); | 0 |
163 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
164 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
165 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
166 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
167 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
168 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
169 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
170 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
171 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
172 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
173 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
174 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
175 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
176 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
177 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
178 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
179 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
180 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
181 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
182 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
183 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
184 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
185 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
186 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
187 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
188 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
189 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( prefixes[j] ))[3] - __s2[3]); | 0 |
190 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( prefixes[j] ))[3] - __s2[3]); | 0 |
191 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
192 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
193 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
194 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
195 | )))); }) : strncmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
196 | string + iTRUE | never evaluated | FALSE | never evaluated |
| 0 |
197 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
198 | prefixes[j]TRUE | never evaluated | FALSE | never evaluated |
| 0 |
199 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
200 | strlen (prefixes[j])TRUE | never evaluated | FALSE | never evaluated |
| 0 |
201 | ))) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
202 | == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
203 | { | - |
204 | *len = strlen (prefixes[j]) - 1; | - |
205 | return never executed: return (i + *len); (i + *len);never executed: return (i + *len); | 0 |
206 | } | - |
207 | } never executed: end of block | 0 |
208 | } never executed: end of block | 0 |
209 | } never executed: end of block | 0 |
210 | returnexecuted 5 times by 1 test: return (string_len); (string_len);executed 5 times by 1 test: return (string_len); | 5 |
211 | } | - |
212 | | - |
213 | | - |
214 | | - |
215 | static int | - |
216 | tilde_find_suffix (const char *string) | - |
217 | { | - |
218 | register int i, j, string_len; | - |
219 | register char **suffixes; | - |
220 | | - |
221 | suffixes = tilde_additional_suffixes; | - |
222 | string_len = strlen (string); | - |
223 | | - |
224 | for (i = 0; i < string_lenTRUE | evaluated 71 times by 1 test | FALSE | evaluated 102 times by 1 test |
; i++) | 71-102 |
225 | { | - |
226 | | - |
227 | | - |
228 | | - |
229 | if (string[i] == '/'TRUE | evaluated 4 times by 1 test | FALSE | evaluated 67 times by 1 test |
) | 4-67 |
230 | | - |
231 | break;executed 4 times by 1 test: break; | 4 |
232 | | - |
233 | for (j = 0; suffixesTRUE | evaluated 166 times by 1 test | FALSE | never evaluated |
&& suffixes[j]TRUE | evaluated 99 times by 1 test | FALSE | evaluated 67 times by 1 test |
; j++) | 0-166 |
234 | { | - |
235 | if ( | - |
236 | (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
__extension__ (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
237 | strlen (suffixes[j])TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
238 | )TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
&& ((__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
239 | string + iTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
240 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
241 | string + iTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
242 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
243 | strlen (suffixes[j])TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
244 | ))TRUE | never evaluated | FALSE | never evaluated |
) || (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
245 | suffixes[j]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
246 | )TRUE | never evaluated | FALSE | never evaluated |
&& strlen (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
247 | suffixes[j]TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
248 | ) < ((size_t) (TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
249 | strlen (suffixes[j])TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
250 | ))TRUE | never evaluated | FALSE | never evaluated |
)) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
251 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
252 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
253 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
254 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
255 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
256 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
257 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
258 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
259 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
260 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
261 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
262 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
263 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
264 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
265 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
266 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
267 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
268 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
269 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
270 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
271 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
272 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
273 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
274 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
275 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
276 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
277 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
278 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
279 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
280 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
281 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
282 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
283 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
284 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
285 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
286 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
287 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
288 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
289 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
290 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
291 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
292 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
293 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
294 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
295 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
296 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( string + i ))[3] - __s2[3]); TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
297 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( string + i ))[3] - __s2[3]); | 0-99 |
298 | ))[3] - __s2[3]);TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( string + i ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
299 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
300 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
301 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
302 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
303 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
304 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
305 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
306 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
307 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
308 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
309 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
310 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
311 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
312 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
313 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
314 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
315 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
316 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
317 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
318 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
319 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
320 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
321 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
322 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
323 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
324 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( suffixes[j] ))[3] - __s2[3]); TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
325 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( suffixes[j] ))[3] - __s2[3]); | 0-99 |
326 | ))[3] - __s2[3]);TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( suffixes[j] ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
327 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
328 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
329 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
330 | )))); }) : strncmp (TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
331 | string + iTRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
332 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
333 | suffixes[j]TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
334 | , TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
335 | strlen (suffixes[j])TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
336 | ))) TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
| 0-99 |
337 | == 0TRUE | never evaluated | FALSE | evaluated 99 times by 1 test |
) | 0-99 |
338 | return never executed: return (i); (i);never executed: return (i); | 0 |
339 | }executed 99 times by 1 test: end of block | 99 |
340 | }executed 67 times by 1 test: end of block | 67 |
341 | returnexecuted 106 times by 1 test: return (i); (i);executed 106 times by 1 test: return (i); | 106 |
342 | } | - |
343 | | - |
344 | | - |
345 | char * | - |
346 | tilde_expand (const char *string) | - |
347 | { | - |
348 | char *result; | - |
349 | int result_size, result_index; | - |
350 | | - |
351 | result_index = result_size = 0; | - |
352 | if (result = TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
353 | (__extension__ (__builtin_constant_p (TRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
354 | '~'TRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
355 | )TRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
&& !__builtin_constant_p (TRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
356 | stringTRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
357 | )TRUE | evaluated 51 times by 1 test | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | evaluated 51 times by 1 test |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
358 | '~'TRUE | never evaluated | FALSE | evaluated 51 times by 1 test |
TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
359 | ) == '\0'TRUE | never evaluated | FALSE | evaluated 51 times by 1 test |
? (char *) __rawmemchr (TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 0-51 |
360 | stringTRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
361 | , TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
362 | '~'TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
363 | ) : __builtin_strchr (TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
364 | stringTRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
365 | , TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
366 | '~'TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
367 | )))TRUE | evaluated 50 times by 1 test | FALSE | evaluated 1 time by 1 test |
| 1-50 |
368 | ) | - |
369 | result = (char *)xmalloc (result_size = (strlen (string) + 16));executed 50 times by 1 test: result = (char *)xmalloc (result_size = (strlen (string) + 16)); | 50 |
370 | else | - |
371 | result = (char *)xmalloc (result_size = (strlen (string) + 1));executed 1 time by 1 test: result = (char *)xmalloc (result_size = (strlen (string) + 1)); | 1 |
372 | | - |
373 | | - |
374 | while (1) | - |
375 | { | - |
376 | register int start, end; | - |
377 | char *tilde_word, *expansion; | - |
378 | int len; | - |
379 | | - |
380 | | - |
381 | start = tilde_find_prefix (string, &len); | - |
382 | | - |
383 | | - |
384 | if ((TRUE | evaluated 4 times by 1 test | FALSE | evaluated 102 times by 1 test |
result_index + start + 1) > result_sizeTRUE | evaluated 4 times by 1 test | FALSE | evaluated 102 times by 1 test |
) | 4-102 |
385 | result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));executed 4 times by 1 test: result = (char *)xrealloc (result, 1 + (result_size += (start + 20))); | 4 |
386 | | - |
387 | | - |
388 | __builtin_strncpy ( | - |
389 | result + result_index | - |
390 | , | - |
391 | string | - |
392 | , | - |
393 | start | - |
394 | ) | - |
395 | ; | - |
396 | result_index += start; | - |
397 | | - |
398 | | - |
399 | string += start; | - |
400 | | - |
401 | | - |
402 | | - |
403 | end = tilde_find_suffix (string); | - |
404 | | - |
405 | | - |
406 | if (!startTRUE | evaluated 101 times by 1 test | FALSE | evaluated 5 times by 1 test |
&& !endTRUE | evaluated 51 times by 1 test | FALSE | evaluated 50 times by 1 test |
) | 5-101 |
407 | break;executed 51 times by 1 test: break; | 51 |
408 | | - |
409 | | - |
410 | tilde_word = (char *)xmalloc (1 + end); | - |
411 | | - |
412 | __builtin_strncpy ( | - |
413 | tilde_word | - |
414 | , | - |
415 | string | - |
416 | , | - |
417 | end | - |
418 | ) | - |
419 | ; | - |
420 | tilde_word[end] = '\0'; | - |
421 | string += end; | - |
422 | | - |
423 | expansion = tilde_expand_word (tilde_word); | - |
424 | | - |
425 | if (expansion == 0TRUE | never evaluated | FALSE | evaluated 55 times by 1 test |
) | 0-55 |
426 | expansion = tilde_word; never executed: expansion = tilde_word; | 0 |
427 | else | - |
428 | xfree (tilde_word);executed 55 times by 1 test: xfree (tilde_word); | 55 |
429 | | - |
430 | len = strlen (expansion); | - |
431 | | - |
432 | | - |
433 | | - |
434 | | - |
435 | | - |
436 | { | - |
437 | if ((TRUE | evaluated 6 times by 1 test | FALSE | evaluated 49 times by 1 test |
result_index + len + 1) > result_sizeTRUE | evaluated 6 times by 1 test | FALSE | evaluated 49 times by 1 test |
) | 6-49 |
438 | result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));executed 6 times by 1 test: result = (char *)xrealloc (result, 1 + (result_size += (len + 20))); | 6 |
439 | | - |
440 | strcpy (result + result_index, expansion); | - |
441 | result_index += len; | - |
442 | } | - |
443 | xfree (expansion); | - |
444 | }executed 55 times by 1 test: end of block | 55 |
445 | | - |
446 | result[result_index] = '\0'; | - |
447 | | - |
448 | returnexecuted 51 times by 1 test: return (result); (result);executed 51 times by 1 test: return (result); | 51 |
449 | } | - |
450 | | - |
451 | | - |
452 | | - |
453 | | - |
454 | static char * | - |
455 | isolate_tilde_prefix (const char *fname, int *lenp) | - |
456 | { | - |
457 | char *ret; | - |
458 | int i; | - |
459 | | - |
460 | ret = (char *)xmalloc (strlen (fname)); | - |
461 | | - |
462 | | - |
463 | | - |
464 | for (i = 1; fname[i]TRUE | evaluated 17 times by 1 test | FALSE | evaluated 10 times by 1 test |
&& fname[i] != '/'TRUE | evaluated 17 times by 1 test | FALSE | never evaluated |
; i++) | 0-17 |
465 | | - |
466 | ret[i - 1] = fname[i];executed 17 times by 1 test: ret[i - 1] = fname[i]; | 17 |
467 | ret[i - 1] = '\0'; | - |
468 | if (lenpTRUE | evaluated 10 times by 1 test | FALSE | never evaluated |
) | 0-10 |
469 | *executed 10 times by 1 test: *lenp = i; lenp = i;executed 10 times by 1 test: *lenp = i; | 10 |
470 | returnexecuted 10 times by 1 test: return ret; ret;executed 10 times by 1 test: return ret; | 10 |
471 | } | - |
472 | static char * | - |
473 | glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) | - |
474 | { | - |
475 | char *ret; | - |
476 | int plen, slen; | - |
477 | | - |
478 | plen = (prefixTRUE | evaluated 48 times by 1 test | FALSE | never evaluated |
&& *TRUE | evaluated 48 times by 1 test | FALSE | never evaluated |
prefixTRUE | evaluated 48 times by 1 test | FALSE | never evaluated |
) ? strlen (prefix) : 0; | 0-48 |
479 | slen = strlen (suffix + suffind); | - |
480 | ret = (char *)xmalloc (plen + slen + 1); | - |
481 | if (plenTRUE | evaluated 48 times by 1 test | FALSE | never evaluated |
) | 0-48 |
482 | strcpy (ret, prefix);executed 48 times by 1 test: strcpy (ret, prefix); | 48 |
483 | strcpy (ret + plen, suffix + suffind); | - |
484 | returnexecuted 48 times by 1 test: return ret; ret;executed 48 times by 1 test: return ret; | 48 |
485 | } | - |
486 | | - |
487 | | - |
488 | | - |
489 | | - |
490 | char * | - |
491 | tilde_expand_word (const char *filename) | - |
492 | { | - |
493 | char *dirname, *expansion, *username; | - |
494 | int user_len; | - |
495 | struct passwd *user_entry; | - |
496 | | - |
497 | if (filename == 0TRUE | never evaluated | FALSE | evaluated 55 times by 1 test |
) | 0-55 |
498 | return never executed: return ((char *) ((void *)0) ); ((char *)never executed: return ((char *) ((void *)0) ); | 0 |
499 | ((void *)0) never executed: return ((char *) ((void *)0) ); | 0 |
500 | ); never executed: return ((char *) ((void *)0) ); | 0 |
501 | | - |
502 | if (*TRUE | evaluated 5 times by 1 test | FALSE | evaluated 50 times by 1 test |
filename != '~'TRUE | evaluated 5 times by 1 test | FALSE | evaluated 50 times by 1 test |
) | 5-50 |
503 | returnexecuted 5 times by 1 test: return (strcpy ((char *)xmalloc (1 + strlen (filename)), (filename))); (strcpy ((char *)xmalloc (1 + strlen (filename)), (filename)));executed 5 times by 1 test: return (strcpy ((char *)xmalloc (1 + strlen (filename)), (filename))); | 5 |
504 | | - |
505 | | - |
506 | | - |
507 | | - |
508 | if (filename[1] == '\0'TRUE | evaluated 40 times by 1 test | FALSE | evaluated 10 times by 1 test |
|| filename[1] == '/'TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
) | 0-40 |
509 | { | - |
510 | | - |
511 | expansion = sh_get_env_value ("HOME"); | - |
512 | | - |
513 | | - |
514 | | - |
515 | | - |
516 | | - |
517 | | - |
518 | | - |
519 | if (expansion == 0TRUE | never evaluated | FALSE | evaluated 40 times by 1 test |
) | 0-40 |
520 | expansion = sh_get_home_dir (); never executed: expansion = sh_get_home_dir (); | 0 |
521 | | - |
522 | returnexecuted 40 times by 1 test: return (glue_prefix_and_suffix (expansion, filename, 1)); (glue_prefix_and_suffix (expansion, filename, 1));executed 40 times by 1 test: return (glue_prefix_and_suffix (expansion, filename, 1)); | 40 |
523 | } | - |
524 | | - |
525 | username = isolate_tilde_prefix (filename, &user_len); | - |
526 | | - |
527 | if (tilde_expansion_preexpansion_hookTRUE | evaluated 10 times by 1 test | FALSE | never evaluated |
) | 0-10 |
528 | { | - |
529 | expansion = (*tilde_expansion_preexpansion_hook) (username); | - |
530 | if (expansionTRUE | evaluated 8 times by 1 test | FALSE | evaluated 2 times by 1 test |
) | 2-8 |
531 | { | - |
532 | dirname = glue_prefix_and_suffix (expansion, filename, user_len); | - |
533 | xfree (username); | - |
534 | xfree (expansion); | - |
535 | returnexecuted 8 times by 1 test: return (dirname); (dirname);executed 8 times by 1 test: return (dirname); | 8 |
536 | } | - |
537 | }executed 2 times by 1 test: end of block | 2 |
538 | | - |
539 | | - |
540 | | - |
541 | dirname = (char *) | - |
542 | ((void *)0) | - |
543 | ; | - |
544 | | - |
545 | user_entry = getpwnam (username); | - |
546 | | - |
547 | | - |
548 | | - |
549 | if (user_entry == 0TRUE | evaluated 2 times by 1 test | FALSE | never evaluated |
) | 0-2 |
550 | { | - |
551 | | - |
552 | | - |
553 | if (tilde_expansion_failure_hookTRUE | never evaluated | FALSE | evaluated 2 times by 1 test |
) | 0-2 |
554 | { | - |
555 | expansion = (*tilde_expansion_failure_hook) (username); | - |
556 | if (expansionTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
557 | { | - |
558 | dirname = glue_prefix_and_suffix (expansion, filename, user_len); | - |
559 | xfree (expansion); | - |
560 | } never executed: end of block | 0 |
561 | } never executed: end of block | 0 |
562 | | - |
563 | | - |
564 | if (dirname == 0TRUE | evaluated 2 times by 1 test | FALSE | never evaluated |
) | 0-2 |
565 | dirname = strcpy ((char *)xmalloc (1 + strlen (filename)), (filename));executed 2 times by 1 test: dirname = strcpy ((char *)xmalloc (1 + strlen (filename)), (filename)); | 2 |
566 | }executed 2 times by 1 test: end of block | 2 |
567 | | - |
568 | else | - |
569 | dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); never executed: dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); | 0 |
570 | | - |
571 | | - |
572 | xfree (username); | - |
573 | | - |
574 | endpwent (); | - |
575 | | - |
576 | returnexecuted 2 times by 1 test: return (dirname); (dirname);executed 2 times by 1 test: return (dirname); | 2 |
577 | } | - |
| | |