blob: a362264cea74851551ef4cdc4f96e13d6b57ccde (
plain) (
tree)
|
|
int pmatch(const char *p, const char *s, unsigned int len) {
for (;;) {
char c =*p++;
if (! c) return(! len);
switch(c) {
case '*':
if (! (c =*p)) return(1);
for (;;) {
if (! len) return(0);
if (*s == c) break;
++s; --len;
}
continue;
case '+':
if ((c =*p++) != *s) return(0);
for (;;) {
if (! len) return(1);
if (*s != c) break;
++s; --len;
}
continue;
/*
case '?':
if (*p == '?') {
if (*s != '?') return(0);
++p;
}
++s; --len;
continue;
*/
default:
if (! len) return(0);
if (*s != c) return(0);
++s; --len;
continue;
}
}
return(0);
}
|