rem: soap_tag_cmp(register const char *s, register const char *t) { for (; *s && *s != '"'; s++, t++) if (tolower(*s) != tolower(*t)) if (*t != '-') { if (*t != '*')
add: soap_tag_cmp(const char *s, const char *t) { for (;;) { register int c1 = *s; register int c2 = *t; if (!c1 || c1 == '"') break; if (c2 != '-') { if (c1 != c2) { if (c1 >= 'A' && c1 <= 'Z') c1 += 'a' - 'A'; if (c2 >= 'A' && c2 <= 'Z') c2 += 'a' - 'A'; } if (c1 != c2) { if (c2 != '*')
context: soap_tag_cmp(register const char *s, register const char *t){ for (; *s && *s != '"'; s++, t++)    if (tolower(*s) != tolower(*t))      if (*t != '-')      { if (*t != '*')          return 1;        if (*++t)        { register int c = tolower(*t);          for (; *s && *s != '"'; s++)          { if (tolower(*s) == c)              if (!soap_tag_cmp(s + 1, t + 1))                return 0;          }          break;        }        else          return 0;      }  if (*t == '*' && !t[1])    return 0;  return *t;}