/* * Wild Card Comparison * armian@stissbs.kordic.re.kr */ int CompareString(str1, str2) char *str1, *str2; { int ret; char *ptr1, *ptr2; if (str1[0] == NULL && str2[0] == NULL) { return 1; } if (str1[0] == NULL || str2[0] == NULL) { return 0; } if (str1[0] == str2[0]) { ret = CompareString(&str1[1], &str2[1]); } else if (str1[0] == '?') { ret = CompareString(&str1[1], &str2[1]); } else if (str1[0] == '*') { ptr1 = &str1[1]; while(1) { if (*ptr1 == NULL) { return 1; } if (*ptr1 == '*' || *ptr1 == '?') { ptr1++; } else { break; } } while(1) { ptr2 = (char *) strchr(str2, *ptr1); if (ptr2 == NULL) { return 0; } ret = CompareString(ptr1, ptr2); if (ret) return ret; else str2++; } } else { return 0; } return ret; }