summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2009-02-12 00:00:50 +0000
committerrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2009-02-12 00:00:50 +0000
commit58b0279f7f2eda9154373af0a7d4b0cb73b1baf8 (patch)
treea5f69976639c3c7bfc24d282259c258c8ffa7cac /src
parenta512f7cdd7e5f9d2e408b77cc41b526a604d60f8 (diff)
Audit cs_kick, cs_list, cs_logout, cs_modes.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2020 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/core/cs_kick.c24
-rw-r--r--src/core/cs_list.c94
-rw-r--r--src/core/cs_logout.c2
-rw-r--r--src/core/cs_modes.c1
4 files changed, 66 insertions, 55 deletions
diff --git a/src/core/cs_kick.c b/src/core/cs_kick.c
index 9ba68cdcb..f2895d1aa 100644
--- a/src/core/cs_kick.c
+++ b/src/core/cs_kick.c
@@ -27,7 +27,7 @@ void myChanServHelp(User * u)
class CommandCSKick : public Command
{
public:
- CommandCSKick() : Command("KICK", 1, 3)
+ CommandCSKick() : Command("KICK", 2, 3)
{
}
@@ -36,8 +36,14 @@ class CommandCSKick : public Command
{
const char *chan = params[0].c_str();
const char *target = params[1].c_str();
- params[2].resize(200);
- const char *reason = params[2].c_str();
+ const char *reason = NULL;
+
+ if (params.size() > 2)
+ {
+ params[2].resize(200);
+ reason = params[2].c_str();
+ }
+
Channel *c;
ChannelInfo *ci;
User *u2;
@@ -48,10 +54,6 @@ class CommandCSKick : public Command
reason = "Requested";
}
- if (!target) {
- target = u->nick;
- }
-
is_same = (target == u->nick) ? 1 : (stricmp(target, u->nick) == 0);
if (!(c = findchan(chan))) {
@@ -92,9 +94,15 @@ class CommandCSKick : public Command
bool OnHelp(User *u, const std::string &subcommand)
{
- notice_lang(s_ChanServ, u, CHAN_HELP_KICK);
+ notice_lang(s_ChanServ, u, CHAN_HELP_KICK);
return true;
}
+
+ void OnSyntaxError(User *u)
+ {
+ // XXX: best I can do for now, fixme
+ notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, "");
+ }
};
class CSKick : public Module
diff --git a/src/core/cs_list.c b/src/core/cs_list.c
index 0b54f56f2..b91889be1 100644
--- a/src/core/cs_list.c
+++ b/src/core/cs_list.c
@@ -32,7 +32,9 @@ void myChanServHelp(User * u)
class CommandCSList : public Command
{
public:
- CommandCSList() : Command("LIST",1,2) { }
+ CommandCSList() : Command("LIST",1,2)
+ {
+ }
CommandReturn Execute(User *u, std::vector<std::string> &params)
{
@@ -114,63 +116,63 @@ public:
matchflags |= CI_NO_EXPIRE;
}
+ }
- spattern_size = (strlen(pattern) + 2) * sizeof(char);
- spattern = new char[spattern_size];
- snprintf(spattern, spattern_size, "#%s", pattern);
+ spattern_size = (strlen(pattern) + 2) * sizeof(char);
+ spattern = new char[spattern_size];
+ snprintf(spattern, spattern_size, "#%s", pattern);
- notice_lang(s_ChanServ, u, CHAN_LIST_HEADER, pattern);
- for (i = 0; i < 256; i++)
+ notice_lang(s_ChanServ, u, CHAN_LIST_HEADER, pattern);
+ for (i = 0; i < 256; i++)
+ {
+ for (ci = chanlists[i]; ci; ci = ci->next)
{
- for (ci = chanlists[i]; ci; ci = ci->next)
+ if (!is_servadmin && ((ci->flags & CI_PRIVATE)
+ || (ci->flags & CI_FORBIDDEN)))
+ continue;
+ if ((matchflags != 0) && !(ci->flags & matchflags))
+ continue;
+
+ if ((stricmp(pattern, ci->name) == 0)
+ || (stricmp(spattern, ci->name) == 0)
+ || match_wild_nocase(pattern, ci->name)
+ || match_wild_nocase(spattern, ci->name))
{
- if (!is_servadmin && ((ci->flags & CI_PRIVATE)
- || (ci->flags & CI_FORBIDDEN)))
- continue;
- if ((matchflags != 0) && !(ci->flags & matchflags))
- continue;
-
- 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))
{
- if ((((count + 1 >= from) && (count + 1 <= to))
- || ((from == 0) && (to == 0)))
- && (++nchans <= CSListMax))
+ char noexpire_char = ' ';
+ if (is_servadmin && (ci->flags & CI_NO_EXPIRE))
+ noexpire_char = '!';
+
+ if (ci->flags & CI_FORBIDDEN)
{
- char noexpire_char = ' ';
- if (is_servadmin && (ci->flags & CI_NO_EXPIRE))
- noexpire_char = '!';
-
- if (ci->flags & CI_FORBIDDEN)
- {
- snprintf(buf, sizeof(buf),
- "%-20s [Forbidden]", ci->name);
- }
- else if (ci->flags & CI_SUSPENDED)
- {
- snprintf(buf, sizeof(buf),
- "%-20s [Suspended]", ci->name);
- }
- else
- {
- snprintf(buf, sizeof(buf), "%-20s %s",
- ci->name, ci->desc ? ci->desc : "");
- }
-
- notice_user(s_ChanServ, u, " %c%s",
- noexpire_char, buf);
+ snprintf(buf, sizeof(buf),
+ "%-20s [Forbidden]", ci->name);
}
- count++;
+ else if (ci->flags & CI_SUSPENDED)
+ {
+ snprintf(buf, sizeof(buf),
+ "%-20s [Suspended]", ci->name);
+ }
+ else
+ {
+ snprintf(buf, sizeof(buf), "%-20s %s",
+ ci->name, ci->desc ? ci->desc : "");
+ }
+
+ notice_user(s_ChanServ, u, " %c%s",
+ noexpire_char, buf);
}
+ count++;
}
}
- notice_lang(s_ChanServ, u, CHAN_LIST_END,
- nchans > CSListMax ? CSListMax : nchans, nchans);
- delete [] spattern;
}
+ notice_lang(s_ChanServ, u, CHAN_LIST_END,
+ nchans > CSListMax ? CSListMax : nchans, nchans);
+ delete [] spattern;
if (tofree)
delete [] pattern;
return MOD_CONT;
diff --git a/src/core/cs_logout.c b/src/core/cs_logout.c
index 61bdb7ce8..670e65865 100644
--- a/src/core/cs_logout.c
+++ b/src/core/cs_logout.c
@@ -60,7 +60,7 @@ class CommandCSLogout : public Command
CommandReturn Execute(User *u, std::vector<std::string> &params)
{
const char *chan = params[0].c_str();
- const char *nick = params[1].c_str();
+ const char *nick = params.size() > 1 ? params[1].c_str() : NULL;
ChannelInfo *ci;
User *u2 = NULL;
int is_servadmin = is_services_admin(u);
diff --git a/src/core/cs_modes.c b/src/core/cs_modes.c
index dbc0bbb24..5654fe0af 100644
--- a/src/core/cs_modes.c
+++ b/src/core/cs_modes.c
@@ -116,6 +116,7 @@ static CommandReturn do_util(User *u, CSModeUtil *util, const char *chan, const
return MOD_CONT;
}
+// XXX: Future enhancement. Default these to the sender, with an optional target arg.
class CommandCSOp : public Command
{