ncohafmuta-1.4.2/bot/
ncohafmuta-1.4.2/helpfiles/
ncohafmuta-1.4.2/lib/emailver/
ncohafmuta-1.4.2/tzinfo/Atlantic/
ncohafmuta-1.4.2/tzinfo/Brazil/
ncohafmuta-1.4.2/tzinfo/Chile/
ncohafmuta-1.4.2/tzinfo/Indian/
ncohafmuta-1.4.2/tzinfo/Mexico/
ncohafmuta-1.4.2/tzinfo/Mideast/
ncohafmuta-1.4.2/tzinfo/SystemV/
ncohafmuta-1.4.2/utils/
ncohafmuta-1.4.2/utils/code_fragments/new_config/
#define        MAX_CALLS        200

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;

        for(;;) {
                if (++calls > MAX_CALLS) return 1;
                if (*m == '*') {
                        while (*m == '*') ++m;
                        wild = 1;
                        ma = m;
                        na = n;
                }

                if (!*m) {
                        if (!*n) return 0;

                        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 ((tolower(*m) != tolower(*n)) && ((*m != '?') || q)) {
                        if (!wild) return 1;
                        m = ma;
                        n = ++na;
                } else {
                        if (*m) ++m
                        if (*n) ++n;
                }
        }
}