From d00914ed6f5de67ab69c69e1cd1efa0797b5f62d Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Sat, 1 Dec 2012 21:33:42 +0100 Subject: Add a flag to Command that controls whether an empty last parameter is allowed or not --- src/command_parse.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/command_parse.cpp') diff --git a/src/command_parse.cpp b/src/command_parse.cpp index f05ffcd90..0bf8e0e0a 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -148,6 +148,9 @@ CmdResult CommandParser::CallHandler(const std::string &commandname, const std:: if (n != cmdlist.end()) { + if ((!parameters.empty()) && (parameters.back().empty()) && (!n->second->allow_empty_last_param)) + return CMD_INVALID; + if (parameters.size() >= n->second->min_params) { bool bOkay = false; @@ -314,6 +317,10 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd) command.c_str(), user->nick.c_str(), user->ident.c_str(), user->host.c_str()); return do_more; } + + if ((!command_p.empty()) && (command_p.back().empty()) && (!cm->second->allow_empty_last_param)) + command_p.pop_back(); + if (command_p.size() < cm->second->min_params) { user->WriteNumeric(ERR_NEEDMOREPARAMS, "%s %s :Not enough parameters.", user->nick.c_str(), command.c_str()); -- cgit v1.2.3