All pastes #415823 Raw Edit

Someone

public c v1 · immutable
#415823 ·published 2007-03-29 21:26 UTC
rendered paste body
/*  ?  matches any single character  *  matches 0 or more characters of any type  %  matches 0 or more non-space characters (can be used to match a single     word)  ~  matches 1 or more space characters (can be used for whitespace between     words)*/int egg_matchwilds(const char *haystack, const char *needle){  if (needle == NULL || haystack == NULL)    return 1;  while (*needle)  {    /* ? = one single character *haystack is not NULL if *needle isn't */    if (*needle == *haystack || *needle == '?')    {      needle++;      haystack++;    }    else if (*haystack == '\0' && *needle != '*')      return 1;    else if (*needle != '%' && *needle != '~' && *needle != '*')      return 1;    else if (*needle == '~')    {      /* One or more space characters */      if (*haystack != ' ' && *haystack != '\t')        return 1;      while (*haystack)      {        if (*haystack != ' ' && *haystack != '\t')          break;        haystack++;      }      needle++;    }    else if (*needle == '%')    {      while (*haystack)      {        if (*haystack == ' ' || *haystack == '\t')          break;        haystack++;      }      needle++;    }    else if (*needle == '*')    {      needle++;      while (*haystack && *needle)      {        if (*haystack == *needle)        {          /* Greedy, but works okay */          if (!egg_matchwilds(haystack+1,needle-1))            return 0;          break;        }        haystack++;      }    }  }  return 0;}