From 61185fc62b7d3d05e33a116fca26aa9dc72ab691 Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 6 Jun 2008 15:47:39 +0000 Subject: m_abbreviation completed. :) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9845 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/command_parse.h | 2 +- include/ctables.h | 2 +- src/command_parse.cpp | 12 ++++++------ src/configreader.cpp | 4 ++-- src/modules/m_abbreviation.cpp | 16 ++++++++++++++++ 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/include/command_parse.h b/include/command_parse.h index be980a4cb..b34c3cb7f 100644 --- a/include/command_parse.h +++ b/include/command_parse.h @@ -74,7 +74,7 @@ class CoreExport CommandParser : public classbase public: /** Command list, a hash_map of command names to Command* */ - Commandable cmdlist; + Commandtable cmdlist; /** Reload a core command. * This will only reload commands implemented by the core, diff --git a/include/ctables.h b/include/ctables.h index d9f660f71..ad2135b1e 100644 --- a/include/ctables.h +++ b/include/ctables.h @@ -173,7 +173,7 @@ class CoreExport Command : public Extensible /** A hash of commands used by the core */ -typedef nspace::hash_map Commandable; +typedef nspace::hash_map Commandtable; #define TRANSLATE1(x1) translation.push_back(x1); #define TRANSLATE2(x1,x2) translation.push_back(x1);translation.push_back(x2); 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::vectorsecond; @@ -183,7 +183,7 @@ Command* CommandParser::GetHandler(const std::string &commandname) CmdResult CommandParser::CallHandler(const std::string &commandname, const std::vector& 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; } }; -- cgit v1.2.3