diff options
author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2007-01-02 14:54:07 +0000 |
---|---|---|
committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2007-01-02 14:54:07 +0000 |
commit | 2c390a19295d497256d49620fe7537503d320828 (patch) | |
tree | f3b8886b9a67749d5ed77d13d5fa0bf77726ab9a /src | |
parent | ba36a782319f4e22d32dabe82c3087bee39e4a7e (diff) |
BUILD : 1.7.18 (1218) BUGS : 622 NOTES : Fixed ChanServ LIST to now search for <#chan> if only <chan> is given; Fixed all LIST commands to give error reporting when specifying incorrect ranges.
git-svn-id: svn://svn.anope.org/anope/trunk@1218 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@937 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/core/cs_list.c | 21 | ||||
-rw-r--r-- | src/core/hs_list.c | 4 | ||||
-rw-r--r-- | src/core/ns_list.c | 4 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/core/cs_list.c b/src/core/cs_list.c index 315f92cc7..7fa43a12a 100644 --- a/src/core/cs_list.c +++ b/src/core/cs_list.c @@ -72,6 +72,8 @@ void myChanServHelp(User * u) int do_list(User * u) { char *pattern = strtok(NULL, " "); + int spattern_size; + char *spattern; ChannelInfo *ci; int nchans, i; char buf[BUFSIZE]; @@ -97,11 +99,15 @@ int do_list(User * u) if (pattern[0] == '#') { tmp = myStrGetOnlyToken((pattern + 1), '-', 0); /* Read FROM out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); + notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); + notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } } @@ -109,11 +115,15 @@ int do_list(User * u) free(tmp); tmp = myStrGetTokenRemainder(pattern, '-', 1); /* Read TO out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); + notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); + notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } } @@ -134,6 +144,11 @@ int do_list(User * u) if (stricmp(keyword, "NOEXPIRE") == 0) matchflags |= CI_NO_EXPIRE; } + + spattern_size = (strlen(pattern) + 2) * sizeof(char); + spattern = smalloc(spattern_size); + snprintf(spattern, spattern_size, "#%s", pattern); + notice_lang(s_ChanServ, u, CHAN_LIST_HEADER, pattern); for (i = 0; i < 256; i++) { @@ -144,8 +159,10 @@ int do_list(User * u) if ((matchflags != 0) && !(ci->flags & matchflags)) continue; - if (stricmp(pattern, ci->name) == 0 - || match_wild_nocase(pattern, ci->name)) { + if ((stricmp(pattern, ci->name) == 0) + || (stricmp(spattern, ci->name) == 0) + || match_wild_nocase(pattern, ci->name) + || match_wild_nocase(spattern, ci->name)) { if ((((count + 1 >= from) && (count + 1 <= to)) || ((from == 0) && (to == 0))) && (++nchans <= CSListMax)) { diff --git a/src/core/hs_list.c b/src/core/hs_list.c index ac26a2d0b..1dc209196 100644 --- a/src/core/hs_list.c +++ b/src/core/hs_list.c @@ -93,11 +93,13 @@ int listOut(User * u) if (key[0] == '#') { tmp = myStrGetOnlyToken((key + 1), '-', 0); /* Read FROM out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } @@ -105,11 +107,13 @@ int listOut(User * u) free(tmp); tmp = myStrGetTokenRemainder(key, '-', 1); /* Read TO out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } diff --git a/src/core/ns_list.c b/src/core/ns_list.c index 91cd2d356..d8a67a4eb 100644 --- a/src/core/ns_list.c +++ b/src/core/ns_list.c @@ -114,11 +114,13 @@ int do_list(User * u) if (pattern[0] == '#') { tmp = myStrGetOnlyToken((pattern + 1), '-', 0); /* Read FROM out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } @@ -126,11 +128,13 @@ int do_list(User * u) free(tmp); tmp = myStrGetTokenRemainder(pattern, '-', 1); /* Read TO out */ if (!tmp) { + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } for (s = tmp; *s; s++) { if (!isdigit(*s)) { free(tmp); + notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } |