]> git.ipfire.org Git - thirdparty/glibc.git/blob - posix/tst-fnmatch.input
wordexp: Rewrite parse_tilde to use struct scratch_buffer [BZ #18023]
[thirdparty/glibc.git] / posix / tst-fnmatch.input
1 # Tests for fnmatch.
2 # Copyright (C) 2000-2018 Free Software Foundation, Inc.
3 # This file is part of the GNU C Library.
4 # Contributes by Ulrich Drepper <drepper@redhat.com>.
5 #
6
7 # The GNU C Library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License, or (at your option) any later version.
11
12 # The GNU C Library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
16
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with the GNU C Library; if not, see
19 # <http://www.gnu.org/licenses/>.
20
21
22 # Derived from the IEEE 2003.2 text. The standard only contains some
23 # wording describing the situations to be tested. It does not specify
24 # any specific tests. I.e., the tests below are in no case sufficient.
25 # They are hopefully necessary, though.
26
27 # B.6 004(C)
28 C "!#%+,-./01234567889" "!#%+,-./01234567889" 0
29 C ":;=@ABCDEFGHIJKLMNO" ":;=@ABCDEFGHIJKLMNO" 0
30 C "PQRSTUVWXYZ]abcdefg" "PQRSTUVWXYZ]abcdefg" 0
31 C "hijklmnopqrstuvwxyz" "hijklmnopqrstuvwxyz" 0
32 C "^_{}~" "^_{}~" 0
33
34 # B.6 005(C)
35 C "\"$&'()" "\\\"\\$\\&\\'\\(\\)" 0
36 C "*?[\\`|" "\\*\\?\\[\\\\\\`\\|" 0
37 C "<>" "\\<\\>" 0
38
39 # B.6 006(C)
40 C "?*[" "[?*[][?*[][?*[]" 0
41 C "a/b" "?/b" 0
42
43 # B.6 007(C)
44 C "a/b" "a?b" 0
45 C "a/b" "a/?" 0
46 C "aa/b" "?/b" NOMATCH
47 C "aa/b" "a?b" NOMATCH
48 C "a/bb" "a/?" NOMATCH
49
50 # B.6 009(C)
51 C "abc" "[abc]" NOMATCH
52 C "x" "[abc]" NOMATCH
53 C "a" "[abc]" 0
54 C "[" "[[abc]" 0
55 C "a" "[][abc]" 0
56 C "a]" "[]a]]" 0
57
58 # B.6 010(C)
59 C "xyz" "[!abc]" NOMATCH
60 C "x" "[!abc]" 0
61 C "a" "[!abc]" NOMATCH
62
63 # B.6 011(C)
64 C "]" "[][abc]" 0
65 C "abc]" "[][abc]" NOMATCH
66 C "[]abc" "[][]abc" NOMATCH
67 C "]" "[!]]" NOMATCH
68 C "aa]" "[!]a]" NOMATCH
69 C "]" "[!a]" 0
70 C "]]" "[!a]]" 0
71
72 # B.6 012(C)
73 C "a" "[[.a.]]" 0
74 C "-" "[[.-.]]" 0
75 C "-" "[[.-.][.].]]" 0
76 C "-" "[[.].][.-.]]" 0
77 C "-" "[[.-.][=u=]]" 0
78 C "-" "[[.-.][:alpha:]]" 0
79 C "a" "[![.a.]]" NOMATCH
80
81 # B.6 013(C)
82 C "a" "[[.b.]]" NOMATCH
83 C "a" "[[.b.][.c.]]" NOMATCH
84 C "a" "[[.b.][=b=]]" NOMATCH
85
86
87 # B.6 015(C)
88 C "a" "[[=a=]]" 0
89 C "b" "[[=a=]b]" 0
90 C "b" "[[=a=][=b=]]" 0
91 C "a" "[[=a=][=b=]]" 0
92 C "a" "[[=a=][.b.]]" 0
93 C "a" "[[=a=][:digit:]]" 0
94
95 # B.6 016(C)
96 C "=" "[[=a=]b]" NOMATCH
97 C "]" "[[=a=]b]" NOMATCH
98 C "a" "[[=b=][=c=]]" NOMATCH
99 C "a" "[[=b=][.].]]" NOMATCH
100 C "a" "[[=b=][:digit:]]" NOMATCH
101
102 # B.6 017(C)
103 C "a" "[[:alnum:]]" 0
104 C "a" "[![:alnum:]]" NOMATCH
105 C "-" "[[:alnum:]]" NOMATCH
106 C "a]a" "[[:alnum:]]a" NOMATCH
107 C "-" "[[:alnum:]-]" 0
108 C "aa" "[[:alnum:]]a" 0
109 C "-" "[![:alnum:]]" 0
110 C "]" "[!][:alnum:]]" NOMATCH
111 C "[" "[![:alnum:][]" NOMATCH
112 C "a" "[[:alnum:]]" 0
113 C "b" "[[:alnum:]]" 0
114 C "c" "[[:alnum:]]" 0
115 C "d" "[[:alnum:]]" 0
116 C "e" "[[:alnum:]]" 0
117 C "f" "[[:alnum:]]" 0
118 C "g" "[[:alnum:]]" 0
119 C "h" "[[:alnum:]]" 0
120 C "i" "[[:alnum:]]" 0
121 C "j" "[[:alnum:]]" 0
122 C "k" "[[:alnum:]]" 0
123 C "l" "[[:alnum:]]" 0
124 C "m" "[[:alnum:]]" 0
125 C "n" "[[:alnum:]]" 0
126 C "o" "[[:alnum:]]" 0
127 C "p" "[[:alnum:]]" 0
128 C "q" "[[:alnum:]]" 0
129 C "r" "[[:alnum:]]" 0
130 C "s" "[[:alnum:]]" 0
131 C "t" "[[:alnum:]]" 0
132 C "u" "[[:alnum:]]" 0
133 C "v" "[[:alnum:]]" 0
134 C "w" "[[:alnum:]]" 0
135 C "x" "[[:alnum:]]" 0
136 C "y" "[[:alnum:]]" 0
137 C "z" "[[:alnum:]]" 0
138 C "A" "[[:alnum:]]" 0
139 C "B" "[[:alnum:]]" 0
140 C "C" "[[:alnum:]]" 0
141 C "D" "[[:alnum:]]" 0
142 C "E" "[[:alnum:]]" 0
143 C "F" "[[:alnum:]]" 0
144 C "G" "[[:alnum:]]" 0
145 C "H" "[[:alnum:]]" 0
146 C "I" "[[:alnum:]]" 0
147 C "J" "[[:alnum:]]" 0
148 C "K" "[[:alnum:]]" 0
149 C "L" "[[:alnum:]]" 0
150 C "M" "[[:alnum:]]" 0
151 C "N" "[[:alnum:]]" 0
152 C "O" "[[:alnum:]]" 0
153 C "P" "[[:alnum:]]" 0
154 C "Q" "[[:alnum:]]" 0
155 C "R" "[[:alnum:]]" 0
156 C "S" "[[:alnum:]]" 0
157 C "T" "[[:alnum:]]" 0
158 C "U" "[[:alnum:]]" 0
159 C "V" "[[:alnum:]]" 0
160 C "W" "[[:alnum:]]" 0
161 C "X" "[[:alnum:]]" 0
162 C "Y" "[[:alnum:]]" 0
163 C "Z" "[[:alnum:]]" 0
164 C "0" "[[:alnum:]]" 0
165 C "1" "[[:alnum:]]" 0
166 C "2" "[[:alnum:]]" 0
167 C "3" "[[:alnum:]]" 0
168 C "4" "[[:alnum:]]" 0
169 C "5" "[[:alnum:]]" 0
170 C "6" "[[:alnum:]]" 0
171 C "7" "[[:alnum:]]" 0
172 C "8" "[[:alnum:]]" 0
173 C "9" "[[:alnum:]]" 0
174 C "!" "[[:alnum:]]" NOMATCH
175 C "#" "[[:alnum:]]" NOMATCH
176 C "%" "[[:alnum:]]" NOMATCH
177 C "+" "[[:alnum:]]" NOMATCH
178 C "," "[[:alnum:]]" NOMATCH
179 C "-" "[[:alnum:]]" NOMATCH
180 C "." "[[:alnum:]]" NOMATCH
181 C "/" "[[:alnum:]]" NOMATCH
182 C ":" "[[:alnum:]]" NOMATCH
183 C ";" "[[:alnum:]]" NOMATCH
184 C "=" "[[:alnum:]]" NOMATCH
185 C "@" "[[:alnum:]]" NOMATCH
186 C "[" "[[:alnum:]]" NOMATCH
187 C "\\" "[[:alnum:]]" NOMATCH
188 C "]" "[[:alnum:]]" NOMATCH
189 C "^" "[[:alnum:]]" NOMATCH
190 C "_" "[[:alnum:]]" NOMATCH
191 C "{" "[[:alnum:]]" NOMATCH
192 C "}" "[[:alnum:]]" NOMATCH
193 C "~" "[[:alnum:]]" NOMATCH
194 C "\"" "[[:alnum:]]" NOMATCH
195 C "$" "[[:alnum:]]" NOMATCH
196 C "&" "[[:alnum:]]" NOMATCH
197 C "'" "[[:alnum:]]" NOMATCH
198 C "(" "[[:alnum:]]" NOMATCH
199 C ")" "[[:alnum:]]" NOMATCH
200 C "*" "[[:alnum:]]" NOMATCH
201 C "?" "[[:alnum:]]" NOMATCH
202 C "`" "[[:alnum:]]" NOMATCH
203 C "|" "[[:alnum:]]" NOMATCH
204 C "<" "[[:alnum:]]" NOMATCH
205 C ">" "[[:alnum:]]" NOMATCH
206 C "\t" "[[:cntrl:]]" 0
207 C "t" "[[:cntrl:]]" NOMATCH
208 C "t" "[[:lower:]]" 0
209 C "\t" "[[:lower:]]" NOMATCH
210 C "T" "[[:lower:]]" NOMATCH
211 C "\t" "[[:space:]]" 0
212 C "t" "[[:space:]]" NOMATCH
213 C "t" "[[:alpha:]]" 0
214 C "\t" "[[:alpha:]]" NOMATCH
215 C "0" "[[:digit:]]" 0
216 C "\t" "[[:digit:]]" NOMATCH
217 C "t" "[[:digit:]]" NOMATCH
218 C "\t" "[[:print:]]" NOMATCH
219 C "t" "[[:print:]]" 0
220 C "T" "[[:upper:]]" 0
221 C "\t" "[[:upper:]]" NOMATCH
222 C "t" "[[:upper:]]" NOMATCH
223 C "\t" "[[:blank:]]" 0
224 C "t" "[[:blank:]]" NOMATCH
225 C "\t" "[[:graph:]]" NOMATCH
226 C "t" "[[:graph:]]" 0
227 C "." "[[:punct:]]" 0
228 C "t" "[[:punct:]]" NOMATCH
229 C "\t" "[[:punct:]]" NOMATCH
230 C "0" "[[:xdigit:]]" 0
231 C "\t" "[[:xdigit:]]" NOMATCH
232 C "a" "[[:xdigit:]]" 0
233 C "A" "[[:xdigit:]]" 0
234 C "t" "[[:xdigit:]]" NOMATCH
235 C "a" "[[alpha]]" NOMATCH
236 C "a" "[[alpha:]]" NOMATCH
237 C "a]" "[[alpha]]" 0
238 C "a]" "[[alpha:]]" 0
239 C "a" "[[:alpha:][.b.]]" 0
240 C "a" "[[:alpha:][=b=]]" 0
241 C "a" "[[:alpha:][:digit:]]" 0
242 C "a" "[[:digit:][:alpha:]]" 0
243
244 # B.6 018(C)
245 C "a" "[a-c]" 0
246 C "b" "[a-c]" 0
247 C "c" "[a-c]" 0
248 C "a" "[b-c]" NOMATCH
249 C "d" "[b-c]" NOMATCH
250 C "B" "[a-c]" NOMATCH
251 C "b" "[A-C]" NOMATCH
252 C "" "[a-c]" NOMATCH
253 C "as" "[a-ca-z]" NOMATCH
254 C "a" "[[.a.]-c]" 0
255 C "a" "[a-[.c.]]" 0
256 C "a" "[[.a.]-[.c.]]" 0
257 C "b" "[[.a.]-c]" 0
258 C "b" "[a-[.c.]]" 0
259 C "b" "[[.a.]-[.c.]]" 0
260 C "c" "[[.a.]-c]" 0
261 C "c" "[a-[.c.]]" 0
262 C "c" "[[.a.]-[.c.]]" 0
263 C "d" "[[.a.]-c]" NOMATCH
264 C "d" "[a-[.c.]]" NOMATCH
265 C "d" "[[.a.]-[.c.]]" NOMATCH
266
267 # B.6 019(C)
268 C "a" "[c-a]" NOMATCH
269 C "a" "[[.c.]-a]" NOMATCH
270 C "a" "[c-[.a.]]" NOMATCH
271 C "a" "[[.c.]-[.a.]]" NOMATCH
272 C "c" "[c-a]" NOMATCH
273 C "c" "[[.c.]-a]" NOMATCH
274 C "c" "[c-[.a.]]" NOMATCH
275 C "c" "[[.c.]-[.a.]]" NOMATCH
276
277 # B.6 020(C)
278 C "a" "[a-c0-9]" 0
279 C "d" "[a-c0-9]" NOMATCH
280 C "B" "[a-c0-9]" NOMATCH
281
282 # B.6 021(C)
283 C "-" "[-a]" 0
284 C "a" "[-b]" NOMATCH
285 C "-" "[!-a]" NOMATCH
286 C "a" "[!-b]" 0
287 C "-" "[a-c-0-9]" 0
288 C "b" "[a-c-0-9]" 0
289 C "a:" "a[0-9-a]" NOMATCH
290 C "a:" "a[09-a]" 0
291
292 # B.6 024(C)
293 C "" "*" 0
294 C "asd/sdf" "*" 0
295
296 # B.6 025(C)
297 C "as" "[a-c][a-z]" 0
298 C "as" "??" 0
299
300 # B.6 026(C)
301 C "asd/sdf" "as*df" 0
302 C "asd/sdf" "as*" 0
303 C "asd/sdf" "*df" 0
304 C "asd/sdf" "as*dg" NOMATCH
305 C "asdf" "as*df" 0
306 C "asdf" "as*df?" NOMATCH
307 C "asdf" "as*??" 0
308 C "asdf" "a*???" 0
309 C "asdf" "*????" 0
310 C "asdf" "????*" 0
311 C "asdf" "??*?" 0
312
313 # B.6 027(C)
314 C "/" "/" 0
315 C "/" "/*" 0
316 C "/" "*/" 0
317 C "/" "/?" NOMATCH
318 C "/" "?/" NOMATCH
319 C "/" "?" 0
320 C "." "?" 0
321 C "/." "??" 0
322 C "/" "[!a-c]" 0
323 C "." "[!a-c]" 0
324
325 # B.6 029(C)
326 C "/" "/" 0 PATHNAME
327 C "//" "//" 0 PATHNAME
328 C "/.a" "/*" 0 PATHNAME
329 C "/.a" "/?a" 0 PATHNAME
330 C "/.a" "/[!a-z]a" 0 PATHNAME
331 C "/.a/.b" "/*/?b" 0 PATHNAME
332
333 # B.6 030(C)
334 C "/" "?" NOMATCH PATHNAME
335 C "/" "*" NOMATCH PATHNAME
336 C "a/b" "a?b" NOMATCH PATHNAME
337 C "/.a/.b" "/*b" NOMATCH PATHNAME
338
339 # B.6 031(C)
340 C "/$" "\\/\\$" 0
341 C "/[" "\\/\\[" 0
342 C "/[" "\\/[" 0
343 C "/[]" "\\/\\[]" 0
344
345 # B.6 032(C)
346 C "/$" "\\/\\$" NOMATCH NOESCAPE
347 C "/\\$" "\\/\\$" NOMATCH NOESCAPE
348 C "\\/\\$" "\\/\\$" 0 NOESCAPE
349
350 # B.6 033(C)
351 C ".asd" ".*" 0 PERIOD
352 C "/.asd" "*" 0 PERIOD
353 C "/as/.df" "*/?*f" 0 PERIOD
354 C "..asd" ".[!a-z]*" 0 PERIOD
355
356 # B.6 034(C)
357 C ".asd" "*" NOMATCH PERIOD
358 C ".asd" "?asd" NOMATCH PERIOD
359 C ".asd" "[!a-z]*" NOMATCH PERIOD
360
361 # B.6 035(C)
362 C "/." "/." 0 PATHNAME|PERIOD
363 C "/.a./.b." "/.*/.*" 0 PATHNAME|PERIOD
364 C "/.a./.b." "/.??/.??" 0 PATHNAME|PERIOD
365
366 # B.6 036(C)
367 C "/." "*" NOMATCH PATHNAME|PERIOD
368 C "/." "/*" NOMATCH PATHNAME|PERIOD
369 C "/." "/?" NOMATCH PATHNAME|PERIOD
370 C "/." "/[!a-z]" NOMATCH PATHNAME|PERIOD
371 C "/a./.b." "/*/*" NOMATCH PATHNAME|PERIOD
372 C "/a./.b." "/??/???" NOMATCH PATHNAME|PERIOD
373
374 # Some home-grown tests.
375 C "foobar" "foo*[abc]z" NOMATCH
376 C "foobaz" "foo*[abc][xyz]" 0
377 C "foobaz" "foo?*[abc][xyz]" 0
378 C "foobaz" "foo?*[abc][x/yz]" 0
379 C "foobaz" "foo?*[abc]/[xyz]" NOMATCH PATHNAME
380 C "a" "a/" NOMATCH PATHNAME
381 C "a/" "a" NOMATCH PATHNAME
382 C "//a" "/a" NOMATCH PATHNAME
383 C "/a" "//a" NOMATCH PATHNAME
384 C "az" "[a-]z" 0
385 C "bz" "[ab-]z" 0
386 C "cz" "[ab-]z" NOMATCH
387 C "-z" "[ab-]z" 0
388 C "az" "[-a]z" 0
389 C "bz" "[-ab]z" 0
390 C "cz" "[-ab]z" NOMATCH
391 C "-z" "[-ab]z" 0
392 C "\\" "[\\\\-a]" 0
393 C "_" "[\\\\-a]" 0
394 C "a" "[\\\\-a]" 0
395 C "-" "[\\\\-a]" NOMATCH
396 C "\\" "[\\]-a]" NOMATCH
397 C "_" "[\\]-a]" 0
398 C "a" "[\\]-a]" 0
399 C "]" "[\\]-a]" 0
400 C "-" "[\\]-a]" NOMATCH
401 C "\\" "[!\\\\-a]" NOMATCH
402 C "_" "[!\\\\-a]" NOMATCH
403 C "a" "[!\\\\-a]" NOMATCH
404 C "-" "[!\\\\-a]" 0
405 C "!" "[\\!-]" 0
406 C "-" "[\\!-]" 0
407 C "\\" "[\\!-]" NOMATCH
408 C "Z" "[Z-\\\\]" 0
409 C "[" "[Z-\\\\]" 0
410 C "\\" "[Z-\\\\]" 0
411 C "-" "[Z-\\\\]" NOMATCH
412 C "Z" "[Z-\\]]" 0
413 C "[" "[Z-\\]]" 0
414 C "\\" "[Z-\\]]" 0
415 C "]" "[Z-\\]]" 0
416 C "-" "[Z-\\]]" NOMATCH
417
418 # Following are tests outside the scope of IEEE 2003.2 since they are using
419 # locales other than the C locale. The main focus of the tests is on the
420 # handling of ranges and the recognition of character (vs bytes).
421 #
422 # See:
423 #
424 # http://pubs.opengroup.org/onlinepubs/7908799/xbd/re.html
425 #
426 # > A range expression represents the set of collating elements that fall
427 # > between two elements in the current collation sequence,
428 # > inclusively. It is expressed as the starting point and the ending
429 # > point separated by a hyphen (-).
430 # >
431 # > Range expressions must not be used in portable applications because
432 # > their behaviour is dependent on the collating sequence. Ranges will be
433 # > treated according to the current collating sequence, and include such
434 # > characters that fall within the range based on that collating
435 # > sequence, regardless of character values. This, however, means that
436 # > the interpretation will differ depending on collating sequence. If,
437 # > for instance, one collating sequence defines ä as a variant of a,
438 # > while another defines it as a letter following z, then the expression
439 # > [ä-z] is valid in the first language and invalid in the second.
440 #
441 # Therefore, using [a-z] does not make much sense except in the C/POSIX locale.
442 # The new iso14651_t1_common lists upper case and lower case Latin characters
443 # in a different order than the old one which causes surprising results
444 # for example in the de_DE locale: [a-z] now includes A because A comes
445 # after a in iso14651_t1_common but does not include Z because that comes
446 # after z in iso14651_t1_common.
447 de_DE.ISO-8859-1 "a" "[a-z]" 0
448 de_DE.ISO-8859-1 "z" "[a-z]" 0
449 de_DE.ISO-8859-1 "ä" "[a-z]" 0
450 de_DE.ISO-8859-1 "ö" "[a-z]" 0
451 de_DE.ISO-8859-1 "ü" "[a-z]" 0
452 de_DE.ISO-8859-1 "A" "[a-z]" 0 # surprising but correct!
453 de_DE.ISO-8859-1 "Z" "[a-z]" NOMATCH
454 de_DE.ISO-8859-1 "Ä" "[a-z]" 0 # surprising but correct!
455 de_DE.ISO-8859-1 "Ö" "[a-z]" 0 # surprising but correct!
456 de_DE.ISO-8859-1 "Ü" "[a-z]" 0 # surprising but correct!
457 de_DE.ISO-8859-1 "a" "[A-Z]" NOMATCH
458 de_DE.ISO-8859-1 "z" "[A-Z]" 0 # surprising but correct!
459 de_DE.ISO-8859-1 "ä" "[A-Z]" 0 # surprising but correct!
460 de_DE.ISO-8859-1 "ö" "[A-Z]" 0 # surprising but correct!
461 de_DE.ISO-8859-1 "ü" "[A-Z]" 0 # surprising but correct!
462 de_DE.ISO-8859-1 "A" "[A-Z]" 0
463 de_DE.ISO-8859-1 "Z" "[A-Z]" 0
464 de_DE.ISO-8859-1 "Ä" "[A-Z]" 0
465 de_DE.ISO-8859-1 "Ö" "[A-Z]" 0
466 de_DE.ISO-8859-1 "Ü" "[A-Z]" 0
467 de_DE.ISO-8859-1 "a" "[[:lower:]]" 0
468 de_DE.ISO-8859-1 "z" "[[:lower:]]" 0
469 de_DE.ISO-8859-1 "ä" "[[:lower:]]" 0
470 de_DE.ISO-8859-1 "ö" "[[:lower:]]" 0
471 de_DE.ISO-8859-1 "ü" "[[:lower:]]" 0
472 de_DE.ISO-8859-1 "A" "[[:lower:]]" NOMATCH
473 de_DE.ISO-8859-1 "Z" "[[:lower:]]" NOMATCH
474 de_DE.ISO-8859-1 "Ä" "[[:lower:]]" NOMATCH
475 de_DE.ISO-8859-1 "Ö" "[[:lower:]]" NOMATCH
476 de_DE.ISO-8859-1 "Ü" "[[:lower:]]" NOMATCH
477 de_DE.ISO-8859-1 "a" "[[:upper:]]" NOMATCH
478 de_DE.ISO-8859-1 "z" "[[:upper:]]" NOMATCH
479 de_DE.ISO-8859-1 "ä" "[[:upper:]]" NOMATCH
480 de_DE.ISO-8859-1 "ö" "[[:upper:]]" NOMATCH
481 de_DE.ISO-8859-1 "ü" "[[:upper:]]" NOMATCH
482 de_DE.ISO-8859-1 "A" "[[:upper:]]" 0
483 de_DE.ISO-8859-1 "Z" "[[:upper:]]" 0
484 de_DE.ISO-8859-1 "Ä" "[[:upper:]]" 0
485 de_DE.ISO-8859-1 "Ö" "[[:upper:]]" 0
486 de_DE.ISO-8859-1 "Ü" "[[:upper:]]" 0
487 de_DE.ISO-8859-1 "a" "[[:alpha:]]" 0
488 de_DE.ISO-8859-1 "z" "[[:alpha:]]" 0
489 de_DE.ISO-8859-1 "ä" "[[:alpha:]]" 0
490 de_DE.ISO-8859-1 "ö" "[[:alpha:]]" 0
491 de_DE.ISO-8859-1 "ü" "[[:alpha:]]" 0
492 de_DE.ISO-8859-1 "A" "[[:alpha:]]" 0
493 de_DE.ISO-8859-1 "Z" "[[:alpha:]]" 0
494 de_DE.ISO-8859-1 "Ä" "[[:alpha:]]" 0
495 de_DE.ISO-8859-1 "Ö" "[[:alpha:]]" 0
496 de_DE.ISO-8859-1 "Ü" "[[:alpha:]]" 0
497
498 de_DE.ISO-8859-1 "a" "[[=a=]b]" 0
499 de_DE.ISO-8859-1 "â" "[[=a=]b]" 0
500 de_DE.ISO-8859-1 "à" "[[=a=]b]" 0
501 de_DE.ISO-8859-1 "á" "[[=a=]b]" 0
502 de_DE.ISO-8859-1 "ä" "[[=a=]b]" 0
503 de_DE.ISO-8859-1 "b" "[[=a=]b]" 0
504 de_DE.ISO-8859-1 "c" "[[=a=]b]" NOMATCH
505 de_DE.ISO-8859-1 "a" "[[=â=]b]" 0
506 de_DE.ISO-8859-1 "â" "[[=â=]b]" 0
507 de_DE.ISO-8859-1 "à" "[[=â=]b]" 0
508 de_DE.ISO-8859-1 "á" "[[=â=]b]" 0
509 de_DE.ISO-8859-1 "ä" "[[=â=]b]" 0
510 de_DE.ISO-8859-1 "b" "[[=â=]b]" 0
511 de_DE.ISO-8859-1 "c" "[[=â=]b]" NOMATCH
512 de_DE.ISO-8859-1 "a" "[[=à=]b]" 0
513 de_DE.ISO-8859-1 "â" "[[=à=]b]" 0
514 de_DE.ISO-8859-1 "à" "[[=à=]b]" 0
515 de_DE.ISO-8859-1 "á" "[[=à=]b]" 0
516 de_DE.ISO-8859-1 "ä" "[[=à=]b]" 0
517 de_DE.ISO-8859-1 "b" "[[=à=]b]" 0
518 de_DE.ISO-8859-1 "c" "[[=à=]b]" NOMATCH
519 de_DE.ISO-8859-1 "a" "[[=á=]b]" 0
520 de_DE.ISO-8859-1 "â" "[[=á=]b]" 0
521 de_DE.ISO-8859-1 "à" "[[=á=]b]" 0
522 de_DE.ISO-8859-1 "á" "[[=á=]b]" 0
523 de_DE.ISO-8859-1 "ä" "[[=á=]b]" 0
524 de_DE.ISO-8859-1 "b" "[[=á=]b]" 0
525 de_DE.ISO-8859-1 "c" "[[=á=]b]" NOMATCH
526 de_DE.ISO-8859-1 "a" "[[=ä=]b]" 0
527 de_DE.ISO-8859-1 "â" "[[=ä=]b]" 0
528 de_DE.ISO-8859-1 "à" "[[=ä=]b]" 0
529 de_DE.ISO-8859-1 "á" "[[=ä=]b]" 0
530 de_DE.ISO-8859-1 "ä" "[[=ä=]b]" 0
531 de_DE.ISO-8859-1 "b" "[[=ä=]b]" 0
532 de_DE.ISO-8859-1 "c" "[[=ä=]b]" NOMATCH
533
534 de_DE.ISO-8859-1 "aa" "[[.a.]]a" 0
535 de_DE.ISO-8859-1 "ba" "[[.a.]]a" NOMATCH
536
537
538 # And with a multibyte character set.
539 de_DE.UTF-8 "a" "[a-z]" 0
540 de_DE.UTF-8 "z" "[a-z]" 0
541 de_DE.UTF-8 "ä" "[a-z]" 0
542 de_DE.UTF-8 "ö" "[a-z]" 0
543 de_DE.UTF-8 "ü" "[a-z]" 0
544 de_DE.UTF-8 "A" "[a-z]" 0 # surprising but correct!
545 de_DE.UTF-8 "Z" "[a-z]" NOMATCH
546 de_DE.UTF-8 "Ä" "[a-z]" 0 # surprising but correct!
547 de_DE.UTF-8 "Ö" "[a-z]" 0 # surprising but correct!
548 de_DE.UTF-8 "Ü" "[a-z]" 0 # surprising but correct!
549 de_DE.UTF-8 "a" "[A-Z]" NOMATCH
550 de_DE.UTF-8 "z" "[A-Z]" 0 # surprising but correct!
551 de_DE.UTF-8 "ä" "[A-Z]" 0 # surprising but correct!
552 de_DE.UTF-8 "ö" "[A-Z]" 0 # surprising but correct!
553 de_DE.UTF-8 "ü" "[A-Z]" 0 # surprising but correct!
554 de_DE.UTF-8 "A" "[A-Z]" 0
555 de_DE.UTF-8 "Z" "[A-Z]" 0
556 de_DE.UTF-8 "Ä" "[A-Z]" 0
557 de_DE.UTF-8 "Ö" "[A-Z]" 0
558 de_DE.UTF-8 "Ü" "[A-Z]" 0
559 de_DE.UTF-8 "a" "[[:lower:]]" 0
560 de_DE.UTF-8 "z" "[[:lower:]]" 0
561 de_DE.UTF-8 "ä" "[[:lower:]]" 0
562 de_DE.UTF-8 "ö" "[[:lower:]]" 0
563 de_DE.UTF-8 "ü" "[[:lower:]]" 0
564 de_DE.UTF-8 "A" "[[:lower:]]" NOMATCH
565 de_DE.UTF-8 "Z" "[[:lower:]]" NOMATCH
566 de_DE.UTF-8 "Ä" "[[:lower:]]" NOMATCH
567 de_DE.UTF-8 "Ö" "[[:lower:]]" NOMATCH
568 de_DE.UTF-8 "Ü" "[[:lower:]]" NOMATCH
569 de_DE.UTF-8 "a" "[[:upper:]]" NOMATCH
570 de_DE.UTF-8 "z" "[[:upper:]]" NOMATCH
571 de_DE.UTF-8 "ä" "[[:upper:]]" NOMATCH
572 de_DE.UTF-8 "ö" "[[:upper:]]" NOMATCH
573 de_DE.UTF-8 "ü" "[[:upper:]]" NOMATCH
574 de_DE.UTF-8 "A" "[[:upper:]]" 0
575 de_DE.UTF-8 "Z" "[[:upper:]]" 0
576 de_DE.UTF-8 "Ä" "[[:upper:]]" 0
577 de_DE.UTF-8 "Ö" "[[:upper:]]" 0
578 de_DE.UTF-8 "Ü" "[[:upper:]]" 0
579 de_DE.UTF-8 "a" "[[:alpha:]]" 0
580 de_DE.UTF-8 "z" "[[:alpha:]]" 0
581 de_DE.UTF-8 "ä" "[[:alpha:]]" 0
582 de_DE.UTF-8 "ö" "[[:alpha:]]" 0
583 de_DE.UTF-8 "ü" "[[:alpha:]]" 0
584 de_DE.UTF-8 "A" "[[:alpha:]]" 0
585 de_DE.UTF-8 "Z" "[[:alpha:]]" 0
586 de_DE.UTF-8 "Ä" "[[:alpha:]]" 0
587 de_DE.UTF-8 "Ö" "[[:alpha:]]" 0
588 de_DE.UTF-8 "Ü" "[[:alpha:]]" 0
589
590 de_DE.UTF-8 "a" "[[=a=]b]" 0
591 de_DE.UTF-8 "â" "[[=a=]b]" 0
592 de_DE.UTF-8 "à" "[[=a=]b]" 0
593 de_DE.UTF-8 "á" "[[=a=]b]" 0
594 de_DE.UTF-8 "ä" "[[=a=]b]" 0
595 de_DE.UTF-8 "b" "[[=a=]b]" 0
596 de_DE.UTF-8 "c" "[[=a=]b]" NOMATCH
597 de_DE.UTF-8 "a" "[[=â=]b]" 0
598 de_DE.UTF-8 "â" "[[=â=]b]" 0
599 de_DE.UTF-8 "à" "[[=â=]b]" 0
600 de_DE.UTF-8 "á" "[[=â=]b]" 0
601 de_DE.UTF-8 "ä" "[[=â=]b]" 0
602 de_DE.UTF-8 "b" "[[=â=]b]" 0
603 de_DE.UTF-8 "c" "[[=â=]b]" NOMATCH
604 de_DE.UTF-8 "a" "[[=à=]b]" 0
605 de_DE.UTF-8 "â" "[[=à=]b]" 0
606 de_DE.UTF-8 "à" "[[=à=]b]" 0
607 de_DE.UTF-8 "á" "[[=à=]b]" 0
608 de_DE.UTF-8 "ä" "[[=à=]b]" 0
609 de_DE.UTF-8 "b" "[[=à=]b]" 0
610 de_DE.UTF-8 "c" "[[=à=]b]" NOMATCH
611 de_DE.UTF-8 "a" "[[=á=]b]" 0
612 de_DE.UTF-8 "â" "[[=á=]b]" 0
613 de_DE.UTF-8 "à" "[[=á=]b]" 0
614 de_DE.UTF-8 "á" "[[=á=]b]" 0
615 de_DE.UTF-8 "ä" "[[=á=]b]" 0
616 de_DE.UTF-8 "b" "[[=á=]b]" 0
617 de_DE.UTF-8 "c" "[[=á=]b]" NOMATCH
618 de_DE.UTF-8 "a" "[[=ä=]b]" 0
619 de_DE.UTF-8 "â" "[[=ä=]b]" 0
620 de_DE.UTF-8 "à" "[[=ä=]b]" 0
621 de_DE.UTF-8 "á" "[[=ä=]b]" 0
622 de_DE.UTF-8 "ä" "[[=ä=]b]" 0
623 de_DE.UTF-8 "b" "[[=ä=]b]" 0
624 de_DE.UTF-8 "c" "[[=ä=]b]" NOMATCH
625
626 de_DE.UTF-8 "aa" "[[.a.]]a" 0
627 de_DE.UTF-8 "ba" "[[.a.]]a" NOMATCH
628
629
630 # Test of GNU extensions.
631 C "x" "x" 0 PATHNAME|LEADING_DIR
632 C "x/y" "x" 0 PATHNAME|LEADING_DIR
633 C "x/y/z" "x" 0 PATHNAME|LEADING_DIR
634 C "x" "*" 0 PATHNAME|LEADING_DIR
635 C "x/y" "*" 0 PATHNAME|LEADING_DIR
636 C "x/y/z" "*" 0 PATHNAME|LEADING_DIR
637 C "x" "*x" 0 PATHNAME|LEADING_DIR
638 C "x/y" "*x" 0 PATHNAME|LEADING_DIR
639 C "x/y/z" "*x" 0 PATHNAME|LEADING_DIR
640 C "x" "x*" 0 PATHNAME|LEADING_DIR
641 C "x/y" "x*" 0 PATHNAME|LEADING_DIR
642 C "x/y/z" "x*" 0 PATHNAME|LEADING_DIR
643 C "x" "a" NOMATCH PATHNAME|LEADING_DIR
644 C "x/y" "a" NOMATCH PATHNAME|LEADING_DIR
645 C "x/y/z" "a" NOMATCH PATHNAME|LEADING_DIR
646 C "x" "x/y" NOMATCH PATHNAME|LEADING_DIR
647 C "x/y" "x/y" 0 PATHNAME|LEADING_DIR
648 C "x/y/z" "x/y" 0 PATHNAME|LEADING_DIR
649 C "x" "x?y" NOMATCH PATHNAME|LEADING_DIR
650 C "x/y" "x?y" NOMATCH PATHNAME|LEADING_DIR
651 C "x/y/z" "x?y" NOMATCH PATHNAME|LEADING_DIR
652
653 # ksh style matching.
654 C "abcd" "?@(a|b)*@(c)d" 0 EXTMATCH
655 C "/dev/udp/129.22.8.102/45" "/dev/@(tcp|udp)/*/*" 0 PATHNAME|EXTMATCH
656 C "12" "[1-9]*([0-9])" 0 EXTMATCH
657 C "12abc" "[1-9]*([0-9])" NOMATCH EXTMATCH
658 C "1" "[1-9]*([0-9])" 0 EXTMATCH
659 C "07" "+([0-7])" 0 EXTMATCH
660 C "0377" "+([0-7])" 0 EXTMATCH
661 C "09" "+([0-7])" NOMATCH EXTMATCH
662 C "paragraph" "para@(chute|graph)" 0 EXTMATCH
663 C "paramour" "para@(chute|graph)" NOMATCH EXTMATCH
664 C "para991" "para?([345]|99)1" 0 EXTMATCH
665 C "para381" "para?([345]|99)1" NOMATCH EXTMATCH
666 C "paragraph" "para*([0-9])" NOMATCH EXTMATCH
667 C "para" "para*([0-9])" 0 EXTMATCH
668 C "para13829383746592" "para*([0-9])" 0 EXTMATCH
669 C "paragraph" "para+([0-9])" NOMATCH EXTMATCH
670 C "para" "para+([0-9])" NOMATCH EXTMATCH
671 C "para987346523" "para+([0-9])" 0 EXTMATCH
672 C "paragraph" "para!(*.[0-9])" 0 EXTMATCH
673 C "para.38" "para!(*.[0-9])" 0 EXTMATCH
674 C "para.graph" "para!(*.[0-9])" 0 EXTMATCH
675 C "para39" "para!(*.[0-9])" 0 EXTMATCH
676 C "" "*(0|1|3|5|7|9)" 0 EXTMATCH
677 C "137577991" "*(0|1|3|5|7|9)" 0 EXTMATCH
678 C "2468" "*(0|1|3|5|7|9)" NOMATCH EXTMATCH
679 C "1358" "*(0|1|3|5|7|9)" NOMATCH EXTMATCH
680 C "file.c" "*.c?(c)" 0 EXTMATCH
681 C "file.C" "*.c?(c)" NOMATCH EXTMATCH
682 C "file.cc" "*.c?(c)" 0 EXTMATCH
683 C "file.ccc" "*.c?(c)" NOMATCH EXTMATCH
684 C "parse.y" "!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
685 C "shell.c" "!(*.c|*.h|Makefile.in|config*|README)" NOMATCH EXTMATCH
686 C "Makefile" "!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
687 C "VMS.FILE;1" "*\;[1-9]*([0-9])" 0 EXTMATCH
688 C "VMS.FILE;0" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH
689 C "VMS.FILE;" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH
690 C "VMS.FILE;139" "*\;[1-9]*([0-9])" 0 EXTMATCH
691 C "VMS.FILE;1N" "*\;[1-9]*([0-9])" NOMATCH EXTMATCH
692 C "abcfefg" "ab**(e|f)" 0 EXTMATCH
693 C "abcfefg" "ab**(e|f)g" 0 EXTMATCH
694 C "ab" "ab*+(e|f)" NOMATCH EXTMATCH
695 C "abef" "ab***ef" 0 EXTMATCH
696 C "abef" "ab**" 0 EXTMATCH
697 C "fofo" "*(f*(o))" 0 EXTMATCH
698 C "ffo" "*(f*(o))" 0 EXTMATCH
699 C "foooofo" "*(f*(o))" 0 EXTMATCH
700 C "foooofof" "*(f*(o))" 0 EXTMATCH
701 C "fooofoofofooo" "*(f*(o))" 0 EXTMATCH
702 C "foooofof" "*(f+(o))" NOMATCH EXTMATCH
703 C "xfoooofof" "*(f*(o))" NOMATCH EXTMATCH
704 C "foooofofx" "*(f*(o))" NOMATCH EXTMATCH
705 C "ofxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH
706 C "ofooofoofofooo" "*(f*(o))" NOMATCH EXTMATCH
707 C "foooxfooxfoxfooox" "*(f*(o)x)" 0 EXTMATCH
708 C "foooxfooxofoxfooox" "*(f*(o)x)" NOMATCH EXTMATCH
709 C "foooxfooxfxfooox" "*(f*(o)x)" 0 EXTMATCH
710 C "ofxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH
711 C "ofoooxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH
712 C "ofoooxoofxoofoooxoofxo" "*(*(of*(o)x)o)" 0 EXTMATCH
713 C "ofoooxoofxoofoooxoofxoo" "*(*(of*(o)x)o)" 0 EXTMATCH
714 C "ofoooxoofxoofoooxoofxofo" "*(*(of*(o)x)o)" NOMATCH EXTMATCH
715 C "ofoooxoofxoofoooxoofxooofxofxo" "*(*(of*(o)x)o)" 0 EXTMATCH
716 C "aac" "*(@(a))a@(c)" 0 EXTMATCH
717 C "ac" "*(@(a))a@(c)" 0 EXTMATCH
718 C "c" "*(@(a))a@(c)" NOMATCH EXTMATCH
719 C "aaac" "*(@(a))a@(c)" 0 EXTMATCH
720 C "baaac" "*(@(a))a@(c)" NOMATCH EXTMATCH
721 C "abcd" "?@(a|b)*@(c)d" 0 EXTMATCH
722 C "abcd" "@(ab|a*@(b))*(c)d" 0 EXTMATCH
723 C "acd" "@(ab|a*(b))*(c)d" 0 EXTMATCH
724 C "abbcd" "@(ab|a*(b))*(c)d" 0 EXTMATCH
725 C "effgz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
726 C "efgz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
727 C "egz" "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
728 C "egzefffgzbcdij" "*(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
729 C "egz" "@(b+(c)d|e+(f)g?|?(h)i@(j|k))" NOMATCH EXTMATCH
730 C "ofoofo" "*(of+(o))" 0 EXTMATCH
731 C "oxfoxoxfox" "*(oxf+(ox))" 0 EXTMATCH
732 C "oxfoxfox" "*(oxf+(ox))" NOMATCH EXTMATCH
733 C "ofoofo" "*(of+(o)|f)" 0 EXTMATCH
734 C "foofoofo" "@(foo|f|fo)*(f|of+(o))" 0 EXTMATCH
735 C "oofooofo" "*(of|oof+(o))" 0 EXTMATCH
736 C "fffooofoooooffoofffooofff" "*(*(f)*(o))" 0 EXTMATCH
737 C "fofoofoofofoo" "*(fo|foo)" 0 EXTMATCH
738 C "foo" "!(x)" 0 EXTMATCH
739 C "foo" "!(x)*" 0 EXTMATCH
740 C "foo" "!(foo)" NOMATCH EXTMATCH
741 C "foo" "!(foo)*" 0 EXTMATCH
742 C "foobar" "!(foo)" 0 EXTMATCH
743 C "foobar" "!(foo)*" 0 EXTMATCH
744 C "moo.cow" "!(*.*).!(*.*)" 0 EXTMATCH
745 C "mad.moo.cow" "!(*.*).!(*.*)" NOMATCH EXTMATCH
746 C "mucca.pazza" "mu!(*(c))?.pa!(*(z))?" NOMATCH EXTMATCH
747 C "fff" "!(f)" 0 EXTMATCH
748 C "fff" "*(!(f))" 0 EXTMATCH
749 C "fff" "+(!(f))" 0 EXTMATCH
750 C "ooo" "!(f)" 0 EXTMATCH
751 C "ooo" "*(!(f))" 0 EXTMATCH
752 C "ooo" "+(!(f))" 0 EXTMATCH
753 C "foo" "!(f)" 0 EXTMATCH
754 C "foo" "*(!(f))" 0 EXTMATCH
755 C "foo" "+(!(f))" 0 EXTMATCH
756 C "f" "!(f)" NOMATCH EXTMATCH
757 C "f" "*(!(f))" NOMATCH EXTMATCH
758 C "f" "+(!(f))" NOMATCH EXTMATCH
759 C "foot" "@(!(z*)|*x)" 0 EXTMATCH
760 C "zoot" "@(!(z*)|*x)" NOMATCH EXTMATCH
761 C "foox" "@(!(z*)|*x)" 0 EXTMATCH
762 C "zoox" "@(!(z*)|*x)" 0 EXTMATCH
763 C "foo" "*(!(foo)) 0 EXTMATCH
764 C "foob" "!(foo)b*" NOMATCH EXTMATCH
765 C "foobb" "!(foo)b*" 0 EXTMATCH
766 C "[" "*([a[])" 0 EXTMATCH
767 C "]" "*([]a[])" 0 EXTMATCH
768 C "a" "*([]a[])" 0 EXTMATCH
769 C "b" "*([!]a[])" 0 EXTMATCH
770 C "[" "*([!]a[]|[[])" 0 EXTMATCH
771 C "]" "*([!]a[]|[]])" 0 EXTMATCH
772 C "[" "!([!]a[])" 0 EXTMATCH
773 C "]" "!([!]a[])" 0 EXTMATCH
774 C ")" "*([)])" 0 EXTMATCH
775 C "*" "*([*(])" 0 EXTMATCH
776 C "abcd" "*!(|a)cd" 0 EXTMATCH
777 C "ab/.a" "+([abc])/*" NOMATCH EXTMATCH|PATHNAME|PERIOD
778 C "" "" 0
779 C "" "" 0 EXTMATCH
780 C "" "*([abc])" 0 EXTMATCH
781 C "" "?([abc])" 0 EXTMATCH