diff options
| author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-11-11 23:43:02 +0000 |
|---|---|---|
| committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-11-11 23:43:02 +0000 |
| commit | d16f4930f462386a5ad5507e56c07ac6610ac2bb (patch) | |
| tree | 4ce544024c3d45ac66ebdbf638b27b5aaf43741b | |
| parent | 30b7e50a43a354e2eeeec66345b6469bd3424269 (diff) | |
Made Command::OnSyntaxError accept a subcommand parameter, we now give syntax error messages for subcommands (eg, cs_set) instead of giving the general syntax error for the main command
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2643 5417fbe8-f217-4b02-8779-1006273d7864
94 files changed, 276 insertions, 247 deletions
diff --git a/include/modules.h b/include/modules.h index 47e4483d1..8543b0199 100644 --- a/include/modules.h +++ b/include/modules.h @@ -260,8 +260,9 @@ class CoreExport Command : public Flags<CommandFlag> /** Requested when the user provides bad syntax to this command (not enough params, etc). * @param u The user executing the command. + * @param subcommand The subcommand the user tried to use */ - virtual void OnSyntaxError(User *u); + virtual void OnSyntaxError(User *u, const ci::string &subcommand); /** Set which command permission (e.g. chanserv/forbid) is required for this command. * @param reststr The permission required to successfully execute this command diff --git a/src/command.cpp b/src/command.cpp index 41e9045e5..89318776b 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -33,7 +33,7 @@ CommandReturn Command::Execute(User *u, std::vector<ci::string> &) { return MOD_ bool Command::OnHelp(User *u, const ci::string &subcommand) { return false; } -void Command::OnSyntaxError(User *u) { } +void Command::OnSyntaxError(User *u, const ci::string &subcommand) { } void Command::SetPermission(const std::string &reststr) { diff --git a/src/commands.c b/src/commands.c index d8fcf5589..0e548a22d 100644 --- a/src/commands.c +++ b/src/commands.c @@ -76,10 +76,6 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char * return; } } - else - { - // Check whether or not access string is empty - } std::vector<ci::string> params; std::string curparam; @@ -109,7 +105,7 @@ void mod_run_cmd(char *service, User * u, CommandHash * cmdTable[], const char * if (params.size() < c->MinParams) { - c->OnSyntaxError(u); + c->OnSyntaxError(u, params.size() > 1 ? params[1].c_str() : ""); return; } diff --git a/src/core/bs_act.c b/src/core/bs_act.c index 96d7e3c93..0fea7e929 100644 --- a/src/core/bs_act.c +++ b/src/core/bs_act.c @@ -55,7 +55,7 @@ class CommandBSAct : public Command return MOD_CONT; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "ACT", BOT_ACT_SYNTAX); } diff --git a/src/core/bs_assign.c b/src/core/bs_assign.c index d710cb11e..82542580e 100644 --- a/src/core/bs_assign.c +++ b/src/core/bs_assign.c @@ -72,7 +72,7 @@ class CommandBSAssign : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "ASSIGN", BOT_ASSIGN_SYNTAX); } diff --git a/src/core/bs_badwords.c b/src/core/bs_badwords.c index bef4a7dad..fc9c10bcd 100644 --- a/src/core/bs_badwords.c +++ b/src/core/bs_badwords.c @@ -244,7 +244,7 @@ class CommandBSBadwords : public Command if (need_args ? 0 : !word) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, cmd); return MOD_CONT; } @@ -271,7 +271,8 @@ class CommandBSBadwords : public Command else if (cmd == "CLEAR") return this->DoClear(u, ci, word); else - this->OnSyntaxError(u); + this->OnSyntaxError(u, ""); + return MOD_CONT; } @@ -281,7 +282,7 @@ class CommandBSBadwords : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "BADWORDS", BOT_BADWORDS_SYNTAX); } diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c index e6a6e59e8..955f4e42c 100644 --- a/src/core/bs_bot.c +++ b/src/core/bs_bot.c @@ -21,18 +21,12 @@ class CommandBSBot : public Command CommandReturn DoAdd(User *u, std::vector<ci::string> ¶ms) { const char *nick = params[1].c_str(); - const char *user = params.size() > 2 ? params[2].c_str() : NULL; - const char *host = params.size() > 3 ? params[3].c_str() : NULL; - const char *real = params.size() > 4 ? params[4].c_str() : NULL; + const char *user = params[2].c_str(); + const char *host = params[3].c_str(); + const char *real = params[4].c_str(); const char *ch = NULL; BotInfo *bi; - if (!nick || !user || !host || !real) - { - this->OnSyntaxError(u); - return MOD_CONT; - } - if (findbot(nick)) { notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick); @@ -135,7 +129,7 @@ class CommandBSBot : public Command if (!oldnick || !nick) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "CHANGE"); return MOD_CONT; } @@ -310,7 +304,7 @@ class CommandBSBot : public Command if (!nick) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "DEL"); return MOD_CONT; } @@ -362,7 +356,7 @@ class CommandBSBot : public Command if (params.size() < 5) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "ADD"); return MOD_CONT; } @@ -384,7 +378,7 @@ class CommandBSBot : public Command if (params.size() < 3) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "CHANGE"); return MOD_CONT; } @@ -401,14 +395,14 @@ class CommandBSBot : public Command if (params.size() < 1) { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "DEL"); return MOD_CONT; } return this->DoDel(u, params); } else - this->OnSyntaxError(u); + this->OnSyntaxError(u, ""); return MOD_CONT; } @@ -419,7 +413,7 @@ class CommandBSBot : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); } diff --git a/src/core/bs_help.c b/src/core/bs_help.c index ae0e73fdf..05fbc9f8d 100644 --- a/src/core/bs_help.c +++ b/src/core/bs_help.c @@ -30,7 +30,7 @@ class CommandBSHelp : public Command return MOD_CONT; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { // Abuse syntax error to display general list help. notice_help(s_BotServ, u, BOT_HELP); diff --git a/src/core/bs_info.c b/src/core/bs_info.c index eb438e572..86daebbd2 100644 --- a/src/core/bs_info.c +++ b/src/core/bs_info.c @@ -238,7 +238,7 @@ class CommandBSInfo : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "INFO", BOT_INFO_SYNTAX); } diff --git a/src/core/bs_kick.c b/src/core/bs_kick.c index c1294c9c2..7f9ee8b7b 100644 --- a/src/core/bs_kick.c +++ b/src/core/bs_kick.c @@ -342,7 +342,7 @@ class CommandBSKick : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "KICK", BOT_KICK_SYNTAX); } diff --git a/src/core/bs_say.c b/src/core/bs_say.c index f0f8c8454..2a1752c05 100644 --- a/src/core/bs_say.c +++ b/src/core/bs_say.c @@ -51,7 +51,7 @@ class CommandBSSay : public Command if (text[0] == '\001') { - this->OnSyntaxError(u); + this->OnSyntaxError(u, ""); return MOD_CONT; } @@ -68,7 +68,7 @@ class CommandBSSay : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "SAY", BOT_SAY_SYNTAX); } diff --git a/src/core/bs_set.c b/src/core/bs_set.c index ec569c205..34dbda165 100644 --- a/src/core/bs_set.c +++ b/src/core/bs_set.c @@ -173,7 +173,7 @@ class CommandBSSet : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "SET", BOT_SET_SYNTAX); } diff --git a/src/core/bs_unassign.c b/src/core/bs_unassign.c index 25a5c2ada..605bc3c37 100644 --- a/src/core/bs_unassign.c +++ b/src/core/bs_unassign.c @@ -50,7 +50,7 @@ class CommandBSUnassign : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_BotServ, u, "UNASSIGN", BOT_UNASSIGN_SYNTAX); } diff --git a/src/core/cs_access.c b/src/core/cs_access.c index b8792bfca..62ac477a2 100644 --- a/src/core/cs_access.c +++ b/src/core/cs_access.c @@ -153,7 +153,7 @@ class CommandCSAccess : public Command * If DEL, we require a nick and no level. * Else (ADD), we require a level (which implies a nick). */ if (is_list || cmd == "CLEAR" ? 0 : (cmd == "DEL" ? (!nick || s) : !s)) - this->OnSyntaxError(u); + this->OnSyntaxError(u, cmd); /* We still allow LIST in xOP mode, but not others */ else if ((ci->HasFlag(CI_XOP)) && !is_list) { @@ -404,7 +404,7 @@ class CommandCSAccess : public Command } else - this->OnSyntaxError(u); + this->OnSyntaxError(u, ""); return MOD_CONT; } @@ -415,7 +415,7 @@ class CommandCSAccess : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_ChanServ, u, "ACCESS", CHAN_ACCESS_SYNTAX); } @@ -445,7 +445,7 @@ class CommandCSLevels : public Command * one; else, we want none. */ if (cmd == "SET" ? !s : (cmd.substr(0, 3) == "DIS" ? (!what || s) : !!what)) - this->OnSyntaxError(u); + this->OnSyntaxError(u, cmd); else if (ci->HasFlag(CI_XOP)) notice_lang(s_ChanServ, u, CHAN_LEVELS_XOP); else if (!IsFounder(u, ci) && !u->nc->HasPriv("chanserv/access/modify")) @@ -454,7 +454,7 @@ class CommandCSLevels : public Command level = strtol(s, &error, 10); if (*error != '\0') { - this->OnSyntaxError(u); + this->OnSyntaxError(u, "SET"); return MOD_CONT; } @@ -535,7 +535,7 @@ class CommandCSLevels : public Command s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, ci->name); notice_lang(s_ChanServ, u, CHAN_LEVELS_RESET, chan); } else { - this->OnSyntaxError(u); + this->OnSyntaxError(u, ""); } return MOD_CONT; } @@ -546,7 +546,7 @@ class CommandCSLevels : public Command return true; } - void OnSyntaxError(User *u) + void OnSyntaxError(User *u, const ci::string &subcommand) { syntax_error(s_ChanServ, u, "LEVELS", CHAN_LEVELS_SYNTAX); } diff --git a/src/core/cs_akick.c b/src/core/cs_akick.c index c0f3fc12c..8d2faffa5 100644 --- a/src/core/cs_akick.c +++ b/src/core/cs_akick.c @@ -534,7 +534,7 @@ class CommandCSAKick : public Command ChannelInfo *ci = cs_findchan(chan.c_str()); if (mask.empty() && (cmd == "ADD" || cmd == "STICK" || cmd == "UNSTICK" || cmd == "DEL")) - this->OnSyntaxError(u); + this->OnSyntaxError(u, cmd); |
