/*
 * 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;

}

