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; }
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; }
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; }