2 * Copyright (C) 2012-2013 Philipp Kreil (pk910)
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 int stricmp (const char *s1, const char *s2) {
23 return stricmplen(s1, s2, -1);
26 int stricmplen(const char *s1, const char *s2, int len) {
28 return (s2 == NULL ? 0 : -(*s2));
33 while ((c1 = tolower(*s1)) == (c2 = tolower(*s2))) {
39 if(len != -1 && i == len) break;
44 /* copied from IRCU 2.10.12 match.c */
46 * Compare if a given string (name) matches the given
47 * mask (which can contain wild cards: '*' - match any
48 * number of chars, '?' - match any single character.
53 * Originally by Douglas A Lewis (dalewis@acsu.buffalo.edu)
54 * Rewritten by Timothy Vogelsang (netski), net@astrolink.org
56 int match(const char *mask, const char *name)
58 const char *m = mask, *n = name;
59 const char *m_tmp = mask, *n_tmp = name;
62 for (;;) switch (*m) {
76 /* allow escaping to force capitalization */
81 for (star_p = 0; ; m++) {
92 else if (*m == '\\') {
96 for (n_tmp = n; *n && *n != *m; n++) ;
99 for (n_tmp = n; *n && tolower(*n) != tolower(*m); n++) ;
102 /* and fall through */
106 if (tolower(*m) != tolower(*n))