src/lib/wildcmp.c 1.7

1.7 2009/11/20 19:11:16 angie
Adding more const qualifiers because cart.c needs startsWith and wildMatch to have the same signature (thanks Galt!).
Index: src/lib/wildcmp.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/wildcmp.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 1000000 -r1.6 -r1.7
--- src/lib/wildcmp.c	20 Nov 2009 08:08:26 -0000	1.6
+++ src/lib/wildcmp.c	20 Nov 2009 19:11:16 -0000	1.7
@@ -1,117 +1,117 @@
 /* Wildcard matching. 
  *
  * This file is copyright 2002 Jim Kent, but license is hereby
  * granted for all use - public, private or commercial. */
 
 #include "common.h"
 
 static char const rcsid[] = "$Id$";
 
-static int subMatch(char *str, char *wild, char single, char multi)
+static int subMatch(const char *str, const char *wild, char single, char multi)
 /* Returns number of characters that match between str and wild up
  * to the next wildcard in wild (or up to end of string.). */
 {
 int len = 0;
 
 for(;;)
     {
     if(toupper(*str++) != toupper(*wild++) )
         return(0);
     ++len;
     char c = *wild;
     if (c == 0 || c == single || c == multi)
        return len;
     }
 }
 
-boolean anyWild(char *string)
+boolean anyWild(const char *string)
 /* Return TRUE if any wild card characters in string. */
 {
 char c;
 while ((c = *string++) != 0)
     {
     if (c == '?' || c == '*')
         return TRUE;
     }
 return FALSE;
 }
 
-static boolean globMatch(char *wildCard, char *string, char single, char multi)
+static boolean globMatch(const char *wildCard, const char *string, char single, char multi)
 /* does a case sensitive wild card match with a string.
  * * matches any string or no character.
  * ? matches any single character.
  * anything else etc must match the character exactly. */
 {
 boolean matchStar = 0;
 int starMatchSize;
 char c;
 
 for(;;)
     {
 NEXT_WILD:
     c = *wildCard;
     if (c == 0)
 	{
 	if(matchStar)
 	    {
 	    while(*string++)
 		;
 	    return TRUE;
 	    }
 	else if(*string)
 	    return FALSE;
 	else
 	    return TRUE;
 	}
     else if (c == multi)
 	{
 	matchStar = TRUE;
 	}
     else if (c == single)
 	{
 	if(*string == 0)
 	    return FALSE; /* out of string, no match for ? */
 	++string;
 	}
     else
 	{
 	if(matchStar)
 	    {
 	    for(;;)
 		{
 		if(*string == 0) /* if out of string no match */
 		    return FALSE;
 
 		/* note matchStar is re-used here for substring
 		 * after star match length */
 		if((starMatchSize = subMatch(string,wildCard,single,multi)) != 0)
 		    {
 		    string += starMatchSize;
 		    wildCard += starMatchSize;
 		    matchStar = FALSE;
 		    goto NEXT_WILD;
 		    }
 		++string;
 		}
 	    }
 
 	/* default: they must be equal or no match */
 	if(toupper(*string) != toupper(*wildCard))
 	    return FALSE;
 	++string;
 	}
     ++wildCard;
     }
 }
 
-boolean wildMatch(char *wildCard, char *string)
+boolean wildMatch(const char *wildCard, const char *string)
 /* Match using * and ? wildcards. */
 {
 return globMatch(wildCard, string, '?', '*');
 }
 
 boolean sqlMatchLike(char *wildCard, char *string)
 /* Match using % and _ wildcards. */
 {
 return globMatch(wildCard, string, '_', '%');
 }