summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-06-06 15:47:39 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-06-06 15:47:39 +0000
commit61185fc62b7d3d05e33a116fca26aa9dc72ab691 (patch)
treedc3a71b2d1fa70f91400fe6d5e680d3e12e8059b
parent8172d4afcf105b58a4b16735f5e6f8ccc5404dd5 (diff)
m_abbreviation completed. :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9845 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/command_parse.h2
-rw-r--r--include/ctables.h2
-rw-r--r--src/command_parse.cpp12
-rw-r--r--src/configreader.cpp4
-rw-r--r--src/modules/m_abbreviation.cpp16
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<std::string,Command*> Commandable;
+typedef nspace::hash_map<std::string,Command*> 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::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;
}
};