New function MatchCaseInsensitiveList() to check list of patterns

This commit is contained in:
Alexander Barton 2012-08-26 13:11:45 +02:00
parent a6dd2e33c2
commit ab1fcebeff
2 changed files with 48 additions and 13 deletions

View File

@ -1,6 +1,6 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * 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 * 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 * it under the terms of the GNU General Public License as published by
@ -64,17 +64,46 @@ Match( const char *Pattern, const char *String )
/** /**
* Match string with pattern case-insensitive. * Match string with pattern case-insensitive.
* *
* @param pattern Pattern to match with * @param Pattern Pattern to match with
* @param searchme Input string, at most COMMAND_LEN-1 characters long * @param String Input string, at most COMMAND_LEN-1 characters long
* @return true if pattern matches * @return true if pattern matches
*/ */
GLOBAL bool GLOBAL bool
MatchCaseInsensitive(const char *pattern, const char *searchme) MatchCaseInsensitive(const char *Pattern, const char *String)
{ {
char haystack[COMMAND_LEN]; char haystack[COMMAND_LEN];
strlcpy(haystack, searchme, sizeof(haystack)); strlcpy(haystack, String, sizeof(haystack));
return Match(pattern, ngt_LowerStr(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 */ } /* MatchCaseInsensitive */

View File

@ -1,6 +1,6 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * 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 * 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 * it under the terms of the GNU General Public License as published by
@ -18,7 +18,13 @@
*/ */
GLOBAL bool Match PARAMS((const char *Pattern, const char *String)); GLOBAL bool Match PARAMS((const char *Pattern, const char *String));
GLOBAL bool MatchCaseInsensitive PARAMS(( const char *Pattern, const char *searchme ));
GLOBAL bool MatchCaseInsensitive PARAMS((const char *Pattern,
const char *String));
GLOBAL bool MatchCaseInsensitiveList PARAMS((const char *Pattern,
const char *String,
const char *Separator));
#endif #endif