28#define _RWSTD_TEST_SRC
37_rw_bracketmatch (
const char *pattern,
const unsigned char ch,
int)
39 const char *pc = pattern;
46 if (
'!' == *pc ||
'^' == *pc) {
51 if (
'-' == *pc ||
']' == *pc) {
55 if (ch ==
UChar (*pc)) {
65 for ( ; *pc && (*pc !=
']' || pc [-1] ==
'\\'); ++pc);
78 if (ch ==
UChar (*pc)) {
84 for ( ; *pc && (*pc !=
']' || pc [-1] ==
'\\'); ++pc);
92 if (
']' == *pc && !esc)
95 if (
'-' == *pc && !esc)
96 first =
UChar (pc [-1]);
99 if (first <= ch && ch <=
UChar (*pc)) {
105 for ( ; *pc && (*pc !=
']' || pc [-1] ==
'\\'); ++pc);
111 else if (ch ==
UChar (*pc)) {
117 for ( ; *pc && (*pc !=
']' || pc [-1] ==
'\\'); ++pc);
132 const char *next = string;
136 for (
const char *pc = pattern; ; ++pc) {
138 switch (
const char c = *pc) {
167 for ( ;
'*' == pc [1]; ++pc);
169 for ( ; *next; ++next) {
204 pc = _rw_bracketmatch (pc + 1,
UChar (*next),
arg);
226 while (
'*' == *++pc);
_TEST_EXPORT int rw_fnmatch(const char *pattern, const char *string, int arg)