summaryrefslogtreecommitdiff
path: root/src/command_parse.cpp
diff options
context:
space:
mode:
authorattilamolnar <attilamolnar@hush.com>2012-12-01 21:33:42 +0100
committerattilamolnar <attilamolnar@hush.com>2012-12-15 21:17:06 +0100
commitd00914ed6f5de67ab69c69e1cd1efa0797b5f62d (patch)
treed0102cfb6ced04e2eac3d291297a2529fa848383 /src/command_parse.cpp
parentab65f7902f9e4aeda68e9797f1904f02d1f9fc35 (diff)
Add a flag to Command that controls whether an empty last parameter is allowed or not
Diffstat (limited to 'src/command_parse.cpp')
-rw-r--r--src/command_parse.cpp7
1 files changed, 7 insertions, 0 deletions
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());