os-test > fnmatch
Legend
| Outcomes | ||||||
|---|---|---|---|---|---|---|
| Good | Good | Missing optional | Outside libc | |||
| Partial | Extension | Previous posix | ||||
| Neutral | None | |||||
| Bad | Compile error | Incompatible | Missing header | Undeclared | Undefined reference | Unknown type |
Good. A cell is good if the declaration is present
in the header and can be linked with libc. This outcome means the test
succeeded with the appropriate -D_POSIX_C_SOURCE=202405 or
-D_XOPEN_SOURCE=800 feature macros and the standard
libraries libc, libpthread, libm, librt, and libxnet.
Missing optional. A cell is missing_optional if the test could not be compiled, but the declaration is optional in POSIX and need not be provided.
Outside libc. A cell is outside_libc if the test could be compiled, but had to be linked with another standard library than the ones prescribed by POSIX: libc, libpthread, libm, librt, and libxnet. This may not conform to POSIX depending on the linking options provided by getconf(1)/confstr(3).
Extension. A cell is extension if the test could
not be compiled with the _POSIX_C_SOURCE and
_XOPEN_SOURCE feature macros, but it could instead be
compiled with other system-specific feature macros that provide the
entire API. This outcome means the system header feature macro logic
does not support the latest POSIX.1-2024 standard and only receives
partial credit. This outcome typically indicates a declaration new to
POSIX.1-2024.
Previous posix. A cell is previous_posix if the
test could not be compiled with the
-D_POSIX_C_SOURCE=202405 or
-D_XOPEN_SOURCE=800 feature macros from the POSIX.1-2024
standard, but the test could instead be compiled with the older
-D_POSIX_C_SOURCE=200809L or
-D_XOPEN_SOURCE=700
feature macros from the older POSIX.1-2008 standard. This
outcome means the system header feature macro logic does not support
the latest POSIX.1-2024 standard and only receives partial credit. In
particular, the header did not check if the value was higher than the
supported value, but instead hard-coded the supported values, and
failed to be forward compatible with new standard versions.
None. A cell is none if there is no test data result for that operating system.
Compile error. A cell is compile_error if the test could not be compiled and the error message was not recognized as a more precise error test outcome.
Incompatible. A cell is incompatible if the declaration existed in the header, but had a signature that is incompatible with the standardized declaration. This outcome typically indicates a type error in the declaration. Addressing the issue may require an incompatible ABI change or special compatibility logic.
Missing header. A cell is missing_header if the header did not exist.
Undeclared. A cell is undeclared if the header did not contain the declaration.
Undefined reference. A cell is undefined if the test could be compiled, but could not be linked with the standard library.
Unknown type. A cell is unknown_type if the test could not be compiled and failed because a required type was not declared. In some cases, functions fail because the header omitted a required type for a function and instead declared the function in an alternate fashion with an incompatible alias for the type.
§. The § link on the left of each row links to that row.
fnmatch
This suite tests fnmatch.
Each feature in the POSIX fnmatch pattern syntax is tested.
This suite is split into the strict base POSIX tests, which tests every sentence that is mandatory in POSIX; and the nonstandard tests, which tests all the optional behavior as well as common de facto extensions.
Each fnmatch feature is exhaustively combined with each other fnmatch feature to ensure that the features work together. More complicated tests combine multiple features in interesting cases. Each flag to fnmatch is tested as well with the relevant features.
The POSIX requirements on fnmatch can be tricky to understand. The POSIX.1-2024 chapter 2.14 text could not be written to be more confusing, as well as the relevant implications on the chapter 9 bracket expression syntax that is shared with regular expressions, but with additional special rules. Many tests use a truth table approach where every possible reasonable input is given to each pattern, so it's more likely that implementation bugs are discovered.
This suite has resolved the proper behaviors of as many unthinkably weird edge cases as possible. The backslash escaping rules have been an endless ride of curious questions about what happens if you put backslashes in unexpected places like [[:al\num:]], which the standard fails to consider explicitly, and we have to interpret what other language does apply to this case. POSIX.1-2024 changed a lot of the relevant language compared to the older POSIX.1-2008 in an effort to fix contradictions, and the resulting prose is endlessly difficult to interpret, and requires the rationale section to figure out what heck they even meant. Some patterns have unspecified behavior and are not tested.
The nonstandard tests check every extension I know of, along with UTF-8 and
unicode support, including case sensitivity and the behavior on invalid UTF-8
sequences. It's technically fine to disagree with the nonstandard tests, and
they mostly exist to study the availability of extensions, and to make sure they
are implemented properly in a common way. There are very few extensions to the
fnmatch pattern format, since POSIX is very strict unlike regular expressions,
but POSIX does allow a few extensions like [^ behaving the same as [^.
Overall this test suite is very comprehensive and should provide a near exhaustive coverage of the fnmatch features. I read every relevant sentence in POSIX and made sure a test case covered each sentence.
| aix AIX 7.3 powerpc |
dragonfly DragonFly 6.4-RELEASE x86_64 |
freebsd FreeBSD 15.0-RELEASE amd64 |
haiku Haiku R1~beta5+development x86_64 |
hurd GNU 0.9 i686-AT386 |
linux Linux 7.1.12+deb14-amd64 x86_64 |
macos macOS 26.5.2 Darwin 25.5.0 arm64 |
managarm Managarm 0.0.1-rolling x86_64 |
minix Minix 3.4.0 i386 |
musl Linux 6.18.52-0-lts x86_64 |
netbsd NetBSD 10.1 amd64 |
omnios SunOS 5.11 r151056 i386 |
openbsd OpenBSD 7.8 amd64 |
redox Redox 0.5.12 x86_64 |
solaris SunOS 5.11 11.4.95.227.1 sparc |
sortix Sortix 1.1.0-dev Oct 7 2026 x86_64 |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| § asterisk | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § asterisk-noescape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § bracket | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[]]' did not match "]" |
| § bracket-charclass | aix: good exit: 0 |
dragonfly: bad '[[:alnum:]]' did not match "a" |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[:alnum:]]' did not match "a" |
musl: good exit: 0 |
netbsd: bad '[[:alnum:]]' did not match "a" |
omnios: bad '[[:alnum:]]' did not match "a" |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[[:alnum:]]' did not match "a" |
| § bracket-charclass-escape | aix: bad '[\[:alnum:]]' did not reject "a" |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[\[:alnum:]]' did not reject "a" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: bad '[\[:alnum:]]' did not reject "a" |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: bad '[\[:alnum:]]' did not reject "a" |
redox: none | solaris: bad '[\[:alnum:]]' did not reject "a" |
sortix: good exit: 0 |
| § bracket-charclass-escape-mid | aix: bad '[[:al\num:]]' did not reject "#" |
dragonfly: bad '[[:alnum:]]' did not match "a" |
freebsd: bad '[[:al\num:]]' did not match "a" |
haiku: bad '[[:al\num:]]' did not match "a" |
hurd: bad '[[:al\num:]]' did not match "a" |
linux: bad '[[:al\num:]]' did not match "a" |
macos: bad '[[:al\num:]]' fnmatch returned weird result 2 on "a" |
managarm: none | minix: bad '[[:alnum:]]' did not match "a" |
musl: bad '[[:al\num:]]' did not match "a" |
netbsd: bad '[[:alnum:]]' did not match "a" |
omnios: bad '[[:alnum:]]' did not match "a" |
openbsd: bad '[[:al\num:]]' did not match "a" |
redox: none | solaris: bad '[[:al\num:]]' did not match "a" |
sortix: bad '[[:alnum:]]' did not match "a" |
| § bracket-charclass-noescape | aix: good exit: 0 |
dragonfly: bad '\[[:alnum:]]' FNM_NOESCAPE did not match "\a" |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '\[[:alnum:]]' FNM_NOESCAPE did not match "\a" |
musl: good exit: 0 |
netbsd: bad '\[[:alnum:]]' FNM_NOESCAPE did not match "\a" |
omnios: bad '\[[:alnum:]]' FNM_NOESCAPE did not match "\a" |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '\[[:alnum:]]' FNM_NOESCAPE did not match "\a" |
| § bracket-collate | aix: good exit: 0 |
dragonfly: bad '[[.a.]]' did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[.a.]]' did not match "a" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[.a.]]' did not match "a" |
musl: bad '[[.a.]]' did not match "a" |
netbsd: bad '[[.a.]]' did not match "a" |
omnios: bad '[[.a.]]' did not match "a" |
openbsd: bad '[[.a.]]' did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[.a.]]' did not match "a" |
| § bracket-collate-escape | aix: bad '[\[.a.]]' did not reject "\" |
dragonfly: bad '[[.a.]]' did not match "a" |
freebsd: bad '[[.\a.]]' did not match "a" |
haiku: bad '[[.a.]]' did not match "a" |
hurd: bad '[[.\a.]]' did not match "a" |
linux: bad '[[.\a.]]' did not match "a" |
macos: bad '[[.\a.]]' fnmatch returned weird result 2 on "a" |
managarm: none | minix: bad '[[.a.]]' did not match "a" |
musl: bad '[[.a.]]' did not match "a" |
netbsd: bad '[[.a.]]' did not match "a" |
omnios: bad '[[.a.]]' did not match "a" |
openbsd: bad '[[.a.]]' did not match "a" |
redox: none | solaris: bad '[\[.a.]]' did not reject "\" |
sortix: bad '[[.a.]]' did not match "a" |
| § bracket-collate-noescape | aix: good exit: 0 |
dragonfly: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
musl: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
netbsd: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
omnios: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
openbsd: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[.a.]]' FNM_NOESCAPE did not match "a" |
| § bracket-equivclass | aix: good exit: 0 |
dragonfly: bad '[[=a=]]' did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[=a=]]' did not match "a" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[=a=]]' did not match "a" |
musl: bad '[[=a=]]' did not match "a" |
netbsd: bad '[[=a=]]' did not match "a" |
omnios: bad '[[=a=]]' did not match "a" |
openbsd: bad '[[=a=]]' did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[=a=]]' did not match "a" |
| § bracket-equivclass-escape | aix: bad '[\[=a=]]' did not reject "\" |
dragonfly: bad '[[=a=]]' did not match "a" |
freebsd: bad '[[=\a=]]' did not match "a" |
haiku: bad '[[=a=]]' did not match "a" |
hurd: bad '[[=\a=]]' did not match "a" |
linux: bad '[[=\a=]]' did not match "a" |
macos: bad '[[=\a=]]' fnmatch returned weird result 2 on "a" |
managarm: none | minix: bad '[[=a=]]' did not match "a" |
musl: bad '[[=a=]]' did not match "a" |
netbsd: bad '[[=a=]]' did not match "a" |
omnios: bad '[[=a=]]' did not match "a" |
openbsd: bad '[[=a=]]' did not match "a" |
redox: none | solaris: bad '[\[=a=]]' did not reject "\" |
sortix: bad '[[=a=]]' did not match "a" |
| § bracket-equivclass-noescape | aix: good exit: 0 |
dragonfly: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
musl: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
netbsd: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
omnios: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
openbsd: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[=a=]]' FNM_NOESCAPE did not match "a" |
| § bracket-escape | aix: bad '[x\y]' did not reject "\" |
dragonfly: good exit: 0 |
freebsd: bad '[x\]]' did not match "x" |
haiku: bad '[x\y]' did not reject "\" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[x\]]' did not match "x" |
managarm: none | minix: good exit: 0 |
musl: bad '[x\y]' did not reject "\" |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: bad '[x\y]' did not reject "\" |
sortix: bad '\[foo]' did not reject "\f" |
| § bracket-invalid | aix: bad '[foo\]' did not match "[foo]" |
dragonfly: good exit: 0 |
freebsd: bad '[foo\]' did not reject "f" |
haiku: bad '[foo\]' did not match "[foo]" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[foo' fnmatch returned weird result 2 on "f" |
managarm: none | minix: bad '[foo' did not match "[foo" |
musl: bad '[foo\]' did not match "[foo]" |
netbsd: bad '[foo' did not match "[foo" |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: bad '[foo\]' did not match "[foo]" |
sortix: bad '[foo\]' did not reject "[foo\]" |
| § bracket-noescape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[foo\]' FNM_NOESCAPE did not reject "[foo\]" |
| § bracket-range | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[a-z]' did not match "b" |
| § bracket-range-collate | aix: good exit: 0 |
dragonfly: bad '[[.b.]-[.d.]]' did not match "b" |
freebsd: good exit: 0 |
haiku: bad '[[.b.]-[.d.]]' did not match "b" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[.b.]-[.d.]]' did not match "b" |
musl: bad '[[.b.]-[.d.]]' did not match "b" |
netbsd: bad '[[.b.]-[.d.]]' did not match "b" |
omnios: bad '[[.b.]-[.d.]]' did not match "b" |
openbsd: bad '[[.b.]-[.d.]]' did not match "b" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[.b.]-[.d.]]' did not match "b" |
| § bracket-range-collate-escape | aix: bad '[[.\\.]-[.a.]]' did not match "]" |
dragonfly: bad '[[.b.]-[.d.]]' did not match "c" |
freebsd: bad '[[.\\.]-[.a.]]' did not match "]" |
haiku: bad '[[.b.]-[.d.]]' did not match "c" |
hurd: bad '[[.\\.]-[.a.]]' did not match "]" |
linux: bad '[[.\\.]-[.a.]]' did not match "]" |
macos: bad '[[.\\.]-[.a.]]' fnmatch returned weird result 2 on "-" |
managarm: none | minix: bad '[[.b.]-[.d.]]' did not match "c" |
musl: bad '[[.b.]-[.d.]]' did not match "c" |
netbsd: bad '[[.b.]-[.d.]]' did not match "c" |
omnios: bad '[[.b.]-[.d.]]' did not match "c" |
openbsd: bad '[[.b.]-[.d.]]' did not match "c" |
redox: none | solaris: bad '[[.\\.]-[.a.]]' did not match "]" |
sortix: bad '[[.b.]-[.d.]]' did not match "c" |
| § bracket-range-collate-negative | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[d-[.b.]]' did not reject "d" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: bad '[d-[.b.]]' did not reject "d" |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § bracket-range-collate-noescape | aix: good exit: 0 |
dragonfly: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
freebsd: good exit: 0 |
haiku: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
musl: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
netbsd: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
omnios: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
openbsd: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[.b.]-[.d.]]' FNM_NOESCAPE did not match "c" |
| § bracket-range-escape | aix: bad '[a\-b]' did not match "-" |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[a\-b]' did not match "-" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: bad '[a\-b]' did not match "-" |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: bad '[a\-b]' did not match "-" |
sortix: bad '[Z-\]]' did not match "[" |
| § bracket-range-negative | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[d-b]' did not reject "b" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: bad '[d-b]' did not reject "b" |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[d-b]' did not reject "b" |
| § bracket-range-noescape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[a\-b]' FNM_NOESCAPE did not reject "-" |
| § casefold | aix: undeclared | dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § casefold-bracket-collate | aix: undeclared | dragonfly: bad '[[.a.]]' did not match "a" |
freebsd: bad '[[.A.]-[.f.]]' FNM_CASEFOLD did not match "G" |
haiku: bad '[[.a.]]' did not match "a" |
hurd: bad '[[.a.]]' FNM_CASEFOLD did not match "A" |
linux: bad '[[.a.]]' FNM_CASEFOLD did not match "A" |
macos: bad '[[.A.]-[.f.]]' FNM_CASEFOLD did not match "G" |
managarm: none | minix: bad '[[.a.]]' did not match "a" |
musl: bad '[[.a.]]' did not match "a" |
netbsd: bad '[[.a.]]' did not match "a" |
omnios: bad '[[.a.]]' did not match "a" |
openbsd: bad '[[.a.]]' did not match "a" |
redox: none | solaris: bad '[[.A.]-[.f.]]' FNM_CASEFOLD did not match "g" |
sortix: bad '[[.a.]]' did not match "a" |
| § casefold-bracket-equivclass | aix: undeclared | dragonfly: bad '[[=a=]]' did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[=a=]]' did not match "a" |
hurd: bad '[[=a=]]' FNM_CASEFOLD did not match "A" |
linux: bad '[[=a=]]' FNM_CASEFOLD did not match "A" |
macos: good exit: 0 |
managarm: none | minix: bad '[[=a=]]' did not match "a" |
musl: bad '[[=a=]]' did not match "a" |
netbsd: bad '[[=a=]]' did not match "a" |
omnios: bad '[[=a=]]' did not match "a" |
openbsd: bad '[[=a=]]' did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[=a=]]' did not match "a" |
| § casefold-bracket-range | aix: undeclared | dragonfly: bad '[A-f]' FNM_CASEFOLD did not match "G" |
freebsd: bad '[A-f]' FNM_CASEFOLD did not match "G" |
haiku: good exit: 0 |
hurd: bad '[A-f]' FNM_CASEFOLD did not match "G" |
linux: bad '[A-f]' FNM_CASEFOLD did not match "G" |
macos: bad '[A-f]' FNM_CASEFOLD did not match "G" |
managarm: none | minix: bad '[A-f]' FNM_CASEFOLD did not match "G" |
musl: good exit: 0 |
netbsd: bad '[A-f]' FNM_CASEFOLD did not match "G" |
omnios: bad '[A-f]' FNM_CASEFOLD did not match "G" |
openbsd: bad '[A-f]' FNM_CASEFOLD did not match "g" |
redox: none | solaris: bad '[A-f]' FNM_CASEFOLD did not match "g" |
sortix: bad '[a-f]' did not match "d" |
| § char | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § char-escape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '\a' did not reject "\a" |
| § char-noescape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § periodslash | aix: good exit: 0 |
dragonfly: bad '[[...][./.]]' did not match "." |
freebsd: good exit: 0 |
haiku: bad '[[...][./.]]' did not match "." |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[./]' did not match "." |
musl: bad '[[...][./.]]' did not match "." |
netbsd: bad '[./]' did not match "." |
omnios: bad '[[...][./.]]' did not match "." |
openbsd: bad '[[...][./.]]' did not match "." |
redox: none | solaris: good exit: 0 |
sortix: bad '[,-0]' did not match "." |
| § periodslash-pathname | aix: bad '[./]' FNM_PATHNAME did not match "." |
dragonfly: bad '[./]' FNM_PATHNAME did not match "." |
freebsd: bad '[!./]' FNM_PATHNAME did not match "x" |
haiku: bad '[[...][./.]]' FNM_PATHNAME did not match "." |
hurd: bad '*\/' FNM_PATHNAME did not match "./" |
linux: bad '*\/' FNM_PATHNAME did not match "./" |
macos: bad '[!./]' FNM_PATHNAME did not match "x" |
managarm: none | minix: bad '[./]' FNM_PATHNAME did not match "." |
musl: bad '[[...][./.]]' FNM_PATHNAME did not match "." |
netbsd: bad '[./]' FNM_PATHNAME did not match "." |
omnios: bad '[./]' FNM_PATHNAME did not match "." |
openbsd: bad '[./]' FNM_PATHNAME did not match "." |
redox: none | solaris: bad '[./]' FNM_PATHNAME did not match "." |
sortix: bad '[./]' FNM_PATHNAME did not match "." |
| § periodslash-period | aix: good exit: 0 |
dragonfly: bad '[[...][./.]]' FNM_PERIOD did not match "/" |
freebsd: good exit: 0 |
haiku: bad '\.' FNM_PERIOD did not match "." |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[./]' FNM_PERIOD did not match "/" |
musl: bad '\.' FNM_PERIOD did not match "." |
netbsd: bad '[./]' FNM_PERIOD did not match "/" |
omnios: bad '[[...][./.]]' FNM_PERIOD did not match "/" |
openbsd: bad '[[...][./.]]' FNM_PERIOD did not match "/" |
redox: none | solaris: good exit: 0 |
sortix: bad '[,-0]' FNM_PERIOD did not match "/" |
| § periodslash-period-pathname | aix: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
dragonfly: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
freebsd: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
haiku: bad '\.' FNM_PATHNAME FNM_PERIOD did not match "." |
hurd: bad '\/?' FNM_PATHNAME FNM_PERIOD did not reject "/." |
linux: bad '\/?' FNM_PATHNAME FNM_PERIOD did not reject "/." |
macos: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
managarm: none | minix: bad '[,-0]' FNM_PATHNAME FNM_PERIOD did not reject "." |
musl: bad '\.' FNM_PATHNAME FNM_PERIOD did not match "." |
netbsd: bad '[,-0]' FNM_PATHNAME FNM_PERIOD did not reject "." |
omnios: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
openbsd: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
redox: none | solaris: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
sortix: bad '[!./]' FNM_PATHNAME FNM_PERIOD did not match "x" |
| § question | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § question-noescape | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
|
Optional: nonstandard Nonstandard Extensions |
||||||||||||||||
| § bracket-caret | aix: bad '[^x]' did not reject "x" |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: bad '[^x]' did not reject "x" |
sortix: good exit: 0 |
| § bracket-charclass-invalid | aix: good '[[:invalid:]]' did not reject "a" |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good '[[:invalid:]]' fnmatch returned weird result 2 on "[[:invalid:]]" |
managarm: none | minix: good exit: 0 |
musl: good exit: 0 |
netbsd: good exit: 0 |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § bracket-charclass-invalid-neg | aix: good '[![:invalid:]]' did not match "a" |
dragonfly: good '[![:invalid:]]' did not match "a" |
freebsd: good '[![:invalid:]]' did not match "a" |
haiku: good exit: 0 |
hurd: good '[![:invalid:]]' did not match "a" |
linux: good '[![:invalid:]]' did not match "a" |
macos: good '[![:invalid:]]' fnmatch returned weird result 2 on "[![:invalid:]]" |
managarm: none | minix: good '[![:invalid:]]' did not match "a" |
musl: good exit: 0 |
netbsd: good '[![:invalid:]]' did not match "a" |
omnios: good '[![:invalid:]]' did not match "a" |
openbsd: good '[![:invalid:]]' did not match "a" |
redox: none | solaris: good exit: 0 |
sortix: good '[![:invalid:]]' did not match "a" |
| § bracket-charclass-invalid-x | aix: good exit: 0 |
dragonfly: good '[[:invalid:]x]' did not match "x" |
freebsd: good '[[:invalid:]x]' did not match "x" |
haiku: good exit: 0 |
hurd: good '[[:invalid:]x]' did not match "x" |
linux: good '[[:invalid:]x]' did not match "x" |
macos: good '[[:invalid:]x]' fnmatch returned weird result 2 on "[[:invalid:]x]" |
managarm: none | minix: good '[[:invalid:]x]' did not match "x" |
musl: good exit: 0 |
netbsd: good '[[:invalid:]x]' did not match "x" |
omnios: good '[[:invalid:]x]' did not match "x" |
openbsd: good '[[:invalid:]x]' did not match "x" |
redox: none | solaris: good exit: 0 |
sortix: good '[[:invalid:]x]' did not match "x" |
| § bracket-charclass-invalid-x-neg | aix: good '[![:invalid:]x]' did not match "y" |
dragonfly: good '[![:invalid:]x]' did not match "y" |
freebsd: good '[![:invalid:]x]' did not match "y" |
haiku: good exit: 0 |
hurd: good '[![:invalid:]x]' did not match "y" |
linux: good '[![:invalid:]x]' did not match "y" |
macos: good '[![:invalid:]x]' fnmatch returned weird result 2 on "[![:invalid:]x]" |
managarm: none | minix: good '[![:invalid:]x]' did not match "y" |
musl: good exit: 0 |
netbsd: good '[![:invalid:]x]' did not match "y" |
omnios: good '[![:invalid:]x]' did not match "y" |
openbsd: good '[![:invalid:]x]' did not match "y" |
redox: none | solaris: good exit: 0 |
sortix: good '[![:invalid:]x]' did not match "y" |
| § bracket-equivclass-rsq | aix: good exit: 0 |
dragonfly: bad '[[=]=]x]' did not match "x" |
freebsd: good exit: 0 |
haiku: bad '[[=]=]x]' did not match "]" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[[=]=]x]' did not match "x" |
musl: bad '[[=]=]x]' did not match "]" |
netbsd: bad '[[=]=]x]' did not match "x" |
omnios: bad '[[=]=]x]' did not match "x" |
openbsd: bad '[[=]=]x]' did not match "x" |
redox: none | solaris: good exit: 0 |
sortix: bad '[[=]=]x]' did not match "x" |
| § periodslash-period-ns | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[.abc]' FNM_PERIOD did not reject "." |
musl: good exit: 0 |
netbsd: bad '[.abc]' FNM_PERIOD did not reject "." |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[.abc]' FNM_PERIOD did not reject "." |
| § periodslash-period-pathname-ns | aix: good exit: 0 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: good exit: 0 |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad '[.abc]' FNM_PATHNAME FNM_PERIOD did not reject "." |
musl: good exit: 0 |
netbsd: bad '[.abc]' FNM_PATHNAME FNM_PERIOD did not reject "." |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: bad '[.abc]' FNM_PATHNAME FNM_PERIOD did not reject "." |
| § utf8-bracket | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[æø]' did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[æø]' did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '[æø]' did not match "æ" |
redox: none | solaris: bad '[æø]' did not match "æ" |
sortix: bad '[æø]' did not match "æ" |
| § utf8-bracket-casefold | aix: undeclared | dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[æø]' FNM_CASEFOLD did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[æø]' FNM_CASEFOLD did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '[æø]' FNM_CASEFOLD did not match "æ" |
redox: none | solaris: bad '[æø]' FNM_CASEFOLD did not match "æ" |
sortix: bad '[æø]' FNM_CASEFOLD did not match "æ" |
| § utf8-bracket-charclass | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[[:alpha:]]' did not match "a" |
freebsd: good exit: 0 |
haiku: bad '[[:alpha:]]' did not match "ø" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[[:alpha:]]' did not match "a" |
omnios: bad '[[:alpha:]]' did not match "a" |
openbsd: bad '[[:alpha:]]' did not match "ø" |
redox: none | solaris: bad '[[:alpha:]]' did not match "ø" |
sortix: bad '[[:alpha:]]' did not match "a" |
| § utf8-bracket-charclass-casefold | aix: undeclared | dragonfly: bad '[[:alpha:]]' FNM_CASEFOLD did not match "a" |
freebsd: bad '[[:upper:]]' FNM_CASEFOLD did not match "a" |
haiku: bad '[[:alpha:]]' FNM_CASEFOLD did not match "ø" |
hurd: bad '[[:lower:]]' FNM_CASEFOLD did not match "Λ" |
linux: bad '[[:lower:]]' FNM_CASEFOLD did not match "Λ" |
macos: bad '[[:upper:]]' FNM_CASEFOLD did not match "a" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[[:alpha:]]' FNM_CASEFOLD did not match "a" |
omnios: bad '[[:alpha:]]' FNM_CASEFOLD did not match "a" |
openbsd: bad '[[:alpha:]]' FNM_CASEFOLD did not match "ø" |
redox: none | solaris: bad '[[:alpha:]]' FNM_CASEFOLD did not match "ø" |
sortix: bad '[[:alpha:]]' FNM_CASEFOLD did not match "a" |
| § utf8-bracket-collate | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[[.ø.]]' did not match "ø" |
freebsd: bad '[[.ø.]]' did not match "ø" |
haiku: bad '[[.ø.]]' did not match "ø" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[[.ø.]]' fnmatch returned weird result 2 on "ø" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[.ø.]]' did not match "ø" |
netbsd: bad '[[.ø.]]' did not match "ø" |
omnios: bad '[[.ø.]]' did not match "ø" |
openbsd: bad '[[.ø.]]' did not match "ø" |
redox: none | solaris: bad '[[.ø.]]' did not match "ø" |
sortix: bad '[[.ø.]]' did not match "ø" |
| § utf8-bracket-collate-casefold | aix: undeclared | dragonfly: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
freebsd: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
haiku: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
hurd: bad '[[.ø.]]' FNM_CASEFOLD did not match "Ø" |
linux: bad '[[.ø.]]' FNM_CASEFOLD did not match "Ø" |
macos: bad '[[.ø.]]' FNM_CASEFOLD fnmatch returned weird result 2 on "ø" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
netbsd: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
omnios: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
openbsd: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
redox: none | solaris: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
sortix: bad '[[.ø.]]' FNM_CASEFOLD did not match "ø" |
| § utf8-bracket-collate-range | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[[.æ.]-[.ø.]]' did not match "æ" |
freebsd: bad '[[.æ.]-[.ø.]]' did not match "æ" |
haiku: bad '[[.æ.]-[.ø.]]' did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[[.æ.]-[.ø.]]' fnmatch returned weird result 2 on "æ" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[.æ.]-[.ø.]]' did not match "æ" |
netbsd: bad '[[.æ.]-[.ø.]]' did not match "æ" |
omnios: bad '[[.æ.]-[.ø.]]' did not match "æ" |
openbsd: bad '[[.æ.]-[.ø.]]' did not match "æ" |
redox: none | solaris: bad '[[.æ.]-[.ø.]]' did not match "æ" |
sortix: bad '[[.æ.]-[.ø.]]' did not match "æ" |
| § utf8-bracket-collate-range-casefold | aix: undeclared | dragonfly: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
freebsd: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
haiku: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD fnmatch returned weird result 2 on "æ" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
netbsd: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
omnios: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
openbsd: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
redox: none | solaris: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
sortix: bad '[[.æ.]-[.ø.]]' FNM_CASEFOLD did not match "æ" |
| § utf8-bracket-equivclass | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[[=ø=]]' did not match "ø" |
freebsd: bad '[[=ø=]]' did not match "ø" |
haiku: bad '[[=ø=]]' did not match "ø" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: bad '[[=ø=]]' fnmatch returned weird result 2 on "ø" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[=ø=]]' did not match "ø" |
netbsd: bad '[[=ø=]]' did not match "ø" |
omnios: bad '[[=ø=]]' did not match "ø" |
openbsd: bad '[[=ø=]]' did not match "ø" |
redox: none | solaris: bad '[[=ø=]]' did not match "ø" |
sortix: bad '[[=ø=]]' did not match "ø" |
| § utf8-bracket-equivclass-casefold | aix: undeclared | dragonfly: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
freebsd: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
haiku: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
hurd: bad '[[=ø=]]' FNM_CASEFOLD did not match "Ø" |
linux: bad '[[=ø=]]' FNM_CASEFOLD did not match "Ø" |
macos: bad '[[=ø=]]' FNM_CASEFOLD fnmatch returned weird result 2 on "ø" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
netbsd: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
omnios: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
openbsd: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
redox: none | solaris: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
sortix: bad '[[=ø=]]' FNM_CASEFOLD did not match "ø" |
| § utf8-bracket-range | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[æ-ø]' did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[!æ-ø]' did not match "Æ" |
netbsd: bad '[æ-ø]' did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '[æ-ø]' did not match "æ" |
redox: none | solaris: bad '[æ-ø]' did not match "æ" |
sortix: bad '[æ-ø]' did not match "æ" |
| § utf8-bracket-range-casefold | aix: undeclared | dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '[æ-ø]' FNM_CASEFOLD did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: bad '[!æ-ø]' FNM_CASEFOLD did not match "a" |
netbsd: bad '[æ-ø]' FNM_CASEFOLD did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '[æ-ø]' FNM_CASEFOLD did not match "æ" |
redox: none | solaris: bad '[æ-ø]' FNM_CASEFOLD did not match "æ" |
sortix: bad '[æ-ø]' FNM_CASEFOLD did not match "æ" |
| § utf8-char | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad 'æ' did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad 'æ' did not match "æ" |
omnios: good exit: 0 |
openbsd: good exit: 0 |
redox: none | solaris: good exit: 0 |
sortix: good exit: 0 |
| § utf8-char-casefold | aix: undeclared | dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad 'æ' FNM_CASEFOLD did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad 'æ' FNM_CASEFOLD did not match "æ" |
omnios: good exit: 0 |
openbsd: bad 'æ' FNM_CASEFOLD did not match "Æ" |
redox: none | solaris: bad 'æ' FNM_CASEFOLD did not match "Æ" |
sortix: bad 'æ' FNM_CASEFOLD did not match "Æ" |
| § utf8-invalid-continuation | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '?' did not reject "€" |
freebsd: bad '?' did not reject "€" |
haiku: good exit: 0 |
hurd: bad '?' did not reject "€" |
linux: bad '?' did not reject "€" |
macos: bad '?' did not reject "€" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '?' did not reject "€" |
omnios: bad '?' did not reject "€" |
openbsd: bad '?' did not reject "€" |
redox: none | solaris: bad '?' did not reject "€" |
sortix: bad '?' did not reject "€" |
| § utf8-invalid-missing | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[!x]' did not reject "Ã" |
freebsd: bad '[!x]' did not reject "Ã" |
haiku: good exit: 0 |
hurd: bad '[!x]' did not reject "Ã" |
linux: bad '[!x]' did not reject "Ã" |
macos: bad '[!x]' did not reject "Ã" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[!x]' did not reject "Ã" |
omnios: bad '[!x]' did not reject "Ã" |
openbsd: bad '[!x]' did not reject "Ã" |
redox: none | solaris: bad '[!x]' did not reject "Ã" |
sortix: bad '[!x]' did not reject "Ã" |
| § utf8-invalid-over-10ffff | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
freebsd: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
haiku: good exit: 0 |
hurd: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
linux: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
macos: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
omnios: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
openbsd: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
redox: none | solaris: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
sortix: bad '[!x][!x][!x][!x]' did not reject "õ€€" |
| § utf8-invalid-overlong | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[!x][!x]' did not reject "À¯" |
freebsd: bad '[!x][!x]' did not reject "À¯" |
haiku: good exit: 0 |
hurd: bad '[!x][!x]' did not reject "À¯" |
linux: bad '[!x][!x]' did not reject "À¯" |
macos: bad '[!x][!x]' did not reject "À¯" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[!x][!x]' did not reject "À¯" |
omnios: bad '[!x][!x]' did not reject "À¯" |
openbsd: bad '[!x][!x]' did not reject "À¯" |
redox: none | solaris: bad '[!x][!x]' did not reject "À¯" |
sortix: bad '[!x][!x]' did not reject "À¯" |
| § utf8-invalid-recover | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '??' did not reject "Ã " |
freebsd: bad '??' did not reject "Ã " |
haiku: good exit: 0 |
hurd: bad '??' did not reject "Ã " |
linux: bad '??' did not reject "Ã " |
macos: bad '??' did not reject "Ã " |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '??' did not reject "Ã " |
omnios: bad '??' did not reject "Ã " |
openbsd: bad '??' did not reject "Ã " |
redox: none | solaris: bad '??' did not reject "Ã " |
sortix: bad '??' did not reject "Ã " |
| § utf8-invalid-surrogate | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: bad '[!x]' did not reject "í €" |
freebsd: bad '[!x][!x][!x]' did not reject "í €" |
haiku: good exit: 0 |
hurd: bad '[!x][!x][!x]' did not reject "í €" |
linux: bad '[!x][!x][!x]' did not reject "í €" |
macos: bad '[!x][!x][!x]' did not reject "í €" |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '[!x][!x][!x]' did not reject "í €" |
omnios: bad '[!x]' did not reject "í €" |
openbsd: bad '[!x][!x][!x]' did not reject "í €" |
redox: none | solaris: bad '[!x][!x][!x]' did not reject "í €" |
sortix: bad '[!x][!x][!x]' did not reject "í €" |
| § utf8-question | aix: bad setlocale LC_CTYPE failed: C.UTF-8 |
dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '?' did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '?' did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '?' did not match "æ" |
redox: none | solaris: bad '?' did not match "æ" |
sortix: bad '?' did not match "æ" |
| § utf8-question-casefold | aix: undeclared | dragonfly: good exit: 0 |
freebsd: good exit: 0 |
haiku: bad '?' FNM_CASEFOLD did not match "æ" |
hurd: good exit: 0 |
linux: good exit: 0 |
macos: good exit: 0 |
managarm: none | minix: bad setlocale LC_CTYPE failed: C.UTF-8 |
musl: good exit: 0 |
netbsd: bad '?' FNM_CASEFOLD did not match "æ" |
omnios: good exit: 0 |
openbsd: bad '?' FNM_CASEFOLD did not match "æ" |
redox: none | solaris: bad '?' FNM_CASEFOLD did not match "æ" |
sortix: bad '?' FNM_CASEFOLD did not match "æ" |