Subversion Repositories Games.Carmageddon

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "pattern.h"
  2. #include "harness/trace.h"
  3. #include <ctype.h>
  4.  
  5. // IDA: br_boolean __cdecl BrNamePatternMatch(char *p, char *s)
  6. br_boolean BrNamePatternMatch(char* p, char* s) {
  7.     char* cp;
  8.     LOG_TRACE9("(\"%s\", \"%s\")", p, s);
  9.  
  10.     if (p == NULL) {
  11.         return 1;
  12.     }
  13.     if (s == NULL) {
  14.         return 0;
  15.     }
  16.  
  17.     for (;; s++, p++) {
  18.  
  19.         if (*p == '\0') {
  20.             // if pattern string ends at the same point as search string, we match
  21.             return *s == 0;
  22.         }
  23.  
  24.         if (*p == '*') {
  25.             cp = s;
  26.             do {
  27.                 if (BrNamePatternMatch(p + 1, cp)) {
  28.                     return 1;
  29.                 }
  30.             } while (*cp++);
  31.             return 0;
  32.         }
  33.         if (*p == '/') {
  34.             return *s == 0;
  35.         }
  36.         if (*p == '?') {
  37.             if (*s == '\0') {
  38.                 return 0;
  39.             }
  40.             continue;
  41.         }
  42.  
  43.         if (toupper(*p) != toupper(*s)) {
  44.             return 0;
  45.         }
  46.     }
  47.     return 1;
  48. }
  49.