home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_c / suplib.lzh / SUPLIB / SRC / WILDCMP.C.OLD < prev    next >
Text File  |  1991-08-16  |  1KB  |  67 lines

  1.  
  2. /*BREAKUP wildcmp.c */
  3. /*
  4.  * Compare a wild card name with a normal name
  5.  */
  6.  
  7. #define MAXB   8
  8.  
  9.  
  10. wildcmp(wild, name)
  11. char *wild, *name;
  12. {
  13.     register char *w = wild;
  14.     register char *n = name;
  15.     char *back[MAXB][2];
  16.     register short bi = 0;
  17.     register char c1, c2;
  18.  
  19.     while (*n || *w) {
  20.     switch (*w) {
  21.     case '*':
  22.         if (bi == MAXB) {
  23.         puts ("Too many levels of '*'");
  24.         return (0);
  25.         }
  26.         back[bi][0] = w;
  27.         back[bi][1] = n;
  28.         ++bi;
  29.         ++w;
  30.         continue;
  31. goback:
  32.         --bi;
  33.         while (bi >= 0 && *back[bi][1] == '\0')
  34.         --bi;
  35.         if (bi < 0)
  36.         return (0);
  37.         w = back[bi][0] + 1;
  38.         n = ++back[bi][1];
  39.         ++bi;
  40.         continue;
  41.     case '?':
  42.         if (!*n) {
  43.         if (bi)
  44.             goto goback;
  45.         return (0);
  46.         }
  47.         break;
  48.     default:
  49.         if ((c1 = *n) >= 'A' && c1 <= 'Z')
  50.         c1 |= 0x20;
  51.         if ((c2 = *w) >= 'A' && c2 <= 'Z')
  52.         c2 |= 0x20;
  53.         if (c1 != c2) {
  54.         if (bi)
  55.             goto goback;
  56.         return (0);
  57.         }
  58.         break;
  59.     }
  60.     if (*n)  ++n;
  61.     if (*w)  ++w;
  62.     }
  63.     return (1);
  64. }
  65.  
  66.  
  67.