- Adapted indenation to new agreed upon system
- Added support for second generation scriptcontext based counter
This commit is contained in:
83
wwildcard.c
83
wwildcard.c
@@ -3,48 +3,53 @@
|
||||
|
||||
int match(const char *mask, const char *name)
|
||||
{
|
||||
int calls=0, wild=0, q=0;
|
||||
const char *m=mask, *n=name, *ma=mask, *na=name;
|
||||
int calls = 0, wild = 0, q = 0;
|
||||
const char *m = mask, *n = name, *ma = mask, *na = name;
|
||||
|
||||
for(;;) {
|
||||
if (++calls > MAX_CALLS) return 1;
|
||||
if (*m == '*') {
|
||||
while (*m == '*') ++m;
|
||||
wild = 1;
|
||||
ma = m;
|
||||
na = n;
|
||||
}
|
||||
for (;;) {
|
||||
if (++calls > MAX_CALLS)
|
||||
return 1;
|
||||
if (*m == '*') {
|
||||
while (*m == '*')
|
||||
++m;
|
||||
wild = 1;
|
||||
ma = m;
|
||||
na = n;
|
||||
}
|
||||
|
||||
if (!*m) {
|
||||
if (!*n) return 0;
|
||||
if (!*m) {
|
||||
if (!*n)
|
||||
return 0;
|
||||
|
||||
for (--m; (m > mask) && (*m == '?'); --m) ;
|
||||
for (--m; (m > mask) && (*m == '?'); --m);
|
||||
|
||||
if ((*m == '*') && (m > mask) &&
|
||||
(m[-1] != '\\'))
|
||||
return 0;
|
||||
if (!wild)
|
||||
return 1;
|
||||
m = ma;
|
||||
} else if (!*n) {
|
||||
while(*m == '*') ++m;
|
||||
return (*m != 0);
|
||||
}
|
||||
if ((*m == '\\') && ((m[1] == '*') || (m[1] == '?'))) {
|
||||
++m;
|
||||
q = 1;
|
||||
} else {
|
||||
q = 0;
|
||||
}
|
||||
if ((*m == '*') && (m > mask) && (m[-1] != '\\'))
|
||||
return 0;
|
||||
if (!wild)
|
||||
return 1;
|
||||
m = ma;
|
||||
} else if (!*n) {
|
||||
while (*m == '*')
|
||||
++m;
|
||||
return (*m != 0);
|
||||
}
|
||||
if ((*m == '\\') && ((m[1] == '*') || (m[1] == '?'))) {
|
||||
++m;
|
||||
q = 1;
|
||||
} else {
|
||||
q = 0;
|
||||
}
|
||||
|
||||
if ((tolower(*m) != tolower(*n)) && ((*m != '?') || q)) {
|
||||
if (!wild) return 1;
|
||||
m = ma;
|
||||
n = ++na;
|
||||
} else {
|
||||
if (*m) ++m;
|
||||
if (*n) ++n;
|
||||
}
|
||||
}
|
||||
if ((tolower(*m) != tolower(*n)) && ((*m != '?') || q)) {
|
||||
if (!wild)
|
||||
return 1;
|
||||
m = ma;
|
||||
n = ++na;
|
||||
} else {
|
||||
if (*m)
|
||||
++m;
|
||||
if (*n)
|
||||
++n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user