]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/command_parse.cpp
m_spanningtree Remove unneeded #includes
[user/henk/code/inspircd.git] / src / command_parse.cpp
index f05ffcd90425771bdec232dc1fd531dd27a12931..a7fd810a320fdd28d90a6c157bc3726e0bb9f2a6 100644 (file)
@@ -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;
@@ -297,7 +300,7 @@ bool CommandParser::ProcessCommand(LocalUser *user, std::string &cmd)
                        return do_more;
                }
        }
-       if ((user->registered == REG_ALL) && (!IS_OPER(user)) && (cm->second->IsDisabled()))
+       if ((user->registered == REG_ALL) && (!user->IsOper()) && (cm->second->IsDisabled()))
        {
                /* command is disabled! */
                if (ServerInstance->Config->DisabledDontExist)
@@ -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());
@@ -364,7 +371,7 @@ bool CommandParser::ProcessBuffer(std::string &buffer,LocalUser *user)
        if (!user || buffer.empty())
                return true;
 
-       ServerInstance->Logs->Log("USERINPUT", RAWIO, "C[%s] I :%s %s",
+       ServerInstance->Logs->Log("USERINPUT", LOG_RAWIO, "C[%s] I :%s %s",
                user->uuid.c_str(), user->nick.c_str(), buffer.c_str());
        return ProcessCommand(user,buffer);
 }