diff options
author | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-02-12 00:00:50 +0000 |
---|---|---|
committer | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-02-12 00:00:50 +0000 |
commit | 58b0279f7f2eda9154373af0a7d4b0cb73b1baf8 (patch) | |
tree | a5f69976639c3c7bfc24d282259c258c8ffa7cac /src | |
parent | a512f7cdd7e5f9d2e408b77cc41b526a604d60f8 (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.c | 24 | ||||
-rw-r--r-- | src/core/cs_list.c | 94 | ||||
-rw-r--r-- | src/core/cs_logout.c | 2 | ||||
-rw-r--r-- | src/core/cs_modes.c | 1 |
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> ¶ms) { @@ -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> ¶ms) { 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 { |