44 |
int |
int |
45 |
match(const char *mask, const char *name) |
match(const char *mask, const char *name) |
46 |
{ |
{ |
47 |
const unsigned char* m = (const unsigned char *) mask; |
const unsigned char *m = (const unsigned char *)mask; |
48 |
const unsigned char* n = (const unsigned char *) name; |
const unsigned char *n = (const unsigned char *)name; |
49 |
const unsigned char* ma = NULL; |
const unsigned char *ma = NULL; |
50 |
const unsigned char* na = (const unsigned char *) name; |
const unsigned char *na = (const unsigned char *)name; |
51 |
|
|
52 |
assert(mask != NULL); |
assert(mask != NULL); |
53 |
assert(name != NULL); |
assert(name != NULL); |
72 |
return 1; |
return 1; |
73 |
if (!ma) |
if (!ma) |
74 |
return 0; |
return 0; |
75 |
for (m--; (m > (const unsigned char*) mask) && (*m == '?'); m--) |
for (m--; (m > (const unsigned char *)mask) && (*m == '?'); m--) |
76 |
; |
; |
77 |
if (*m == '*') |
if (*m == '*') |
78 |
return 1; |
return 1; |
87 |
*/ |
*/ |
88 |
while (*m == '*') |
while (*m == '*') |
89 |
m++; |
m++; |
90 |
return (*m == 0); |
return *m == 0; |
91 |
} |
} |
92 |
|
|
93 |
if (ToLower(*m) != ToLower(*n) && *m != '?' && (*m != '#' || !IsDigit(*n))) |
if (ToLower(*m) != ToLower(*n) && *m != '?' && (*m != '#' || !IsDigit(*n))) |
112 |
int |
int |
113 |
match_esc(const char *mask, const char *name) |
match_esc(const char *mask, const char *name) |
114 |
{ |
{ |
115 |
const unsigned char *m = (const unsigned char *) mask; |
const unsigned char *m = (const unsigned char *)mask; |
116 |
const unsigned char *n = (const unsigned char *) name; |
const unsigned char *n = (const unsigned char *)name; |
117 |
const unsigned char *ma = NULL; |
const unsigned char *ma = NULL; |
118 |
const unsigned char *na = (const unsigned char *) name; |
const unsigned char *na = (const unsigned char *)name; |
119 |
|
|
120 |
assert(mask != NULL); |
assert(mask != NULL); |
121 |
assert(name != NULL); |
assert(name != NULL); |
140 |
return 1; |
return 1; |
141 |
if (!ma) |
if (!ma) |
142 |
return 0; |
return 0; |
143 |
for (m--; (m > (const unsigned char*) mask) && (*m == '?'); m--) |
for (m--; (m > (const unsigned char *)mask) && (*m == '?'); m--) |
144 |
; |
; |
145 |
if (*m == '*') |
if (*m == '*') |
146 |
return 1; |
return 1; |
155 |
*/ |
*/ |
156 |
while (*m == '*') |
while (*m == '*') |
157 |
m++; |
m++; |
158 |
return (*m == 0); |
return *m == 0; |
159 |
} |
} |
160 |
|
|
161 |
if (*m != '?' && (*m != '#' || IsDigit(*n))) |
if (*m != '?' && (*m != '#' || IsDigit(*n))) |
263 |
int |
int |
264 |
irccmp(const char *s1, const char *s2) |
irccmp(const char *s1, const char *s2) |
265 |
{ |
{ |
266 |
const unsigned char *str1 = (const unsigned char *) s1; |
const unsigned char *str1 = (const unsigned char *)s1; |
267 |
const unsigned char *str2 = (const unsigned char *) s2; |
const unsigned char *str2 = (const unsigned char *)s2; |
268 |
|
|
269 |
assert(s1 != NULL); |
assert(s1 != NULL); |
270 |
assert(s2 != NULL); |
assert(s2 != NULL); |
273 |
{ |
{ |
274 |
if (*str1 == '\0') |
if (*str1 == '\0') |
275 |
return 0; |
return 0; |
276 |
str1++; |
|
277 |
str2++; |
++str1; |
278 |
|
++str2; |
279 |
} |
} |
280 |
|
|
281 |
return 1; |
return 1; |