1# Tests for fnmatch.
2# Copyright (C) 2000-2021 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# <https://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# See:
28#
29# http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap09.html
30#
31# > RE Bracket Expression
32# >
33# > Range expressions are, historically, an integral part of REs.
34# > However, the requirements of "natural language behavior" and
35# > portability do conflict. In the POSIX locale, ranges must be treated
36# > according to the collating sequence and include such characters that
37# > fall within the range based on that collating sequence, regardless
38# > of character values. In other locales, ranges have unspecified behavior.
39# > ...
40# > The current standard leaves unspecified the behavior of a range
41# > expression outside the POSIX locale. This makes it clearer that
42# > conforming applications should avoid range expressions outside the
43# > POSIX locale, and it allows implementations and compatible user-mode
44# > matchers to interpret range expressions using native order, CEO,
45# > collation sequence, or other, more advanced techniques. The concerns
46# > which led to this change were raised in IEEE PASC interpretation
47# > 1003.2 #43 and others, and related to ambiguities in the
48# > specification of how multi-character collating elements should be
49# > handled in range expressions. These ambiguities had led to multiple
50# > interpretations of the specification, in conflicting ways, which led
51# > to varying implementations. As noted above, efforts were made to
52# > resolve the differences, but no solution has been found that would
53# > be specific enough to allow for portable software while not
54# > invalidating existing implementations.
55#
56# Therefore, using [a-z] does not make much sense except in the C/POSIX locale.
57# The new iso14651_t1_common lists upper case and lower case Latin characters
58# in a different order than the old one which causes surprising results
59# for example in the de_DE locale: [a-z] now includes A because A comes
60# after a in iso14651_t1_common but does not include Z because that comes
61# after z in iso14651_t1_common.
62#
63# This lead to several bugs and problems with user scripts that do not
64# expect [a-z] to match uppercase characters.
65#
66# See the following bugs:
67# https://sourceware.org/bugzilla/show_bug.cgi?id=23393
68# https://sourceware.org/bugzilla/show_bug.cgi?id=23420
69#
70# No consensus exists on how best to handle the changes so the
71# iso14651_t1_common collation element order (CEO) has been changed to
72# deinterlace the a-z and A-Z regions.
73#
74# With the deinterlacing commit ac3a3b4b0d561d776b60317d6a926050c8541655
75# could be reverted to re-test the correct non-interleaved expectations.
76#
77# Please note that despite the region being deinterlaced, the ordering
78# of collation remains the same.  In glibc we implement CEO and because of
79# that we can reorder the elements to reorder ranges without impacting
80# collation which depends on weights.  The collation element ordering
81# could have been changed to include just a-z, A-Z, and 0-9 in three
82# distinct blocks, but this needs more discussion by the community.
83
84# B.6 004(C)
85C		 "!#%+,-./01234567889"	"!#%+,-./01234567889"  0
86C		 ":;=@ABCDEFGHIJKLMNO"	":;=@ABCDEFGHIJKLMNO"  0
87C		 "PQRSTUVWXYZ]abcdefg"	"PQRSTUVWXYZ]abcdefg"  0
88C		 "hijklmnopqrstuvwxyz"	"hijklmnopqrstuvwxyz"  0
89C		 "^_{}~"		"^_{}~"		       0
90
91# B.6 005(C)
92C		 "\"$&'()"		"\\\"\\$\\&\\'\\(\\)"  0
93C		 "*?[\\`|"		"\\*\\?\\[\\\\\\`\\|"  0
94C		 "<>"			"\\<\\>"	       0
95
96# B.6 006(C)
97C		 "?*["			"[?*[][?*[][?*[]"      0
98C		 "a/b"			"?/b"		       0
99
100# B.6 007(C)
101C		 "a/b"			"a?b"		       0
102C		 "a/b"			"a/?"		       0
103C		 "aa/b"			"?/b"		       NOMATCH
104C		 "aa/b"			"a?b"		       NOMATCH
105C		 "a/bb"			"a/?"		       NOMATCH
106
107# B.6 009(C)
108C		 "abc"			"[abc]"		       NOMATCH
109C		 "x"			"[abc]"		       NOMATCH
110C		 "a"			"[abc]"		       0
111C		 "["			"[[abc]"	       0
112C		 "a"			"[][abc]"	       0
113C		 "a]"			"[]a]]"		       0
114
115# B.6 010(C)
116C		 "xyz"			"[!abc]"	       NOMATCH
117C		 "x"			"[!abc]"	       0
118C		 "a"			"[!abc]"	       NOMATCH
119
120# B.6 011(C)
121C		 "]"			"[][abc]"	       0
122C		 "abc]"			"[][abc]"	       NOMATCH
123C		 "[]abc"		"[][]abc"	       NOMATCH
124C		 "]"			"[!]]"		       NOMATCH
125C		 "aa]"			"[!]a]"		       NOMATCH
126C		 "]"			"[!a]"		       0
127C		 "]]"			"[!a]]"		       0
128
129# B.6 012(C)
130C		 "a"			"[[.a.]]"	       0
131C		 "-"			"[[.-.]]"	       0
132C		 "-"			"[[.-.][.].]]"	       0
133C		 "-"			"[[.].][.-.]]"	       0
134C		 "-"			"[[.-.][=u=]]"	       0
135C		 "-"			"[[.-.][:alpha:]]"     0
136C		 "a"			"[![.a.]]"	       NOMATCH
137
138# B.6 013(C)
139C		 "a"			"[[.b.]]"	       NOMATCH
140C		 "a"			"[[.b.][.c.]]"	       NOMATCH
141C		 "a"			"[[.b.][=b=]]"	       NOMATCH
142
143
144# B.6 015(C)
145C		 "a"			"[[=a=]]"	       0
146C		 "b"			"[[=a=]b]"	       0
147C		 "b"			"[[=a=][=b=]]"	       0
148C		 "a"			"[[=a=][=b=]]"	       0
149C		 "a"			"[[=a=][.b.]]"	       0
150C		 "a"			"[[=a=][:digit:]]"     0
151
152# B.6 016(C)
153C		 "="			"[[=a=]b]"	       NOMATCH
154C		 "]"			"[[=a=]b]"	       NOMATCH
155C		 "a"			"[[=b=][=c=]]"	       NOMATCH
156C		 "a"			"[[=b=][.].]]"	       NOMATCH
157C		 "a"			"[[=b=][:digit:]]"     NOMATCH
158
159# B.6 017(C)
160C		 "a"			"[[:alnum:]]"	       0
161C		 "a"			"[![:alnum:]]"	       NOMATCH
162C		 "-"			"[[:alnum:]]"	       NOMATCH
163C		 "a]a"			"[[:alnum:]]a"	       NOMATCH
164C		 "-"			"[[:alnum:]-]"	       0
165C		 "aa"			"[[:alnum:]]a"	       0
166C		 "-"			"[![:alnum:]]"	       0
167C		 "]"			"[!][:alnum:]]"	       NOMATCH
168C		 "["			"[![:alnum:][]"	       NOMATCH
169C		 "a"			"[[:alnum:]]"	       0
170C		 "b"			"[[:alnum:]]"	       0
171C		 "c"			"[[:alnum:]]"	       0
172C		 "d"			"[[:alnum:]]"	       0
173C		 "e"			"[[:alnum:]]"	       0
174C		 "f"			"[[:alnum:]]"	       0
175C		 "g"			"[[:alnum:]]"	       0
176C		 "h"			"[[:alnum:]]"	       0
177C		 "i"			"[[:alnum:]]"	       0
178C		 "j"			"[[:alnum:]]"	       0
179C		 "k"			"[[:alnum:]]"	       0
180C		 "l"			"[[:alnum:]]"	       0
181C		 "m"			"[[:alnum:]]"	       0
182C		 "n"			"[[:alnum:]]"	       0
183C		 "o"			"[[:alnum:]]"	       0
184C		 "p"			"[[:alnum:]]"	       0
185C		 "q"			"[[:alnum:]]"	       0
186C		 "r"			"[[:alnum:]]"	       0
187C		 "s"			"[[:alnum:]]"	       0
188C		 "t"			"[[:alnum:]]"	       0
189C		 "u"			"[[:alnum:]]"	       0
190C		 "v"			"[[:alnum:]]"	       0
191C		 "w"			"[[:alnum:]]"	       0
192C		 "x"			"[[:alnum:]]"	       0
193C		 "y"			"[[:alnum:]]"	       0
194C		 "z"			"[[:alnum:]]"	       0
195C		 "A"			"[[:alnum:]]"	       0
196C		 "B"			"[[:alnum:]]"	       0
197C		 "C"			"[[:alnum:]]"	       0
198C		 "D"			"[[:alnum:]]"	       0
199C		 "E"			"[[:alnum:]]"	       0
200C		 "F"			"[[:alnum:]]"	       0
201C		 "G"			"[[:alnum:]]"	       0
202C		 "H"			"[[:alnum:]]"	       0
203C		 "I"			"[[:alnum:]]"	       0
204C		 "J"			"[[:alnum:]]"	       0
205C		 "K"			"[[:alnum:]]"	       0
206C		 "L"			"[[:alnum:]]"	       0
207C		 "M"			"[[:alnum:]]"	       0
208C		 "N"			"[[:alnum:]]"	       0
209C		 "O"			"[[:alnum:]]"	       0
210C		 "P"			"[[:alnum:]]"	       0
211C		 "Q"			"[[:alnum:]]"	       0
212C		 "R"			"[[:alnum:]]"	       0
213C		 "S"			"[[:alnum:]]"	       0
214C		 "T"			"[[:alnum:]]"	       0
215C		 "U"			"[[:alnum:]]"	       0
216C		 "V"			"[[:alnum:]]"	       0
217C		 "W"			"[[:alnum:]]"	       0
218C		 "X"			"[[:alnum:]]"	       0
219C		 "Y"			"[[:alnum:]]"	       0
220C		 "Z"			"[[:alnum:]]"	       0
221C		 "0"			"[[:alnum:]]"	       0
222C		 "1"			"[[:alnum:]]"	       0
223C		 "2"			"[[:alnum:]]"	       0
224C		 "3"			"[[:alnum:]]"	       0
225C		 "4"			"[[:alnum:]]"	       0
226C		 "5"			"[[:alnum:]]"	       0
227C		 "6"			"[[:alnum:]]"	       0
228C		 "7"			"[[:alnum:]]"	       0
229C		 "8"			"[[:alnum:]]"	       0
230C		 "9"			"[[:alnum:]]"	       0
231C		 "!"			"[[:alnum:]]"	       NOMATCH
232C		 "#"			"[[:alnum:]]"	       NOMATCH
233C		 "%"			"[[:alnum:]]"	       NOMATCH
234C		 "+"			"[[:alnum:]]"	       NOMATCH
235C		 ","			"[[:alnum:]]"	       NOMATCH
236C		 "-"			"[[:alnum:]]"	       NOMATCH
237C		 "."			"[[:alnum:]]"	       NOMATCH
238C		 "/"			"[[:alnum:]]"	       NOMATCH
239C		 ":"			"[[:alnum:]]"	       NOMATCH
240C		 ";"			"[[:alnum:]]"	       NOMATCH
241C		 "="			"[[:alnum:]]"	       NOMATCH
242C		 "@"			"[[:alnum:]]"	       NOMATCH
243C		 "["			"[[:alnum:]]"	       NOMATCH
244C		 "\\"			"[[:alnum:]]"	       NOMATCH
245C		 "]"			"[[:alnum:]]"	       NOMATCH
246C		 "^"			"[[:alnum:]]"	       NOMATCH
247C		 "_"			"[[:alnum:]]"	       NOMATCH
248C		 "{"			"[[:alnum:]]"	       NOMATCH
249C		 "}"			"[[:alnum:]]"	       NOMATCH
250C		 "~"			"[[:alnum:]]"	       NOMATCH
251C		 "\""			"[[:alnum:]]"	       NOMATCH
252C		 "$"			"[[:alnum:]]"	       NOMATCH
253C		 "&"			"[[:alnum:]]"	       NOMATCH
254C		 "'"			"[[:alnum:]]"	       NOMATCH
255C		 "("			"[[:alnum:]]"	       NOMATCH
256C		 ")"			"[[:alnum:]]"	       NOMATCH
257C		 "*"			"[[:alnum:]]"	       NOMATCH
258C		 "?"			"[[:alnum:]]"	       NOMATCH
259C		 "`"			"[[:alnum:]]"	       NOMATCH
260C		 "|"			"[[:alnum:]]"	       NOMATCH
261C		 "<"			"[[:alnum:]]"	       NOMATCH
262C		 ">"			"[[:alnum:]]"	       NOMATCH
263C		 "\t"			"[[:cntrl:]]"	       0
264C		 "t"			"[[:cntrl:]]"	       NOMATCH
265C		 "t"			"[[:lower:]]"	       0
266C		 "\t"			"[[:lower:]]"	       NOMATCH
267C		 "T"			"[[:lower:]]"	       NOMATCH
268C		 "\t"			"[[:space:]]"	       0
269C		 "t"			"[[:space:]]"	       NOMATCH
270C		 "t"			"[[:alpha:]]"	       0
271C		 "\t"			"[[:alpha:]]"	       NOMATCH
272C		 "0"			"[[:digit:]]"	       0
273C		 "\t"			"[[:digit:]]"	       NOMATCH
274C		 "t"			"[[:digit:]]"	       NOMATCH
275C		 "\t"			"[[:print:]]"	       NOMATCH
276C		 "t"			"[[:print:]]"	       0
277C		 "T"			"[[:upper:]]"	       0
278C		 "\t"			"[[:upper:]]"	       NOMATCH
279C		 "t"			"[[:upper:]]"	       NOMATCH
280C		 "\t"			"[[:blank:]]"	       0
281C		 "t"			"[[:blank:]]"	       NOMATCH
282C		 "\t"			"[[:graph:]]"	       NOMATCH
283C		 "t"			"[[:graph:]]"	       0
284C		 "."			"[[:punct:]]"	       0
285C		 "t"			"[[:punct:]]"	       NOMATCH
286C		 "\t"			"[[:punct:]]"	       NOMATCH
287C		 "0"			"[[:xdigit:]]"	       0
288C		 "\t"			"[[:xdigit:]]"	       NOMATCH
289C		 "a"			"[[:xdigit:]]"	       0
290C		 "A"			"[[:xdigit:]]"	       0
291C		 "t"			"[[:xdigit:]]"	       NOMATCH
292C		 "a"			"[[alpha]]"	       NOMATCH
293C		 "a"			"[[alpha:]]"	       NOMATCH
294C		 "a]"			"[[alpha]]"	       0
295C		 "a]"			"[[alpha:]]"	       0
296C		 "a"			"[[:alpha:][.b.]]"     0
297C		 "a"			"[[:alpha:][=b=]]"     0
298C		 "a"			"[[:alpha:][:digit:]]" 0
299C		 "a"			"[[:digit:][:alpha:]]" 0
300
301# B.6 018(C)
302C		 "a"			"[a-c]"		       0
303C		 "b"			"[a-c]"		       0
304C		 "c"			"[a-c]"		       0
305C		 "a"			"[b-c]"		       NOMATCH
306C		 "d"			"[b-c]"		       NOMATCH
307C		 "B"			"[a-c]"		       NOMATCH
308C		 "b"			"[A-C]"		       NOMATCH
309C		 ""			"[a-c]"		       NOMATCH
310C		 "as"			"[a-ca-z]"	       NOMATCH
311C		 "a"			"[[.a.]-c]"	       0
312C		 "a"			"[a-[.c.]]"	       0
313C		 "a"			"[[.a.]-[.c.]]"	       0
314C		 "b"			"[[.a.]-c]"	       0
315C		 "b"			"[a-[.c.]]"	       0
316C		 "b"			"[[.a.]-[.c.]]"	       0
317C		 "c"			"[[.a.]-c]"	       0
318C		 "c"			"[a-[.c.]]"	       0
319C		 "c"			"[[.a.]-[.c.]]"	       0
320C		 "d"			"[[.a.]-c]"	       NOMATCH
321C		 "d"			"[a-[.c.]]"	       NOMATCH
322C		 "d"			"[[.a.]-[.c.]]"	       NOMATCH
323
324# B.6 019(C)
325C		 "a"			"[c-a]"		       NOMATCH
326C		 "a"			"[[.c.]-a]"	       NOMATCH
327C		 "a"			"[c-[.a.]]"	       NOMATCH
328C		 "a"			"[[.c.]-[.a.]]"	       NOMATCH
329C		 "c"			"[c-a]"		       NOMATCH
330C		 "c"			"[[.c.]-a]"	       NOMATCH
331C		 "c"			"[c-[.a.]]"	       NOMATCH
332C		 "c"			"[[.c.]-[.a.]]"	       NOMATCH
333
334# B.6 020(C)
335C		 "a"			"[a-c0-9]"	       0
336C		 "d"			"[a-c0-9]"	       NOMATCH
337C		 "B"			"[a-c0-9]"	       NOMATCH
338
339# B.6 021(C)
340C		 "-"			"[-a]"		       0
341C		 "a"			"[-b]"		       NOMATCH
342C		 "-"			"[!-a]"		       NOMATCH
343C		 "a"			"[!-b]"		       0
344C		 "-"			"[a-c-0-9]"	       0
345C		 "b"			"[a-c-0-9]"	       0
346C		 "a:"			"a[0-9-a]"	       NOMATCH
347C		 "a:"			"a[09-a]"	       0
348
349# B.6 024(C)
350C		 ""			"*"		       0
351C		 "asd/sdf"		"*"		       0
352
353# B.6 025(C)
354C		 "as"			"[a-c][a-z]"	       0
355C		 "as"			"??"		       0
356
357# B.6 026(C)
358C		 "asd/sdf"		"as*df"		       0
359C		 "asd/sdf"		"as*"		       0
360C		 "asd/sdf"		"*df"		       0
361C		 "asd/sdf"		"as*dg"		       NOMATCH
362C		 "asdf"			"as*df"		       0
363C		 "asdf"			"as*df?"	       NOMATCH
364C		 "asdf"			"as*??"		       0
365C		 "asdf"			"a*???"		       0
366C		 "asdf"			"*????"		       0
367C		 "asdf"			"????*"		       0
368C		 "asdf"			"??*?"		       0
369
370# B.6 027(C)
371C		 "/"			"/"		       0
372C		 "/"			"/*"		       0
373C		 "/"			"*/"		       0
374C		 "/"			"/?"		       NOMATCH
375C		 "/"			"?/"		       NOMATCH
376C		 "/"			"?"		       0
377C		 "."			"?"		       0
378C		 "/."			"??"		       0
379C		 "/"			"[!a-c]"	       0
380C		 "."			"[!a-c]"	       0
381
382# B.6 029(C)
383C		 "/"			"/"		       0       PATHNAME
384C		 "//"			"//"		       0       PATHNAME
385C		 "/.a"			"/*"		       0       PATHNAME
386C		 "/.a"			"/?a"		       0       PATHNAME
387C		 "/.a"			"/[!a-z]a"	       0       PATHNAME
388C		 "/.a/.b"		"/*/?b"		       0       PATHNAME
389
390# B.6 030(C)
391C		 "/"			"?"		       NOMATCH PATHNAME
392C		 "/"			"*"		       NOMATCH PATHNAME
393C		 "a/b"			"a?b"		       NOMATCH PATHNAME
394C		 "/.a/.b"		"/*b"		       NOMATCH PATHNAME
395
396# B.6 031(C)
397C		 "/$"			"\\/\\$"	       0
398C		 "/["			"\\/\\["	       0
399C		 "/["			"\\/["		       0
400C		 "/[]"			"\\/\\[]"	       0
401
402# B.6 032(C)
403C		 "/$"			"\\/\\$"	       NOMATCH NOESCAPE
404C		 "/\\$"			"\\/\\$"	       NOMATCH NOESCAPE
405C		 "\\/\\$"		"\\/\\$"	       0       NOESCAPE
406
407# B.6 033(C)
408C		 ".asd"			".*"		       0       PERIOD
409C		 "/.asd"		"*"		       0       PERIOD
410C		 "/as/.df"		"*/?*f"		       0       PERIOD
411C		 "..asd"		".[!a-z]*"	       0       PERIOD
412
413# B.6 034(C)
414C		 ".asd"			"*"		       NOMATCH PERIOD
415C		 ".asd"			"?asd"		       NOMATCH PERIOD
416C		 ".asd"			"[!a-z]*"	       NOMATCH PERIOD
417
418# B.6 035(C)
419C		 "/."			"/."		       0       PATHNAME|PERIOD
420C		 "/.a./.b."		"/.*/.*"	       0       PATHNAME|PERIOD
421C		 "/.a./.b."		"/.??/.??"	       0       PATHNAME|PERIOD
422
423# B.6 036(C)
424C		 "/."			"*"		       NOMATCH PATHNAME|PERIOD
425C		 "/."			"/*"		       NOMATCH PATHNAME|PERIOD
426C		 "/."			"/?"		       NOMATCH PATHNAME|PERIOD
427C		 "/."			"/[!a-z]"	       NOMATCH PATHNAME|PERIOD
428C		 "/a./.b."		"/*/*"		       NOMATCH PATHNAME|PERIOD
429C		 "/a./.b."		"/??/???"	       NOMATCH PATHNAME|PERIOD
430
431# Some home-grown tests.
432C		"foobar"		"foo*[abc]z"	       NOMATCH
433C		"foobaz"		"foo*[abc][xyz]"       0
434C		"foobaz"		"foo?*[abc][xyz]"      0
435C		"foobaz"		"foo?*[abc][x/yz]"     0
436C		"foobaz"		"foo?*[abc]/[xyz]"     NOMATCH PATHNAME
437C		"a"			"a/"                   NOMATCH PATHNAME
438C		"a/"			"a"		       NOMATCH PATHNAME
439C		"//a"			"/a"		       NOMATCH PATHNAME
440C		"/a"			"//a"		       NOMATCH PATHNAME
441C		"az"			"[a-]z"		       0
442C		"bz"			"[ab-]z"	       0
443C		"cz"			"[ab-]z"	       NOMATCH
444C		"-z"			"[ab-]z"	       0
445C		"az"			"[-a]z"		       0
446C		"bz"			"[-ab]z"	       0
447C		"cz"			"[-ab]z"	       NOMATCH
448C		"-z"			"[-ab]z"	       0
449C		"\\"			"[\\\\-a]"	       0
450C		"_"			"[\\\\-a]"	       0
451C		"a"			"[\\\\-a]"	       0
452C		"-"			"[\\\\-a]"	       NOMATCH
453C		"\\"			"[\\]-a]"	       NOMATCH
454C		"_"			"[\\]-a]"	       0
455C		"a"			"[\\]-a]"	       0
456C		"]"			"[\\]-a]"	       0
457C		"-"			"[\\]-a]"	       NOMATCH
458C		"\\"			"[!\\\\-a]"	       NOMATCH
459C		"_"			"[!\\\\-a]"	       NOMATCH
460C		"a"			"[!\\\\-a]"	       NOMATCH
461C		"-"			"[!\\\\-a]"	       0
462C		"!"			"[\\!-]"	       0
463C		"-"			"[\\!-]"	       0
464C		"\\"			"[\\!-]"	       NOMATCH
465C		"Z"			"[Z-\\\\]"	       0
466C		"["			"[Z-\\\\]"	       0
467C		"\\"			"[Z-\\\\]"	       0
468C		"-"			"[Z-\\\\]"	       NOMATCH
469C		"Z"			"[Z-\\]]"	       0
470C		"["			"[Z-\\]]"	       0
471C		"\\"			"[Z-\\]]"	       0
472C		"]"			"[Z-\\]]"	       0
473C		"-"			"[Z-\\]]"	       NOMATCH
474
475# B.6 004(C)
476C.UTF-8		 "!#%+,-./01234567889"	"!#%+,-./01234567889"  0
477C.UTF-8		 ":;=@ABCDEFGHIJKLMNO"	":;=@ABCDEFGHIJKLMNO"  0
478C.UTF-8		 "PQRSTUVWXYZ]abcdefg"	"PQRSTUVWXYZ]abcdefg"  0
479C.UTF-8		 "hijklmnopqrstuvwxyz"	"hijklmnopqrstuvwxyz"  0
480C.UTF-8		 "^_{}~"		"^_{}~"		       0
481
482# B.6 005(C)
483C.UTF-8		 "\"$&'()"		"\\\"\\$\\&\\'\\(\\)"  0
484C.UTF-8		 "*?[\\`|"		"\\*\\?\\[\\\\\\`\\|"  0
485C.UTF-8		 "<>"			"\\<\\>"	       0
486
487# B.6 006(C)
488C.UTF-8		 "?*["			"[?*[][?*[][?*[]"      0
489C.UTF-8		 "a/b"			"?/b"		       0
490
491# B.6 007(C)
492C.UTF-8		 "a/b"			"a?b"		       0
493C.UTF-8		 "a/b"			"a/?"		       0
494C.UTF-8		 "aa/b"			"?/b"		       NOMATCH
495C.UTF-8		 "aa/b"			"a?b"		       NOMATCH
496C.UTF-8		 "a/bb"			"a/?"		       NOMATCH
497
498# B.6 009(C)
499C.UTF-8		 "abc"			"[abc]"		       NOMATCH
500C.UTF-8		 "x"			"[abc]"		       NOMATCH
501C.UTF-8		 "a"			"[abc]"		       0
502C.UTF-8		 "["			"[[abc]"	       0
503C.UTF-8		 "a"			"[][abc]"	       0
504C.UTF-8		 "a]"			"[]a]]"		       0
505
506# B.6 010(C)
507C.UTF-8		 "xyz"			"[!abc]"	       NOMATCH
508C.UTF-8		 "x"			"[!abc]"	       0
509C.UTF-8		 "a"			"[!abc]"	       NOMATCH
510
511# B.6 011(C)
512C.UTF-8		 "]"			"[][abc]"	       0
513C.UTF-8		 "abc]"			"[][abc]"	       NOMATCH
514C.UTF-8		 "[]abc"		"[][]abc"	       NOMATCH
515C.UTF-8		 "]"			"[!]]"		       NOMATCH
516C.UTF-8		 "aa]"			"[!]a]"		       NOMATCH
517C.UTF-8		 "]"			"[!a]"		       0
518C.UTF-8		 "]]"			"[!a]]"		       0
519
520# B.6 012(C)
521C.UTF-8		 "a"			"[[.a.]]"	       0
522C.UTF-8		 "-"			"[[.-.]]"	       0
523C.UTF-8		 "-"			"[[.-.][.].]]"	       0
524C.UTF-8		 "-"			"[[.].][.-.]]"	       0
525C.UTF-8		 "-"			"[[.-.][=u=]]"	       0
526C.UTF-8		 "-"			"[[.-.][:alpha:]]"     0
527C.UTF-8		 "a"			"[![.a.]]"	       NOMATCH
528
529# B.6 013(C)
530C.UTF-8		 "a"			"[[.b.]]"	       NOMATCH
531C.UTF-8		 "a"			"[[.b.][.c.]]"	       NOMATCH
532C.UTF-8		 "a"			"[[.b.][=b=]]"	       NOMATCH
533
534
535# B.6 015(C)
536C.UTF-8		 "a"			"[[=a=]]"	       0
537C.UTF-8		 "b"			"[[=a=]b]"	       0
538C.UTF-8		 "b"			"[[=a=][=b=]]"	       0
539C.UTF-8		 "a"			"[[=a=][=b=]]"	       0
540C.UTF-8		 "a"			"[[=a=][.b.]]"	       0
541C.UTF-8		 "a"			"[[=a=][:digit:]]"     0
542
543# B.6 016(C)
544C.UTF-8		 "="			"[[=a=]b]"	       NOMATCH
545C.UTF-8		 "]"			"[[=a=]b]"	       NOMATCH
546C.UTF-8		 "a"			"[[=b=][=c=]]"	       NOMATCH
547C.UTF-8		 "a"			"[[=b=][.].]]"	       NOMATCH
548C.UTF-8		 "a"			"[[=b=][:digit:]]"     NOMATCH
549
550# B.6 017(C)
551C.UTF-8		 "a"			"[[:alnum:]]"	       0
552C.UTF-8		 "a"			"[![:alnum:]]"	       NOMATCH
553C.UTF-8		 "-"			"[[:alnum:]]"	       NOMATCH
554C.UTF-8		 "a]a"			"[[:alnum:]]a"	       NOMATCH
555C.UTF-8		 "-"			"[[:alnum:]-]"	       0
556C.UTF-8		 "aa"			"[[:alnum:]]a"	       0
557C.UTF-8		 "-"			"[![:alnum:]]"	       0
558C.UTF-8		 "]"			"[!][:alnum:]]"	       NOMATCH
559C.UTF-8		 "["			"[![:alnum:][]"	       NOMATCH
560C.UTF-8		 "a"			"[[:alnum:]]"	       0
561C.UTF-8		 "b"			"[[:alnum:]]"	       0
562C.UTF-8		 "c"			"[[:alnum:]]"	       0
563C.UTF-8		 "d"			"[[:alnum:]]"	       0
564C.UTF-8		 "e"			"[[:alnum:]]"	       0
565C.UTF-8		 "f"			"[[:alnum:]]"	       0
566C.UTF-8		 "g"			"[[:alnum:]]"	       0
567C.UTF-8		 "h"			"[[:alnum:]]"	       0
568C.UTF-8		 "i"			"[[:alnum:]]"	       0
569C.UTF-8		 "j"			"[[:alnum:]]"	       0
570C.UTF-8		 "k"			"[[:alnum:]]"	       0
571C.UTF-8		 "l"			"[[:alnum:]]"	       0
572C.UTF-8		 "m"			"[[:alnum:]]"	       0
573C.UTF-8		 "n"			"[[:alnum:]]"	       0
574C.UTF-8		 "o"			"[[:alnum:]]"	       0
575C.UTF-8		 "p"			"[[:alnum:]]"	       0
576C.UTF-8		 "q"			"[[:alnum:]]"	       0
577C.UTF-8		 "r"			"[[:alnum:]]"	       0
578C.UTF-8		 "s"			"[[:alnum:]]"	       0
579C.UTF-8		 "t"			"[[:alnum:]]"	       0
580C.UTF-8		 "u"			"[[:alnum:]]"	       0
581C.UTF-8		 "v"			"[[:alnum:]]"	       0
582C.UTF-8		 "w"			"[[:alnum:]]"	       0
583C.UTF-8		 "x"			"[[:alnum:]]"	       0
584C.UTF-8		 "y"			"[[:alnum:]]"	       0
585C.UTF-8		 "z"			"[[:alnum:]]"	       0
586C.UTF-8		 "A"			"[[:alnum:]]"	       0
587C.UTF-8		 "B"			"[[:alnum:]]"	       0
588C.UTF-8		 "C"			"[[:alnum:]]"	       0
589C.UTF-8		 "D"			"[[:alnum:]]"	       0
590C.UTF-8		 "E"			"[[:alnum:]]"	       0
591C.UTF-8		 "F"			"[[:alnum:]]"	       0
592C.UTF-8		 "G"			"[[:alnum:]]"	       0
593C.UTF-8		 "H"			"[[:alnum:]]"	       0
594C.UTF-8		 "I"			"[[:alnum:]]"	       0
595C.UTF-8		 "J"			"[[:alnum:]]"	       0
596C.UTF-8		 "K"			"[[:alnum:]]"	       0
597C.UTF-8		 "L"			"[[:alnum:]]"	       0
598C.UTF-8		 "M"			"[[:alnum:]]"	       0
599C.UTF-8		 "N"			"[[:alnum:]]"	       0
600C.UTF-8		 "O"			"[[:alnum:]]"	       0
601C.UTF-8		 "P"			"[[:alnum:]]"	       0
602C.UTF-8		 "Q"			"[[:alnum:]]"	       0
603C.UTF-8		 "R"			"[[:alnum:]]"	       0
604C.UTF-8		 "S"			"[[:alnum:]]"	       0
605C.UTF-8		 "T"			"[[:alnum:]]"	       0
606C.UTF-8		 "U"			"[[:alnum:]]"	       0
607C.UTF-8		 "V"			"[[:alnum:]]"	       0
608C.UTF-8		 "W"			"[[:alnum:]]"	       0
609C.UTF-8		 "X"			"[[:alnum:]]"	       0
610C.UTF-8		 "Y"			"[[:alnum:]]"	       0
611C.UTF-8		 "Z"			"[[:alnum:]]"	       0
612C.UTF-8		 "0"			"[[:alnum:]]"	       0
613C.UTF-8		 "1"			"[[:alnum:]]"	       0
614C.UTF-8		 "2"			"[[:alnum:]]"	       0
615C.UTF-8		 "3"			"[[:alnum:]]"	       0
616C.UTF-8		 "4"			"[[:alnum:]]"	       0
617C.UTF-8		 "5"			"[[:alnum:]]"	       0
618C.UTF-8		 "6"			"[[:alnum:]]"	       0
619C.UTF-8		 "7"			"[[:alnum:]]"	       0
620C.UTF-8		 "8"			"[[:alnum:]]"	       0
621C.UTF-8		 "9"			"[[:alnum:]]"	       0
622C.UTF-8		 "!"			"[[:alnum:]]"	       NOMATCH
623C.UTF-8		 "#"			"[[:alnum:]]"	       NOMATCH
624C.UTF-8		 "%"			"[[:alnum:]]"	       NOMATCH
625C.UTF-8		 "+"			"[[:alnum:]]"	       NOMATCH
626C.UTF-8		 ","			"[[:alnum:]]"	       NOMATCH
627C.UTF-8		 "-"			"[[:alnum:]]"	       NOMATCH
628C.UTF-8		 "."			"[[:alnum:]]"	       NOMATCH
629C.UTF-8		 "/"			"[[:alnum:]]"	       NOMATCH
630C.UTF-8		 ":"			"[[:alnum:]]"	       NOMATCH
631C.UTF-8		 ";"			"[[:alnum:]]"	       NOMATCH
632C.UTF-8		 "="			"[[:alnum:]]"	       NOMATCH
633C.UTF-8		 "@"			"[[:alnum:]]"	       NOMATCH
634C.UTF-8		 "["			"[[:alnum:]]"	       NOMATCH
635C.UTF-8		 "\\"			"[[:alnum:]]"	       NOMATCH
636C.UTF-8		 "]"			"[[:alnum:]]"	       NOMATCH
637C.UTF-8		 "^"			"[[:alnum:]]"	       NOMATCH
638C.UTF-8		 "_"			"[[:alnum:]]"	       NOMATCH
639C.UTF-8		 "{"			"[[:alnum:]]"	       NOMATCH
640C.UTF-8		 "}"			"[[:alnum:]]"	       NOMATCH
641C.UTF-8		 "~"			"[[:alnum:]]"	       NOMATCH
642C.UTF-8		 "\""			"[[:alnum:]]"	       NOMATCH
643C.UTF-8		 "$"			"[[:alnum:]]"	       NOMATCH
644C.UTF-8		 "&"			"[[:alnum:]]"	       NOMATCH
645C.UTF-8		 "'"			"[[:alnum:]]"	       NOMATCH
646C.UTF-8		 "("			"[[:alnum:]]"	       NOMATCH
647C.UTF-8		 ")"			"[[:alnum:]]"	       NOMATCH
648C.UTF-8		 "*"			"[[:alnum:]]"	       NOMATCH
649C.UTF-8		 "?"			"[[:alnum:]]"	       NOMATCH
650C.UTF-8		 "`"			"[[:alnum:]]"	       NOMATCH
651C.UTF-8		 "|"			"[[:alnum:]]"	       NOMATCH
652C.UTF-8		 "<"			"[[:alnum:]]"	       NOMATCH
653C.UTF-8		 ">"			"[[:alnum:]]"	       NOMATCH
654C.UTF-8		 "\t"			"[[:cntrl:]]"	       0
655C.UTF-8		 "t"			"[[:cntrl:]]"	       NOMATCH
656C.UTF-8		 "t"			"[[:lower:]]"	       0
657C.UTF-8		 "\t"			"[[:lower:]]"	       NOMATCH
658C.UTF-8		 "T"			"[[:lower:]]"	       NOMATCH
659C.UTF-8		 "\t"			"[[:space:]]"	       0
660C.UTF-8		 "t"			"[[:space:]]"	       NOMATCH
661C.UTF-8		 "t"			"[[:alpha:]]"	       0
662C.UTF-8		 "\t"			"[[:alpha:]]"	       NOMATCH
663C.UTF-8		 "0"			"[[:digit:]]"	       0
664C.UTF-8		 "\t"			"[[:digit:]]"	       NOMATCH
665C.UTF-8		 "t"			"[[:digit:]]"	       NOMATCH
666C.UTF-8		 "\t"			"[[:print:]]"	       NOMATCH
667C.UTF-8		 "t"			"[[:print:]]"	       0
668C.UTF-8		 "T"			"[[:upper:]]"	       0
669C.UTF-8		 "\t"			"[[:upper:]]"	       NOMATCH
670C.UTF-8		 "t"			"[[:upper:]]"	       NOMATCH
671C.UTF-8		 "\t"			"[[:blank:]]"	       0
672C.UTF-8		 "t"			"[[:blank:]]"	       NOMATCH
673C.UTF-8		 "\t"			"[[:graph:]]"	       NOMATCH
674C.UTF-8		 "t"			"[[:graph:]]"	       0
675C.UTF-8		 "."			"[[:punct:]]"	       0
676C.UTF-8		 "t"			"[[:punct:]]"	       NOMATCH
677C.UTF-8		 "\t"			"[[:punct:]]"	       NOMATCH
678C.UTF-8		 "0"			"[[:xdigit:]]"	       0
679C.UTF-8		 "\t"			"[[:xdigit:]]"	       NOMATCH
680C.UTF-8		 "a"			"[[:xdigit:]]"	       0
681C.UTF-8		 "A"			"[[:xdigit:]]"	       0
682C.UTF-8		 "t"			"[[:xdigit:]]"	       NOMATCH
683C.UTF-8		 "a"			"[[alpha]]"	       NOMATCH
684C.UTF-8		 "a"			"[[alpha:]]"	       NOMATCH
685C.UTF-8		 "a]"			"[[alpha]]"	       0
686C.UTF-8		 "a]"			"[[alpha:]]"	       0
687C.UTF-8		 "a"			"[[:alpha:][.b.]]"     0
688C.UTF-8		 "a"			"[[:alpha:][=b=]]"     0
689C.UTF-8		 "a"			"[[:alpha:][:digit:]]" 0
690C.UTF-8		 "a"			"[[:digit:][:alpha:]]" 0
691
692# B.6 018(C)
693C.UTF-8		 "a"			"[a-c]"		       0
694C.UTF-8		 "b"			"[a-c]"		       0
695C.UTF-8		 "c"			"[a-c]"		       0
696C.UTF-8		 "a"			"[b-c]"		       NOMATCH
697C.UTF-8		 "d"			"[b-c]"		       NOMATCH
698C.UTF-8		 "B"			"[a-c]"		       NOMATCH
699C.UTF-8		 "b"			"[A-C]"		       NOMATCH
700C.UTF-8		 ""			"[a-c]"		       NOMATCH
701C.UTF-8		 "as"			"[a-ca-z]"	       NOMATCH
702C.UTF-8		 "a"			"[[.a.]-c]"	       0
703C.UTF-8		 "a"			"[a-[.c.]]"	       0
704C.UTF-8		 "a"			"[[.a.]-[.c.]]"	       0
705C.UTF-8		 "b"			"[[.a.]-c]"	       0
706C.UTF-8		 "b"			"[a-[.c.]]"	       0
707C.UTF-8		 "b"			"[[.a.]-[.c.]]"	       0
708C.UTF-8		 "c"			"[[.a.]-c]"	       0
709C.UTF-8		 "c"			"[a-[.c.]]"	       0
710C.UTF-8		 "c"			"[[.a.]-[.c.]]"	       0
711C.UTF-8		 "d"			"[[.a.]-c]"	       NOMATCH
712C.UTF-8		 "d"			"[a-[.c.]]"	       NOMATCH
713C.UTF-8		 "d"			"[[.a.]-[.c.]]"	       NOMATCH
714
715# B.6 019(C)
716C.UTF-8		 "a"			"[c-a]"		       NOMATCH
717C.UTF-8		 "a"			"[[.c.]-a]"	       NOMATCH
718C.UTF-8		 "a"			"[c-[.a.]]"	       NOMATCH
719C.UTF-8		 "a"			"[[.c.]-[.a.]]"	       NOMATCH
720C.UTF-8		 "c"			"[c-a]"		       NOMATCH
721C.UTF-8		 "c"			"[[.c.]-a]"	       NOMATCH
722C.UTF-8		 "c"			"[c-[.a.]]"	       NOMATCH
723C.UTF-8		 "c"			"[[.c.]-[.a.]]"	       NOMATCH
724
725# B.6 020(C)
726C.UTF-8		 "a"			"[a-c0-9]"	       0
727C.UTF-8		 "d"			"[a-c0-9]"	       NOMATCH
728C.UTF-8		 "B"			"[a-c0-9]"	       NOMATCH
729
730# B.6 021(C)
731C.UTF-8		 "-"			"[-a]"		       0
732C.UTF-8		 "a"			"[-b]"		       NOMATCH
733C.UTF-8		 "-"			"[!-a]"		       NOMATCH
734C.UTF-8		 "a"			"[!-b]"		       0
735C.UTF-8		 "-"			"[a-c-0-9]"	       0
736C.UTF-8		 "b"			"[a-c-0-9]"	       0
737C.UTF-8		 "a:"			"a[0-9-a]"	       NOMATCH
738C.UTF-8		 "a:"			"a[09-a]"	       0
739
740# B.6 024(C)
741C.UTF-8		 ""			"*"		       0
742C.UTF-8		 "asd/sdf"		"*"		       0
743
744# B.6 025(C)
745C.UTF-8		 "as"			"[a-c][a-z]"	       0
746C.UTF-8		 "as"			"??"		       0
747
748# B.6 026(C)
749C.UTF-8		 "asd/sdf"		"as*df"		       0
750C.UTF-8		 "asd/sdf"		"as*"		       0
751C.UTF-8		 "asd/sdf"		"*df"		       0
752C.UTF-8		 "asd/sdf"		"as*dg"		       NOMATCH
753C.UTF-8		 "asdf"			"as*df"		       0
754C.UTF-8		 "asdf"			"as*df?"	       NOMATCH
755C.UTF-8		 "asdf"			"as*??"		       0
756C.UTF-8		 "asdf"			"a*???"		       0
757C.UTF-8		 "asdf"			"*????"		       0
758C.UTF-8		 "asdf"			"????*"		       0
759C.UTF-8		 "asdf"			"??*?"		       0
760
761# B.6 027(C)
762C.UTF-8		 "/"			"/"		       0
763C.UTF-8		 "/"			"/*"		       0
764C.UTF-8		 "/"			"*/"		       0
765C.UTF-8		 "/"			"/?"		       NOMATCH
766C.UTF-8		 "/"			"?/"		       NOMATCH
767C.UTF-8		 "/"			"?"		       0
768C.UTF-8		 "."			"?"		       0
769C.UTF-8		 "/."			"??"		       0
770C.UTF-8		 "/"			"[!a-c]"	       0
771C.UTF-8		 "."			"[!a-c]"	       0
772
773# B.6 029(C)
774C.UTF-8		 "/"			"/"		       0       PATHNAME
775C.UTF-8		 "//"			"//"		       0       PATHNAME
776C.UTF-8		 "/.a"			"/*"		       0       PATHNAME
777C.UTF-8		 "/.a"			"/?a"		       0       PATHNAME
778C.UTF-8		 "/.a"			"/[!a-z]a"	       0       PATHNAME
779C.UTF-8		 "/.a/.b"		"/*/?b"		       0       PATHNAME
780
781# B.6 030(C)
782C.UTF-8		 "/"			"?"		       NOMATCH PATHNAME
783C.UTF-8		 "/"			"*"		       NOMATCH PATHNAME
784C.UTF-8		 "a/b"			"a?b"		       NOMATCH PATHNAME
785C.UTF-8		 "/.a/.b"		"/*b"		       NOMATCH PATHNAME
786
787# B.6 031(C)
788C.UTF-8		 "/$"			"\\/\\$"	       0
789C.UTF-8		 "/["			"\\/\\["	       0
790C.UTF-8		 "/["			"\\/["		       0
791C.UTF-8		 "/[]"			"\\/\\[]"	       0
792
793# B.6 032(C)
794C.UTF-8		 "/$"			"\\/\\$"	       NOMATCH NOESCAPE
795C.UTF-8		 "/\\$"			"\\/\\$"	       NOMATCH NOESCAPE
796C.UTF-8		 "\\/\\$"		"\\/\\$"	       0       NOESCAPE
797
798# B.6 033(C)
799C.UTF-8		 ".asd"			".*"		       0       PERIOD
800C.UTF-8		 "/.asd"		"*"		       0       PERIOD
801C.UTF-8		 "/as/.df"		"*/?*f"		       0       PERIOD
802C.UTF-8		 "..asd"		".[!a-z]*"	       0       PERIOD
803
804# B.6 034(C)
805C.UTF-8		 ".asd"			"*"		       NOMATCH PERIOD
806C.UTF-8		 ".asd"			"?asd"		       NOMATCH PERIOD
807C.UTF-8		 ".asd"			"[!a-z]*"	       NOMATCH PERIOD
808
809# B.6 035(C)
810C.UTF-8		 "/."			"/."		       0       PATHNAME|PERIOD
811C.UTF-8		 "/.a./.b."		"/.*/.*"	       0       PATHNAME|PERIOD
812C.UTF-8		 "/.a./.b."		"/.??/.??"	       0       PATHNAME|PERIOD
813
814# B.6 036(C)
815C.UTF-8		 "/."			"*"		       NOMATCH PATHNAME|PERIOD
816C.UTF-8		 "/."			"/*"		       NOMATCH PATHNAME|PERIOD
817C.UTF-8		 "/."			"/?"		       NOMATCH PATHNAME|PERIOD
818C.UTF-8		 "/."			"/[!a-z]"	       NOMATCH PATHNAME|PERIOD
819C.UTF-8		 "/a./.b."		"/*/*"		       NOMATCH PATHNAME|PERIOD
820C.UTF-8		 "/a./.b."		"/??/???"	       NOMATCH PATHNAME|PERIOD
821
822# Some home-grown tests.
823C.UTF-8		"foobar"		"foo*[abc]z"	       NOMATCH
824C.UTF-8		"foobaz"		"foo*[abc][xyz]"       0
825C.UTF-8		"foobaz"		"foo?*[abc][xyz]"      0
826C.UTF-8		"foobaz"		"foo?*[abc][x/yz]"     0
827C.UTF-8		"foobaz"		"foo?*[abc]/[xyz]"     NOMATCH PATHNAME
828C.UTF-8		"a"			"a/"                   NOMATCH PATHNAME
829C.UTF-8		"a/"			"a"		       NOMATCH PATHNAME
830C.UTF-8		"//a"			"/a"		       NOMATCH PATHNAME
831C.UTF-8		"/a"			"//a"		       NOMATCH PATHNAME
832C.UTF-8		"az"			"[a-]z"		       0
833C.UTF-8		"bz"			"[ab-]z"	       0
834C.UTF-8		"cz"			"[ab-]z"	       NOMATCH
835C.UTF-8		"-z"			"[ab-]z"	       0
836C.UTF-8		"az"			"[-a]z"		       0
837C.UTF-8		"bz"			"[-ab]z"	       0
838C.UTF-8		"cz"			"[-ab]z"	       NOMATCH
839C.UTF-8		"-z"			"[-ab]z"	       0
840C.UTF-8		"\\"			"[\\\\-a]"	       0
841C.UTF-8		"_"			"[\\\\-a]"	       0
842C.UTF-8		"a"			"[\\\\-a]"	       0
843C.UTF-8		"-"			"[\\\\-a]"	       NOMATCH
844C.UTF-8		"\\"			"[\\]-a]"	       NOMATCH
845C.UTF-8		"_"			"[\\]-a]"	       0
846C.UTF-8		"a"			"[\\]-a]"	       0
847C.UTF-8		"]"			"[\\]-a]"	       0
848C.UTF-8		"-"			"[\\]-a]"	       NOMATCH
849C.UTF-8		"\\"			"[!\\\\-a]"	       NOMATCH
850C.UTF-8		"_"			"[!\\\\-a]"	       NOMATCH
851C.UTF-8		"a"			"[!\\\\-a]"	       NOMATCH
852C.UTF-8		"-"			"[!\\\\-a]"	       0
853C.UTF-8		"!"			"[\\!-]"	       0
854C.UTF-8		"-"			"[\\!-]"	       0
855C.UTF-8		"\\"			"[\\!-]"	       NOMATCH
856C.UTF-8		"Z"			"[Z-\\\\]"	       0
857C.UTF-8		"["			"[Z-\\\\]"	       0
858C.UTF-8		"\\"			"[Z-\\\\]"	       0
859C.UTF-8		"-"			"[Z-\\\\]"	       NOMATCH
860C.UTF-8		"Z"			"[Z-\\]]"	       0
861C.UTF-8		"["			"[Z-\\]]"	       0
862C.UTF-8		"\\"			"[Z-\\]]"	       0
863C.UTF-8		"]"			"[Z-\\]]"	       0
864C.UTF-8		"-"			"[Z-\\]]"	       NOMATCH
865
866# Following are tests outside the scope of IEEE 2003.2 since they are using
867# locales other than the C locale.  The main focus of the tests is on the
868# handling of ranges and the recognition of character (vs bytes).
869de_DE.ISO-8859-1 "a"			"[a-z]"		       0
870de_DE.ISO-8859-1 "z"			"[a-z]"		       0
871de_DE.ISO-8859-1 "\344"			"[a-z]"		       0
872de_DE.ISO-8859-1 "\366"			"[a-z]"		       0
873de_DE.ISO-8859-1 "\374"			"[a-z]"		       0
874de_DE.ISO-8859-1 "A"			"[a-z]"		       NOMATCH
875de_DE.ISO-8859-1 "Z"			"[a-z]"		       NOMATCH
876de_DE.ISO-8859-1 "\304"			"[a-z]"		       NOMATCH
877de_DE.ISO-8859-1 "\326"			"[a-z]"		       NOMATCH
878de_DE.ISO-8859-1 "\334"			"[a-z]"		       NOMATCH
879de_DE.ISO-8859-1 "a"			"[A-Z]"		       NOMATCH
880de_DE.ISO-8859-1 "z"			"[A-Z]"		       NOMATCH
881de_DE.ISO-8859-1 "\344"			"[A-Z]"		       NOMATCH
882de_DE.ISO-8859-1 "\366"			"[A-Z]"		       NOMATCH
883de_DE.ISO-8859-1 "\374"			"[A-Z]"		       NOMATCH
884de_DE.ISO-8859-1 "A"			"[A-Z]"		       0
885de_DE.ISO-8859-1 "Z"			"[A-Z]"		       0
886de_DE.ISO-8859-1 "\304"			"[A-Z]"		       0
887de_DE.ISO-8859-1 "\326"			"[A-Z]"		       0
888de_DE.ISO-8859-1 "\334"			"[A-Z]"		       0
889de_DE.ISO-8859-1 "a"			"[[:lower:]]"	       0
890de_DE.ISO-8859-1 "z"			"[[:lower:]]"	       0
891de_DE.ISO-8859-1 "\344"			"[[:lower:]]"	       0
892de_DE.ISO-8859-1 "\366"			"[[:lower:]]"	       0
893de_DE.ISO-8859-1 "\374"			"[[:lower:]]"	       0
894de_DE.ISO-8859-1 "A"			"[[:lower:]]"	       NOMATCH
895de_DE.ISO-8859-1 "Z"			"[[:lower:]]"	       NOMATCH
896de_DE.ISO-8859-1 "\304"			"[[:lower:]]"	       NOMATCH
897de_DE.ISO-8859-1 "\326"			"[[:lower:]]"	       NOMATCH
898de_DE.ISO-8859-1 "\334"			"[[:lower:]]"	       NOMATCH
899de_DE.ISO-8859-1 "a"			"[[:upper:]]"	       NOMATCH
900de_DE.ISO-8859-1 "z"			"[[:upper:]]"	       NOMATCH
901de_DE.ISO-8859-1 "\344"			"[[:upper:]]"	       NOMATCH
902de_DE.ISO-8859-1 "\366"			"[[:upper:]]"	       NOMATCH
903de_DE.ISO-8859-1 "\374"			"[[:upper:]]"	       NOMATCH
904de_DE.ISO-8859-1 "A"			"[[:upper:]]"	       0
905de_DE.ISO-8859-1 "Z"			"[[:upper:]]"	       0
906de_DE.ISO-8859-1 "\304"			"[[:upper:]]"	       0
907de_DE.ISO-8859-1 "\326"			"[[:upper:]]"	       0
908de_DE.ISO-8859-1 "\334"			"[[:upper:]]"	       0
909de_DE.ISO-8859-1 "a"			"[[:alpha:]]"	       0
910de_DE.ISO-8859-1 "z"			"[[:alpha:]]"	       0
911de_DE.ISO-8859-1 "\344"			"[[:alpha:]]"	       0
912de_DE.ISO-8859-1 "\366"			"[[:alpha:]]"	       0
913de_DE.ISO-8859-1 "\374"			"[[:alpha:]]"	       0
914de_DE.ISO-8859-1 "A"			"[[:alpha:]]"	       0
915de_DE.ISO-8859-1 "Z"			"[[:alpha:]]"	       0
916de_DE.ISO-8859-1 "\304"			"[[:alpha:]]"	       0
917de_DE.ISO-8859-1 "\326"			"[[:alpha:]]"	       0
918de_DE.ISO-8859-1 "\334"			"[[:alpha:]]"	       0
919
920de_DE.ISO-8859-1 "a"			"[[=a=]b]"	       0
921de_DE.ISO-8859-1 "\342"			"[[=a=]b]"	       0
922de_DE.ISO-8859-1 "\340"			"[[=a=]b]"	       0
923de_DE.ISO-8859-1 "\341"			"[[=a=]b]"	       0
924de_DE.ISO-8859-1 "\344"			"[[=a=]b]"	       0
925de_DE.ISO-8859-1 "b"			"[[=a=]b]"	       0
926de_DE.ISO-8859-1 "c"			"[[=a=]b]"	       NOMATCH
927de_DE.ISO-8859-1 "a"			"[[=\342=]b]"	       0
928de_DE.ISO-8859-1 "\342"			"[[=\342=]b]"	       0
929de_DE.ISO-8859-1 "\340"			"[[=\342=]b]"	       0
930de_DE.ISO-8859-1 "\341"			"[[=\342=]b]"	       0
931de_DE.ISO-8859-1 "\344"			"[[=\342=]b]"	       0
932de_DE.ISO-8859-1 "b"			"[[=\342=]b]"	       0
933de_DE.ISO-8859-1 "c"			"[[=\342=]b]"	       NOMATCH
934de_DE.ISO-8859-1 "a"			"[[=\340=]b]"	       0
935de_DE.ISO-8859-1 "\342"			"[[=\340=]b]"	       0
936de_DE.ISO-8859-1 "\340"			"[[=\340=]b]"	       0
937de_DE.ISO-8859-1 "\341"			"[[=\340=]b]"	       0
938de_DE.ISO-8859-1 "\344"			"[[=\340=]b]"	       0
939de_DE.ISO-8859-1 "b"			"[[=\340=]b]"	       0
940de_DE.ISO-8859-1 "c"			"[[=\340=]b]"	       NOMATCH
941de_DE.ISO-8859-1 "a"			"[[=\341=]b]"	       0
942de_DE.ISO-8859-1 "\342"			"[[=\341=]b]"	       0
943de_DE.ISO-8859-1 "\340"			"[[=\341=]b]"	       0
944de_DE.ISO-8859-1 "\341"			"[[=\341=]b]"	       0
945de_DE.ISO-8859-1 "\344"			"[[=\341=]b]"	       0
946de_DE.ISO-8859-1 "b"			"[[=\341=]b]"	       0
947de_DE.ISO-8859-1 "c"			"[[=\341=]b]"	       NOMATCH
948de_DE.ISO-8859-1 "a"			"[[=\344=]b]"	       0
949de_DE.ISO-8859-1 "\342"			"[[=\344=]b]"	       0
950de_DE.ISO-8859-1 "\340"			"[[=\344=]b]"	       0
951de_DE.ISO-8859-1 "\341"			"[[=\344=]b]"	       0
952de_DE.ISO-8859-1 "\344"			"[[=\344=]b]"	       0
953de_DE.ISO-8859-1 "b"			"[[=\344=]b]"	       0
954de_DE.ISO-8859-1 "c"			"[[=\344=]b]"	       NOMATCH
955
956de_DE.ISO-8859-1 "aa"			"[[.a.]]a"	       0
957de_DE.ISO-8859-1 "ba"			"[[.a.]]a"	       NOMATCH
958
959
960# And with a multibyte character set.
961en_US.UTF-8	 "a"			"[a-z]"		       0
962en_US.UTF-8	 "z"			"[a-z]"		       0
963en_US.UTF-8	 "A"			"[a-z]"		       NOMATCH
964en_US.UTF-8	 "Z"			"[a-z]"		       NOMATCH
965en_US.UTF-8	 "a"			"[A-Z]"		       NOMATCH
966en_US.UTF-8	 "z"			"[A-Z]"		       NOMATCH
967en_US.UTF-8	 "A"			"[A-Z]"		       0
968en_US.UTF-8	 "Z"			"[A-Z]"		       0
969en_US.UTF-8	 "0"			"[0-9]"		       0
970en_US.UTF-8	 "9"			"[0-9]"		       0
971de_DE.UTF-8	 "a"			"[a-z]"		       0
972de_DE.UTF-8	 "z"			"[a-z]"		       0
973de_DE.UTF-8	 "ä"			"[a-z]"		       0
974de_DE.UTF-8	 "ö"			"[a-z]"		       0
975de_DE.UTF-8	 "ü"			"[a-z]"		       0
976de_DE.UTF-8	 "A"			"[a-z]"		       NOMATCH
977de_DE.UTF-8	 "Z"			"[a-z]"		       NOMATCH
978de_DE.UTF-8	 "Ä"			"[a-z]"		       NOMATCH
979de_DE.UTF-8	 "Ö"			"[a-z]"		       NOMATCH
980de_DE.UTF-8	 "Ü"			"[a-z]"		       NOMATCH
981de_DE.UTF-8	 "a"			"[A-Z]"		       NOMATCH
982de_DE.UTF-8	 "z"			"[A-Z]"		       NOMATCH
983de_DE.UTF-8	 "ä"			"[A-Z]"		       NOMATCH
984de_DE.UTF-8	 "ö"			"[A-Z]"		       NOMATCH
985de_DE.UTF-8	 "ü"			"[A-Z]"		       NOMATCH
986de_DE.UTF-8	 "A"			"[A-Z]"		       0
987de_DE.UTF-8	 "Z"			"[A-Z]"		       0
988de_DE.UTF-8	 "Ä"			"[A-Z]"		       0
989de_DE.UTF-8	 "Ö"			"[A-Z]"		       0
990de_DE.UTF-8	 "Ü"			"[A-Z]"		       0
991de_DE.UTF-8	 "a"			"[[:lower:]]"	       0
992de_DE.UTF-8	 "z"			"[[:lower:]]"	       0
993de_DE.UTF-8	 "ä"			"[[:lower:]]"	       0
994de_DE.UTF-8	 "ö"			"[[:lower:]]"	       0
995de_DE.UTF-8	 "ü"			"[[:lower:]]"	       0
996de_DE.UTF-8	 "A"			"[[:lower:]]"	       NOMATCH
997de_DE.UTF-8	 "Z"			"[[:lower:]]"	       NOMATCH
998de_DE.UTF-8	 "Ä"			"[[:lower:]]"	       NOMATCH
999de_DE.UTF-8	 "Ö"			"[[:lower:]]"	       NOMATCH
1000de_DE.UTF-8	 "Ü"			"[[:lower:]]"	       NOMATCH
1001de_DE.UTF-8	 "a"			"[[:upper:]]"	       NOMATCH
1002de_DE.UTF-8	 "z"			"[[:upper:]]"	       NOMATCH
1003de_DE.UTF-8	 "ä"			"[[:upper:]]"	       NOMATCH
1004de_DE.UTF-8	 "ö"			"[[:upper:]]"	       NOMATCH
1005de_DE.UTF-8	 "ü"			"[[:upper:]]"	       NOMATCH
1006de_DE.UTF-8	 "A"			"[[:upper:]]"	       0
1007de_DE.UTF-8	 "Z"			"[[:upper:]]"	       0
1008de_DE.UTF-8	 "Ä"			"[[:upper:]]"	       0
1009de_DE.UTF-8	 "Ö"			"[[:upper:]]"	       0
1010de_DE.UTF-8	 "Ü"			"[[:upper:]]"	       0
1011de_DE.UTF-8	 "a"			"[[:alpha:]]"	       0
1012de_DE.UTF-8	 "z"			"[[:alpha:]]"	       0
1013de_DE.UTF-8	 "ä"			"[[:alpha:]]"	       0
1014de_DE.UTF-8	 "ö"			"[[:alpha:]]"	       0
1015de_DE.UTF-8	 "ü"			"[[:alpha:]]"	       0
1016de_DE.UTF-8	 "A"			"[[:alpha:]]"	       0
1017de_DE.UTF-8	 "Z"			"[[:alpha:]]"	       0
1018de_DE.UTF-8	 "Ä"			"[[:alpha:]]"	       0
1019de_DE.UTF-8	 "Ö"			"[[:alpha:]]"	       0
1020de_DE.UTF-8	 "Ü"			"[[:alpha:]]"	       0
1021
1022de_DE.UTF-8	 "a"			"[[=a=]b]"	       0
1023de_DE.UTF-8	 "â"			"[[=a=]b]"	       0
1024de_DE.UTF-8	 "à"			"[[=a=]b]"	       0
1025de_DE.UTF-8	 "á"			"[[=a=]b]"	       0
1026de_DE.UTF-8	 "ä"			"[[=a=]b]"	       0
1027de_DE.UTF-8	 "b"			"[[=a=]b]"	       0
1028de_DE.UTF-8	 "c"			"[[=a=]b]"	       NOMATCH
1029de_DE.UTF-8	 "a"			"[[=â=]b]"	       0
1030de_DE.UTF-8	 "â"			"[[=â=]b]"	       0
1031de_DE.UTF-8	 "à"			"[[=â=]b]"	       0
1032de_DE.UTF-8	 "á"			"[[=â=]b]"	       0
1033de_DE.UTF-8	 "ä"			"[[=â=]b]"	       0
1034de_DE.UTF-8	 "b"			"[[=â=]b]"	       0
1035de_DE.UTF-8	 "c"			"[[=â=]b]"	       NOMATCH
1036de_DE.UTF-8	 "a"			"[[=à=]b]"	       0
1037de_DE.UTF-8	 "â"			"[[=à=]b]"	       0
1038de_DE.UTF-8	 "à"			"[[=à=]b]"	       0
1039de_DE.UTF-8	 "á"			"[[=à=]b]"	       0
1040de_DE.UTF-8	 "ä"			"[[=à=]b]"	       0
1041de_DE.UTF-8	 "b"			"[[=à=]b]"	       0
1042de_DE.UTF-8	 "c"			"[[=à=]b]"	       NOMATCH
1043de_DE.UTF-8	 "a"			"[[=á=]b]"	       0
1044de_DE.UTF-8	 "â"			"[[=á=]b]"	       0
1045de_DE.UTF-8	 "à"			"[[=á=]b]"	       0
1046de_DE.UTF-8	 "á"			"[[=á=]b]"	       0
1047de_DE.UTF-8	 "ä"			"[[=á=]b]"	       0
1048de_DE.UTF-8	 "b"			"[[=á=]b]"	       0
1049de_DE.UTF-8	 "c"			"[[=á=]b]"	       NOMATCH
1050de_DE.UTF-8	 "a"			"[[=ä=]b]"	       0
1051de_DE.UTF-8	 "â"			"[[=ä=]b]"	       0
1052de_DE.UTF-8	 "à"			"[[=ä=]b]"	       0
1053de_DE.UTF-8	 "á"			"[[=ä=]b]"	       0
1054de_DE.UTF-8	 "ä"			"[[=ä=]b]"	       0
1055de_DE.UTF-8	 "b"			"[[=ä=]b]"	       0
1056de_DE.UTF-8	 "c"			"[[=ä=]b]"	       NOMATCH
1057
1058de_DE.UTF-8	 "aa"			"[[.a.]]a"	       0
1059de_DE.UTF-8	 "ba"			"[[.a.]]a"	       NOMATCH
1060
1061
1062# Test of GNU extensions.
1063C		 "x"			"x"		       0       PATHNAME|LEADING_DIR
1064C		 "x/y"			"x"		       0       PATHNAME|LEADING_DIR
1065C		 "x/y/z"		"x"		       0       PATHNAME|LEADING_DIR
1066C		 "x"			"*"		       0       PATHNAME|LEADING_DIR
1067C		 "x/y"			"*"		       0       PATHNAME|LEADING_DIR
1068C		 "x/y/z"		"*"		       0       PATHNAME|LEADING_DIR
1069C		 "x"			"*x"		       0       PATHNAME|LEADING_DIR
1070
1071C		 "x/y"			"*x"		       0       PATHNAME|LEADING_DIR
1072C		 "x/y/z"		"*x"		       0       PATHNAME|LEADING_DIR
1073C		 "x"			"x*"		       0       PATHNAME|LEADING_DIR
1074C		 "x/y"			"x*"		       0       PATHNAME|LEADING_DIR
1075C		 "x/y/z"		"x*"		       0       PATHNAME|LEADING_DIR
1076C		 "x"			"a"		       NOMATCH PATHNAME|LEADING_DIR
1077C		 "x/y"			"a"		       NOMATCH PATHNAME|LEADING_DIR
1078C		 "x/y/z"		"a"		       NOMATCH PATHNAME|LEADING_DIR
1079C		 "x"			"x/y"		       NOMATCH PATHNAME|LEADING_DIR
1080C		 "x/y"			"x/y"		       0       PATHNAME|LEADING_DIR
1081C		 "x/y/z"		"x/y"		       0       PATHNAME|LEADING_DIR
1082C		 "x"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1083C		 "x/y"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1084C		 "x/y/z"		"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1085
1086# Duplicate the "Test of GNU extensions." tests but for C.UTF-8.
1087C.UTF-8		 "x"			"x"		       0       PATHNAME|LEADING_DIR
1088C.UTF-8		 "x/y"			"x"		       0       PATHNAME|LEADING_DIR
1089C.UTF-8		 "x/y/z"		"x"		       0       PATHNAME|LEADING_DIR
1090C.UTF-8		 "x"			"*"		       0       PATHNAME|LEADING_DIR
1091C.UTF-8		 "x/y"			"*"		       0       PATHNAME|LEADING_DIR
1092C.UTF-8		 "x/y/z"		"*"		       0       PATHNAME|LEADING_DIR
1093C.UTF-8		 "x"			"*x"		       0       PATHNAME|LEADING_DIR
1094
1095C.UTF-8		 "x/y"			"*x"		       0       PATHNAME|LEADING_DIR
1096C.UTF-8		 "x/y/z"		"*x"		       0       PATHNAME|LEADING_DIR
1097C.UTF-8		 "x"			"x*"		       0       PATHNAME|LEADING_DIR
1098C.UTF-8		 "x/y"			"x*"		       0       PATHNAME|LEADING_DIR
1099C.UTF-8		 "x/y/z"		"x*"		       0       PATHNAME|LEADING_DIR
1100C.UTF-8		 "x"			"a"		       NOMATCH PATHNAME|LEADING_DIR
1101C.UTF-8		 "x/y"			"a"		       NOMATCH PATHNAME|LEADING_DIR
1102C.UTF-8		 "x/y/z"		"a"		       NOMATCH PATHNAME|LEADING_DIR
1103C.UTF-8		 "x"			"x/y"		       NOMATCH PATHNAME|LEADING_DIR
1104C.UTF-8		 "x/y"			"x/y"		       0       PATHNAME|LEADING_DIR
1105C.UTF-8		 "x/y/z"		"x/y"		       0       PATHNAME|LEADING_DIR
1106C.UTF-8		 "x"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1107C.UTF-8		 "x/y"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1108C.UTF-8		 "x/y/z"		"x?y"		       NOMATCH PATHNAME|LEADING_DIR
1109
1110# Bug 14185
1111en_US.UTF-8	 "\366.csv"		"*.csv"                0
1112
1113# ksh style matching.
1114C		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
1115C		"/dev/udp/129.22.8.102/45" "/dev/@(tcp|udp)/*/*" 0     PATHNAME|EXTMATCH
1116C		"12"			"[1-9]*([0-9])"        0       EXTMATCH
1117C		"12abc"			"[1-9]*([0-9])"        NOMATCH EXTMATCH
1118C		"1"			"[1-9]*([0-9])"	       0       EXTMATCH
1119C		"07"			"+([0-7])"	       0       EXTMATCH
1120C		"0377"			"+([0-7])"	       0       EXTMATCH
1121C		"09"			"+([0-7])"	       NOMATCH EXTMATCH
1122C		"paragraph"		"para@(chute|graph)"   0       EXTMATCH
1123C		"paramour"		"para@(chute|graph)"   NOMATCH EXTMATCH
1124C		"para991"		"para?([345]|99)1"     0       EXTMATCH
1125C		"para381"		"para?([345]|99)1"     NOMATCH EXTMATCH
1126C		"paragraph"		"para*([0-9])"	       NOMATCH EXTMATCH
1127C		"para"			"para*([0-9])"	       0       EXTMATCH
1128C		"para13829383746592"	"para*([0-9])"	       0       EXTMATCH
1129C		"paragraph"		"para+([0-9])"	       NOMATCH EXTMATCH
1130C		"para"			"para+([0-9])"	       NOMATCH EXTMATCH
1131C		"para987346523"		"para+([0-9])"	       0       EXTMATCH
1132C		"paragraph"		"para!(*.[0-9])"       0       EXTMATCH
1133C		"para.38"		"para!(*.[0-9])"       0       EXTMATCH
1134C		"para.graph"		"para!(*.[0-9])"       0       EXTMATCH
1135C		"para39"		"para!(*.[0-9])"       0       EXTMATCH
1136C		""			"*(0|1|3|5|7|9)"       0       EXTMATCH
1137C		"137577991"		"*(0|1|3|5|7|9)"       0       EXTMATCH
1138C		"2468"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
1139C		"1358"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
1140C		"file.c"		"*.c?(c)"	       0       EXTMATCH
1141C		"file.C"		"*.c?(c)"	       NOMATCH EXTMATCH
1142C		"file.cc"		"*.c?(c)"	       0       EXTMATCH
1143C		"file.ccc"		"*.c?(c)"	       NOMATCH EXTMATCH
1144C		"parse.y"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
1145C		"shell.c"		"!(*.c|*.h|Makefile.in|config*|README)" NOMATCH EXTMATCH
1146C		"Makefile"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
1147C		"VMS.FILE;1"		"*\;[1-9]*([0-9])"     0       EXTMATCH
1148C		"VMS.FILE;0"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1149C		"VMS.FILE;"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1150C		"VMS.FILE;139"		"*\;[1-9]*([0-9])"     0       EXTMATCH
1151C		"VMS.FILE;1N"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1152C		"abcfefg"		"ab**(e|f)"	       0       EXTMATCH
1153C		"abcfefg"		"ab**(e|f)g"	       0       EXTMATCH
1154C		"ab"			"ab*+(e|f)"	       NOMATCH EXTMATCH
1155C		"abef"			"ab***ef"	       0       EXTMATCH
1156C		"abef"			"ab**"		       0       EXTMATCH
1157C		"fofo"			"*(f*(o))"	       0       EXTMATCH
1158C		"ffo"			"*(f*(o))"	       0       EXTMATCH
1159C		"foooofo"		"*(f*(o))"	       0       EXTMATCH
1160C		"foooofof"		"*(f*(o))"	       0       EXTMATCH
1161C		"fooofoofofooo"		"*(f*(o))"	       0       EXTMATCH
1162C		"foooofof"		"*(f+(o))"	       NOMATCH EXTMATCH
1163C		"xfoooofof"		"*(f*(o))"	       NOMATCH EXTMATCH
1164C		"foooofofx"		"*(f*(o))"	       NOMATCH EXTMATCH
1165C		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1166C		"ofooofoofofooo"	"*(f*(o))"	       NOMATCH EXTMATCH
1167C		"foooxfooxfoxfooox"	"*(f*(o)x)"	       0       EXTMATCH
1168C		"foooxfooxofoxfooox"	"*(f*(o)x)"	       NOMATCH EXTMATCH
1169C		"foooxfooxfxfooox"	"*(f*(o)x)"	       0       EXTMATCH
1170C		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1171C		"ofoooxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1172C		"ofoooxoofxoofoooxoofxo" "*(*(of*(o)x)o)"      0       EXTMATCH
1173C		"ofoooxoofxoofoooxoofxoo" "*(*(of*(o)x)o)"     0       EXTMATCH
1174C		"ofoooxoofxoofoooxoofxofo" "*(*(of*(o)x)o)"    NOMATCH EXTMATCH
1175C		"ofoooxoofxoofoooxoofxooofxofxo" "*(*(of*(o)x)o)" 0    EXTMATCH
1176C		"aac"			"*(@(a))a@(c)"	       0       EXTMATCH
1177C		"ac"			"*(@(a))a@(c)"	       0       EXTMATCH
1178C		"c"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
1179C		"aaac"			"*(@(a))a@(c)"	       0       EXTMATCH
1180C		"baaac"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
1181C		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
1182C		"abcd"			"@(ab|a*@(b))*(c)d"    0       EXTMATCH
1183C		"acd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
1184C		"abbcd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
1185C		"effgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1186C		"efgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1187C		"egz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1188C		"egzefffgzbcdij"	"*(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1189C		"egz"			"@(b+(c)d|e+(f)g?|?(h)i@(j|k))" NOMATCH EXTMATCH
1190C		"ofoofo"		"*(of+(o))"	       0       EXTMATCH
1191C		"oxfoxoxfox"		"*(oxf+(ox))"	       0       EXTMATCH
1192C		"oxfoxfox"		"*(oxf+(ox))"	       NOMATCH EXTMATCH
1193C		"ofoofo"		"*(of+(o)|f)"	       0       EXTMATCH
1194C		"foofoofo"		"@(foo|f|fo)*(f|of+(o))" 0     EXTMATCH
1195C		"oofooofo"		"*(of|oof+(o))"	       0       EXTMATCH
1196C		"fffooofoooooffoofffooofff" "*(*(f)*(o))"      0       EXTMATCH
1197C		"fofoofoofofoo"		"*(fo|foo)"	       0       EXTMATCH
1198C		"foo"			"!(x)"		       0       EXTMATCH
1199C		"foo"			"!(x)*"		       0       EXTMATCH
1200C		"foo"			"!(foo)"	       NOMATCH EXTMATCH
1201C		"foo"			"!(foo)*"	       0       EXTMATCH
1202C		"foobar"		"!(foo)"	       0       EXTMATCH
1203C		"foobar"		"!(foo)*"	       0       EXTMATCH
1204C		"moo.cow"		"!(*.*).!(*.*)"	       0       EXTMATCH
1205C		"mad.moo.cow"		"!(*.*).!(*.*)"	       NOMATCH EXTMATCH
1206C		"mucca.pazza"		"mu!(*(c))?.pa!(*(z))?" NOMATCH EXTMATCH
1207C		"fff"			"!(f)"		       0       EXTMATCH
1208C		"fff"			"*(!(f))"	       0       EXTMATCH
1209C		"fff"			"+(!(f))"	       0       EXTMATCH
1210C		"ooo"			"!(f)"		       0       EXTMATCH
1211C		"ooo"			"*(!(f))"	       0       EXTMATCH
1212C		"ooo"			"+(!(f))"	       0       EXTMATCH
1213C		"foo"			"!(f)"		       0       EXTMATCH
1214C		"foo"			"*(!(f))"	       0       EXTMATCH
1215C		"foo"			"+(!(f))"	       0       EXTMATCH
1216C		"f"			"!(f)"		       NOMATCH EXTMATCH
1217C		"f"			"*(!(f))"	       NOMATCH EXTMATCH
1218C		"f"			"+(!(f))"	       NOMATCH EXTMATCH
1219C		"foot"			"@(!(z*)|*x)"	       0       EXTMATCH
1220C		"zoot"			"@(!(z*)|*x)"	       NOMATCH EXTMATCH
1221C		"foox"			"@(!(z*)|*x)"	       0       EXTMATCH
1222C		"zoox"			"@(!(z*)|*x)"	       0       EXTMATCH
1223C		"foo"			"*(!(foo))"	       0       EXTMATCH
1224C		"foob"			"!(foo)b*"	       NOMATCH EXTMATCH
1225C		"foobb"			"!(foo)b*"	       0       EXTMATCH
1226C		"["			"*([a[])"	       0       EXTMATCH
1227C		"]"			"*([]a[])"	       0       EXTMATCH
1228C		"a"			"*([]a[])"	       0       EXTMATCH
1229C		"b"			"*([!]a[])"	       0       EXTMATCH
1230C		"["			"*([!]a[]|[[])"	       0       EXTMATCH
1231C		"]"			"*([!]a[]|[]])"	       0       EXTMATCH
1232C		"["			"!([!]a[])"	       0       EXTMATCH
1233C		"]"			"!([!]a[])"	       0       EXTMATCH
1234C		")"			"*([)])"	       0       EXTMATCH
1235C		"*"			"*([*(])"	       0       EXTMATCH
1236C		"abcd"			"*!(|a)cd"	       0       EXTMATCH
1237C		"ab/.a"			"+([abc])/*"	       NOMATCH EXTMATCH|PATHNAME|PERIOD
1238C		""			""		       0
1239C		""			""		       0       EXTMATCH
1240C		""			"*([abc])"	       0       EXTMATCH
1241C		""			"?([abc])"	       0       EXTMATCH
1242
1243# Duplicate the "ksh style matching." for C.UTF-8.
1244C.UTF-8		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
1245C.UTF-8		"/dev/udp/129.22.8.102/45" "/dev/@(tcp|udp)/*/*" 0     PATHNAME|EXTMATCH
1246C.UTF-8		"12"			"[1-9]*([0-9])"        0       EXTMATCH
1247C.UTF-8		"12abc"			"[1-9]*([0-9])"        NOMATCH EXTMATCH
1248C.UTF-8		"1"			"[1-9]*([0-9])"	       0       EXTMATCH
1249C.UTF-8		"07"			"+([0-7])"	       0       EXTMATCH
1250C.UTF-8		"0377"			"+([0-7])"	       0       EXTMATCH
1251C.UTF-8		"09"			"+([0-7])"	       NOMATCH EXTMATCH
1252C.UTF-8		"paragraph"		"para@(chute|graph)"   0       EXTMATCH
1253C.UTF-8		"paramour"		"para@(chute|graph)"   NOMATCH EXTMATCH
1254C.UTF-8		"para991"		"para?([345]|99)1"     0       EXTMATCH
1255C.UTF-8		"para381"		"para?([345]|99)1"     NOMATCH EXTMATCH
1256C.UTF-8		"paragraph"		"para*([0-9])"	       NOMATCH EXTMATCH
1257C.UTF-8		"para"			"para*([0-9])"	       0       EXTMATCH
1258C.UTF-8		"para13829383746592"	"para*([0-9])"	       0       EXTMATCH
1259C.UTF-8		"paragraph"		"para+([0-9])"	       NOMATCH EXTMATCH
1260C.UTF-8		"para"			"para+([0-9])"	       NOMATCH EXTMATCH
1261C.UTF-8		"para987346523"		"para+([0-9])"	       0       EXTMATCH
1262C.UTF-8		"paragraph"		"para!(*.[0-9])"       0       EXTMATCH
1263C.UTF-8		"para.38"		"para!(*.[0-9])"       0       EXTMATCH
1264C.UTF-8		"para.graph"		"para!(*.[0-9])"       0       EXTMATCH
1265C.UTF-8		"para39"		"para!(*.[0-9])"       0       EXTMATCH
1266C.UTF-8		""			"*(0|1|3|5|7|9)"       0       EXTMATCH
1267C.UTF-8		"137577991"		"*(0|1|3|5|7|9)"       0       EXTMATCH
1268C.UTF-8		"2468"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
1269C.UTF-8		"1358"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
1270C.UTF-8		"file.c"		"*.c?(c)"	       0       EXTMATCH
1271C.UTF-8		"file.C"		"*.c?(c)"	       NOMATCH EXTMATCH
1272C.UTF-8		"file.cc"		"*.c?(c)"	       0       EXTMATCH
1273C.UTF-8		"file.ccc"		"*.c?(c)"	       NOMATCH EXTMATCH
1274C.UTF-8		"parse.y"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
1275C.UTF-8		"shell.c"		"!(*.c|*.h|Makefile.in|config*|README)" NOMATCH EXTMATCH
1276C.UTF-8		"Makefile"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
1277C.UTF-8		"VMS.FILE;1"		"*\;[1-9]*([0-9])"     0       EXTMATCH
1278C.UTF-8		"VMS.FILE;0"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1279C.UTF-8		"VMS.FILE;"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1280C.UTF-8		"VMS.FILE;139"		"*\;[1-9]*([0-9])"     0       EXTMATCH
1281C.UTF-8		"VMS.FILE;1N"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
1282C.UTF-8		"abcfefg"		"ab**(e|f)"	       0       EXTMATCH
1283C.UTF-8		"abcfefg"		"ab**(e|f)g"	       0       EXTMATCH
1284C.UTF-8		"ab"			"ab*+(e|f)"	       NOMATCH EXTMATCH
1285C.UTF-8		"abef"			"ab***ef"	       0       EXTMATCH
1286C.UTF-8		"abef"			"ab**"		       0       EXTMATCH
1287C.UTF-8		"fofo"			"*(f*(o))"	       0       EXTMATCH
1288C.UTF-8		"ffo"			"*(f*(o))"	       0       EXTMATCH
1289C.UTF-8		"foooofo"		"*(f*(o))"	       0       EXTMATCH
1290C.UTF-8		"foooofof"		"*(f*(o))"	       0       EXTMATCH
1291C.UTF-8		"fooofoofofooo"		"*(f*(o))"	       0       EXTMATCH
1292C.UTF-8		"foooofof"		"*(f+(o))"	       NOMATCH EXTMATCH
1293C.UTF-8		"xfoooofof"		"*(f*(o))"	       NOMATCH EXTMATCH
1294C.UTF-8		"foooofofx"		"*(f*(o))"	       NOMATCH EXTMATCH
1295C.UTF-8		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1296C.UTF-8		"ofooofoofofooo"	"*(f*(o))"	       NOMATCH EXTMATCH
1297C.UTF-8		"foooxfooxfoxfooox"	"*(f*(o)x)"	       0       EXTMATCH
1298C.UTF-8		"foooxfooxofoxfooox"	"*(f*(o)x)"	       NOMATCH EXTMATCH
1299C.UTF-8		"foooxfooxfxfooox"	"*(f*(o)x)"	       0       EXTMATCH
1300C.UTF-8		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1301C.UTF-8		"ofoooxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
1302C.UTF-8		"ofoooxoofxoofoooxoofxo" "*(*(of*(o)x)o)"      0       EXTMATCH
1303C.UTF-8		"ofoooxoofxoofoooxoofxoo" "*(*(of*(o)x)o)"     0       EXTMATCH
1304C.UTF-8		"ofoooxoofxoofoooxoofxofo" "*(*(of*(o)x)o)"    NOMATCH EXTMATCH
1305C.UTF-8		"ofoooxoofxoofoooxoofxooofxofxo" "*(*(of*(o)x)o)" 0    EXTMATCH
1306C.UTF-8		"aac"			"*(@(a))a@(c)"	       0       EXTMATCH
1307C.UTF-8		"ac"			"*(@(a))a@(c)"	       0       EXTMATCH
1308C.UTF-8		"c"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
1309C.UTF-8		"aaac"			"*(@(a))a@(c)"	       0       EXTMATCH
1310C.UTF-8		"baaac"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
1311C.UTF-8		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
1312C.UTF-8		"abcd"			"@(ab|a*@(b))*(c)d"    0       EXTMATCH
1313C.UTF-8		"acd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
1314C.UTF-8		"abbcd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
1315C.UTF-8		"effgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1316C.UTF-8		"efgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1317C.UTF-8		"egz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1318C.UTF-8		"egzefffgzbcdij"	"*(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
1319C.UTF-8		"egz"			"@(b+(c)d|e+(f)g?|?(h)i@(j|k))" NOMATCH EXTMATCH
1320C.UTF-8		"ofoofo"		"*(of+(o))"	       0       EXTMATCH
1321C.UTF-8		"oxfoxoxfox"		"*(oxf+(ox))"	       0       EXTMATCH
1322C.UTF-8		"oxfoxfox"		"*(oxf+(ox))"	       NOMATCH EXTMATCH
1323C.UTF-8		"ofoofo"		"*(of+(o)|f)"	       0       EXTMATCH
1324C.UTF-8		"foofoofo"		"@(foo|f|fo)*(f|of+(o))" 0     EXTMATCH
1325C.UTF-8		"oofooofo"		"*(of|oof+(o))"	       0       EXTMATCH
1326C.UTF-8		"fffooofoooooffoofffooofff" "*(*(f)*(o))"      0       EXTMATCH
1327C.UTF-8		"fofoofoofofoo"		"*(fo|foo)"	       0       EXTMATCH
1328C.UTF-8		"foo"			"!(x)"		       0       EXTMATCH
1329C.UTF-8		"foo"			"!(x)*"		       0       EXTMATCH
1330C.UTF-8		"foo"			"!(foo)"	       NOMATCH EXTMATCH
1331C.UTF-8		"foo"			"!(foo)*"	       0       EXTMATCH
1332C.UTF-8		"foobar"		"!(foo)"	       0       EXTMATCH
1333C.UTF-8		"foobar"		"!(foo)*"	       0       EXTMATCH
1334C.UTF-8		"moo.cow"		"!(*.*).!(*.*)"	       0       EXTMATCH
1335C.UTF-8		"mad.moo.cow"		"!(*.*).!(*.*)"	       NOMATCH EXTMATCH
1336C.UTF-8		"mucca.pazza"		"mu!(*(c))?.pa!(*(z))?" NOMATCH EXTMATCH
1337C.UTF-8		"fff"			"!(f)"		       0       EXTMATCH
1338C.UTF-8		"fff"			"*(!(f))"	       0       EXTMATCH
1339C.UTF-8		"fff"			"+(!(f))"	       0       EXTMATCH
1340C.UTF-8		"ooo"			"!(f)"		       0       EXTMATCH
1341C.UTF-8		"ooo"			"*(!(f))"	       0       EXTMATCH
1342C.UTF-8		"ooo"			"+(!(f))"	       0       EXTMATCH
1343C.UTF-8		"foo"			"!(f)"		       0       EXTMATCH
1344C.UTF-8		"foo"			"*(!(f))"	       0       EXTMATCH
1345C.UTF-8		"foo"			"+(!(f))"	       0       EXTMATCH
1346C.UTF-8		"f"			"!(f)"		       NOMATCH EXTMATCH
1347C.UTF-8		"f"			"*(!(f))"	       NOMATCH EXTMATCH
1348C.UTF-8		"f"			"+(!(f))"	       NOMATCH EXTMATCH
1349C.UTF-8		"foot"			"@(!(z*)|*x)"	       0       EXTMATCH
1350C.UTF-8		"zoot"			"@(!(z*)|*x)"	       NOMATCH EXTMATCH
1351C.UTF-8		"foox"			"@(!(z*)|*x)"	       0       EXTMATCH
1352C.UTF-8		"zoox"			"@(!(z*)|*x)"	       0       EXTMATCH
1353C.UTF-8		"foo"			"*(!(foo))"	       0       EXTMATCH
1354C.UTF-8		"foob"			"!(foo)b*"	       NOMATCH EXTMATCH
1355C.UTF-8		"foobb"			"!(foo)b*"	       0       EXTMATCH
1356C.UTF-8		"["			"*([a[])"	       0       EXTMATCH
1357C.UTF-8		"]"			"*([]a[])"	       0       EXTMATCH
1358C.UTF-8		"a"			"*([]a[])"	       0       EXTMATCH
1359C.UTF-8		"b"			"*([!]a[])"	       0       EXTMATCH
1360C.UTF-8		"["			"*([!]a[]|[[])"	       0       EXTMATCH
1361C.UTF-8		"]"			"*([!]a[]|[]])"	       0       EXTMATCH
1362C.UTF-8		"["			"!([!]a[])"	       0       EXTMATCH
1363C.UTF-8		"]"			"!([!]a[])"	       0       EXTMATCH
1364C.UTF-8		")"			"*([)])"	       0       EXTMATCH
1365C.UTF-8		"*"			"*([*(])"	       0       EXTMATCH
1366C.UTF-8		"abcd"			"*!(|a)cd"	       0       EXTMATCH
1367C.UTF-8		"ab/.a"			"+([abc])/*"	       NOMATCH EXTMATCH|PATHNAME|PERIOD
1368C.UTF-8		""			""		       0
1369C.UTF-8		""			""		       0       EXTMATCH
1370C.UTF-8		""			"*([abc])"	       0       EXTMATCH
1371C.UTF-8		""			"?([abc])"	       0       EXTMATCH
1372