/* * jmatch() match a pattern to a name */ #define RMSIZE 10 jmatch(name, pat) register char *pat, *name; { char *repat[RMSIZE]; char *rename[RMSIZE]; short rmsp=RMSIZE; while (1) { if (*pat == '*') { if (*name == 0) goto fai; if (pat[1] == 0) return 1; if (rmsp < 1) return 0; repat[--rmsp] = pat; rename[rmsp] = name; ++pat; continue; } else if (*pat == '?') { if (*name == 0) return 0; } else if (*pat != *name) { fai:if (rmsp < RMSIZE) { name = 1+rename[rmsp]; if (*name == 0) return 0; pat = repat[rmsp++]; continue; } else return 0; } else if (*pat == 0) return 1; ++pat, ++name; } /* {} while (1) */ } /* jmatch */