1 /* +------------------------------------+
2 * | Inspire Internet Relay Chat Daemon |
3 * +------------------------------------+
5 * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
7 * <brain@chatspike.net>
8 * <Craig@chatspike.net>
10 * Written by Craig Edwards, Craig McLure, and others.
11 * This program is free but copyrighted software; see
12 * the file COPYING for details.
14 * ---------------------------------------------------
22 #include "inspstring.h"
24 using irc::sockets::MatchCIDR;
26 // Wed 27 Apr 2005 - Brain
27 // I've taken our our old wildcard routine -
28 // although comprehensive, it was topheavy and very
29 // slow, and ate masses of cpu when doing lots of
30 // comparisons. This is the 'de-facto' routine used
31 // by many, nobody really knows who wrote it first
32 // or what license its under, i've seen examples of it
33 // (unattributed to any author) all over the 'net.
34 // For now, we'll just consider this public domain.
36 bool match(const char *str, const char *mask)
38 unsigned char *cp, *mp;
39 unsigned char* string = (unsigned char*)str;
40 unsigned char* wild = (unsigned char*)mask;
42 while ((*string) && (*wild != '*'))
44 if ((lowermap[*wild] != lowermap[*string]) && (*wild != '?'))
64 if ((lowermap[*wild] == lowermap[*string]) || (*wild == '?'))
85 /* Overloaded function that has the option of using cidr */
86 bool match(const char *str, const char *mask, bool use_cidr_match)
88 if (use_cidr_match && MatchCIDR(str, mask, true))
90 return match(str, mask);