[Initng-svn] r4047 - initng/trunk/src
svn at initng.thinktux.net
svn at initng.thinktux.net
Mon May 8 07:24:28 CEST 2006
Author: jimmy
Date: Mon May 8 07:24:26 2006
New Revision: 4047
Modified:
initng/trunk/src/initng_string_tools.c
Log:
service_match to count all '/' chars, it must be equal to have a correct match.
Modified: initng/trunk/src/initng_string_tools.c
==============================================================================
--- initng/trunk/src/initng_string_tools.c (original)
+++ initng/trunk/src/initng_string_tools.c Mon May 8 07:24:26 2006
@@ -275,6 +275,7 @@
* This search for a pattern.
* If string is "net/eth0" then pattern "net/et*" and pattern "net/eth?"
* should return true.
+ * The number of '/' chars must be equal on string and pattern.
*/
// examples:
// string pattern do_match
@@ -285,6 +286,9 @@
int service_match(const char *string, const char *pattern)
{
+ int stringslash=0;
+ int patternslash=0;
+ const char *tmp;
assert(string);
assert(pattern);
D_("matching string: \"%s\", to pattern: \"%s\"\n", string, pattern);
@@ -296,9 +300,24 @@
string);
return (FALSE);
}
+
+ /* check if its a match */
+ if(fnmatch(pattern, string, FNM_CASEFOLD) != 0)
+ return(FALSE);
+
+ /* count '/' in string */
+ tmp=string-1;
+ while((tmp=strchr(++tmp, '/')))
+ stringslash++;
+ /* count '/' in pattern */
+ tmp=pattern-1;
+ while((tmp=strchr(++tmp, '/')))
+ patternslash++;
+
+ /*D_("service_match(%s, %s): %i, %i\n", string, pattern, stringslash, patternslash); */
/* use fnmatch that shud serve us well as these matches looks like filename matching */
- return (fnmatch(pattern, string, FNM_CASEFOLD) == 0);
+ return (stringslash==patternslash);
}
/*
More information about the Initng-svn
mailing list