diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command_parse.cpp | 12 | ||||
-rw-r--r-- | src/configreader.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_abbreviation.cpp | 16 |
3 files changed, 24 insertions, 8 deletions
diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 0b2ea69c9..5b8b5b7f9 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -148,7 +148,7 @@ int CommandParser::LoopCall(User* user, Command* CommandObj, const std::vector<s bool CommandParser::IsValidCommand(const std::string &commandname, unsigned int pcnt, User * user) { - Commandable::iterator n = cmdlist.find(commandname); + Commandtable::iterator n = cmdlist.find(commandname); if (n != cmdlist.end()) { @@ -172,7 +172,7 @@ bool CommandParser::IsValidCommand(const std::string &commandname, unsigned int Command* CommandParser::GetHandler(const std::string &commandname) { - Commandable::iterator n = cmdlist.find(commandname); + Commandtable::iterator n = cmdlist.find(commandname); if (n != cmdlist.end()) return n->second; @@ -183,7 +183,7 @@ Command* CommandParser::GetHandler(const std::string &commandname) CmdResult CommandParser::CallHandler(const std::string &commandname, const std::vector<std::string>& parameters, User *user) { - Commandable::iterator n = cmdlist.find(commandname); + Commandtable::iterator n = cmdlist.find(commandname); if (n != cmdlist.end()) { @@ -285,7 +285,7 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd) } /* find the command, check it exists */ - Commandable::iterator cm = cmdlist.find(command); + Commandtable::iterator cm = cmdlist.find(command); if (cm == cmdlist.end()) { @@ -368,7 +368,7 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd) void CommandParser::RemoveCommands(const char* source) { - Commandable::iterator i,safei; + Commandtable::iterator i,safei; for (i = cmdlist.begin(); i != cmdlist.end();) { safei = i; @@ -377,7 +377,7 @@ void CommandParser::RemoveCommands(const char* source) } } -void CommandParser::RemoveCommand(Commandable::iterator safei, const char* source) +void CommandParser::RemoveCommand(Commandtable::iterator safei, const char* source) { Command* x = safei->second; if (x->source == std::string(source)) diff --git a/src/configreader.cpp b/src/configreader.cpp index 2320496c8..f8f17038b 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -281,13 +281,13 @@ bool InitializeDisabledCommands(const char* data, InspIRCd* ServerInstance) std::string thiscmd; /* Enable everything first */ - for (Commandable::iterator x = ServerInstance->Parser->cmdlist.begin(); x != ServerInstance->Parser->cmdlist.end(); x++) + for (Commandtable::iterator x = ServerInstance->Parser->cmdlist.begin(); x != ServerInstance->Parser->cmdlist.end(); x++) x->second->Disable(false); /* Now disable all the ones which the user wants disabled */ while (dcmds >> thiscmd) { - Commandable::iterator cm = ServerInstance->Parser->cmdlist.find(thiscmd); + Commandtable::iterator cm = ServerInstance->Parser->cmdlist.find(thiscmd); if (cm != ServerInstance->Parser->cmdlist.end()) { cm->second->Disable(true); diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp index bc04cc307..35a6082d9 100644 --- a/src/modules/m_abbreviation.cpp +++ b/src/modules/m_abbreviation.cpp @@ -45,6 +45,22 @@ class ModuleAbbreviation : public Module ServerInstance->Logs->Log("m_abbreviation", DEBUG, "Abbreviated command: %s", command.c_str()); + size_t clen = command.length(); + for (Commandtable::iterator n = ServerInstance->Parser->cmdlist.begin(); n != ServerInstance->Parser->cmdlist.end(); ++n) + { + if (n->first.length() < clen) + continue; + + ServerInstance->Logs->Log("m_abbreviation", DEBUG, "command=%s abbr=%s", command.c_str(), n->first.substr(0, clen).c_str()); + if (command == n->first.substr(0, clen)) + { + /* Found the command */ + command = n->first; + return false; + } + } + + command += '.'; return false; } }; |