diff options
| author | Alexander Barton <alex@barton.de> | 2012-08-26 13:11:45 +0200 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2012-08-26 13:11:45 +0200 |
| commit | ab1fcebeff1593bf50bd091706a9b2f447db88cf (patch) | |
| tree | c4ad3dfee4b281202a35aba251030d97c927e8d7 | |
| parent | a6dd2e33c2c9e60bbd286bb07a7a6273566dec7d (diff) | |
| download | ngircd-ab1fcebeff1593bf50bd091706a9b2f447db88cf.tar.gz ngircd-ab1fcebeff1593bf50bd091706a9b2f447db88cf.zip | |
New function MatchCaseInsensitiveList() to check list of patterns
| -rw-r--r-- | src/ngircd/match.c | 49 | ||||
| -rw-r--r-- | src/ngircd/match.h | 12 |
2 files changed, 48 insertions, 13 deletions
diff --git a/src/ngircd/match.c b/src/ngircd/match.c index 79699ea0..75bf4358 100644 --- a/src/ngircd/match.c +++ b/src/ngircd/match.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) + * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,9 +48,9 @@ static int Matche_After_Star PARAMS(( const char *p, const char *t )); /** * Match string with pattern. * - * @param Pattern Pattern to match with - * @param String Input string - * @return true if pattern matches + * @param Pattern Pattern to match with + * @param String Input string + * @return true if pattern matches */ GLOBAL bool Match( const char *Pattern, const char *String ) @@ -64,17 +64,46 @@ Match( const char *Pattern, const char *String ) /** * Match string with pattern case-insensitive. * - * @param pattern Pattern to match with - * @param searchme Input string, at most COMMAND_LEN-1 characters long - * @return true if pattern matches + * @param Pattern Pattern to match with + * @param String Input string, at most COMMAND_LEN-1 characters long + * @return true if pattern matches */ GLOBAL bool -MatchCaseInsensitive(const char *pattern, const char *searchme) +MatchCaseInsensitive(const char *Pattern, const char *String) { char haystack[COMMAND_LEN]; - strlcpy(haystack, searchme, sizeof(haystack)); - return Match(pattern, ngt_LowerStr(haystack)); + strlcpy(haystack, String, sizeof(haystack)); + return Match(Pattern, ngt_LowerStr(haystack)); +} /* MatchCaseInsensitive */ + + +/** + * Match string with pattern case-insensitive. + * + * @param pattern Pattern to match with + * @param String Input string, at most COMMAND_LEN-1 characters long + * @param Separator Character separating the individual patterns in the list + * @return true if pattern matches + */ +GLOBAL bool +MatchCaseInsensitiveList(const char *Pattern, const char *String, + const char *Separator) +{ + char tmp_pattern[COMMAND_LEN], haystack[COMMAND_LEN], *ptr; + + strlcpy(tmp_pattern, Pattern, sizeof(tmp_pattern)); + strlcpy(haystack, String, sizeof(haystack)); + ngt_LowerStr(haystack); + + ptr = strtok(tmp_pattern, Separator); + while (ptr) { + ngt_TrimStr(ptr); + if (Match(ptr, haystack)) + return true; + ptr = strtok(NULL, Separator); + } + return false; } /* MatchCaseInsensitive */ diff --git a/src/ngircd/match.h b/src/ngircd/match.h index 2efe3f5b..d4107fb6 100644 --- a/src/ngircd/match.h +++ b/src/ngircd/match.h @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) + * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,8 +17,14 @@ * Wildcard pattern matching (header) */ -GLOBAL bool Match PARAMS(( const char *Pattern, const char *String )); -GLOBAL bool MatchCaseInsensitive PARAMS(( const char *Pattern, const char *searchme )); +GLOBAL bool Match PARAMS((const char *Pattern, const char *String)); + +GLOBAL bool MatchCaseInsensitive PARAMS((const char *Pattern, + const char *String)); + +GLOBAL bool MatchCaseInsensitiveList PARAMS((const char *Pattern, + const char *String, + const char *Separator)); #endif |