Commit Diff
Diff:
a6dd2e33c2c9e60bbd286bb07a7a6273566dec7d
ab1fcebeff1593bf50bd091706a9b2f447db88cf
Commit:
ab1fcebeff1593bf50bd091706a9b2f447db88cf
Tree:
c4ad3dfee4b281202a35aba251030d97c927e8d7
Author:
Alexander Barton <alex@barton.de>
Committer:
Alexander Barton <alex@barton.de>
Date:
Sun Aug 26 11:11:45 2012 UTC
Message:
New function MatchCaseInsensitiveList() to check list of patterns
blob - 79699ea0d8740b7cf555af732d3c22ec1dfc9861
blob + 75bf4358395d27fa21b8a9c213c307a82a2196d6
--- src/ngircd/match.c
+++ 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, c
/**
* 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,20 +64,49 @@ 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 */
+
+
static int
Matche( const char *p, const char *t )
{
blob - 2efe3f5ba7ad81b08d0d237487b7112b77e22ebc
blob + d4107fb65d357fcdab95677685fa6340378b53d5
--- src/ngircd/match.h
+++ 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,9 +17,15 @@
* 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
/* -eof- */
IRCNow