Пример #1
0
static int test_address(const char *address, const char **pattern)
{
    int i;
    int cmp;
    for (i = 0; i < 12; i++) {
        char ch = *(*pattern)++;
        if (ch == ';') return 1;
        if (ch == '*') {
            while ('*' == **pattern) {
                (*pattern)++;
            }
            ch = **pattern;
            if ((ch == ';')||(ch == '\0')) return 1;
            for (;i < 12; i++) {
                cmp = midp_strncasecmp(address, &ch, 1);
                address++;
                if ((ch != '?') && cmp) {
                    continue;
                } else {
                    (*pattern)++;
                    break;
                }
            }
            ch = **pattern;
        }
        if ((ch != '?') && (ch != '*') && midp_strncasecmp(address, &ch, 1)) {
            return 0;
        }
        address++;
    }
    return 1;
}
Пример #2
0
static int test_prefix(const char **pstring, const char *prefix)
{
    int len = strlen(prefix);
	if (!midp_strncasecmp(*pstring, prefix, len)) {
		*pstring += len;
        return 1;
    }
    return 0;
}
Пример #3
0
static int test_address(const char *address, const char **pattern)
{
    /* Need revisit: provide proper pattern matching - currently '*' is only allowed
       as the last symbol (no support for patterns such as '*ABC' or 'ABC*DEF').
    */
    int i;
    for (i = 0; i < 12; i++) {
        char ch = *(*pattern)++;
        if (ch == '*') {
            return 1;
        }
        if (ch != '?' && midp_strncasecmp(address, &ch, 1)) {
            return 0;
        }
        address++;
    }
    return 1;
}