/*
 * $Source: /afs/athena.mit.edu/user/j/jik/sipbsrc/src/newwebster/lib/RCS/regexp.c,v $
 * $Author: jik $
 */

#if (!defined(lint) && !defined(SABER))
     static char rcsid_shell_regexp_c[] = "$Header: /afs/athena.mit.edu/user/j/jik/sipbsrc/src/newwebster/lib/RCS/regexp.c,v 1.1 90/09/10 12:11:57 jik Exp $";
#endif

#include <dictionary.h>

/*
 * This is a simple pattern matcher that takes a pattern string and
 * another string (theoretically a filename) and checks if the second
 * string matches the pattern string using the special characters
 * DICT_WILD_ONE to match one character, or DICT_WILD_ANY to match 0
 * or more characters.
 */


int dictPatternMatches(pattern, filename)
char *pattern, *filename;
{
     if (*pattern == '\0') {
	  if (*filename == '\0')
	       return(1);
	  else
	       return(0);
     }
     
     if (*pattern == DICT_WILD_ANY) {
	  char *ptr;
	  
	  if (*(pattern + 1) == '\0')
	       /* DICT_WILD_ANY by itself matches anything */
	       return(1);
	  for (ptr = filename; *ptr; ptr++)
	       if (dictPatternMatches(pattern + 1, ptr))
		    return(1);
	  return(0);
     }

     if (*filename == '\0')
	  return(0);
     
     if (*pattern == DICT_WILD_ONE)
	  return(dictPatternMatches(pattern + 1, filename + 1));

     if (*pattern == *filename)
	  return(dictPatternMatches(pattern + 1, filename + 1));
     else
	  return(0);
}
