summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgeniusdex 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
committergeniusdex 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
commit2c390a19295d497256d49620fe7537503d320828 (patch)
treef3b8886b9a67749d5ed77d13d5fa0bf77726ab9a /src
parentba36a782319f4e22d32dabe82c3087bee39e4a7e (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.c21
-rw-r--r--src/core/hs_list.c4
-rw-r--r--src/core/ns_list.c4
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;
}
}