diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-06-06 15:22:07 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-06-06 15:22:07 +0000 |
commit | a914ae91957f617af0a21bcdb024a16361ae3398 (patch) | |
tree | c2f9ebf285281c36477732e480e815821be45733 /src/modules/m_abbreviation.cpp | |
parent | 4e14ff66f1108dc8c596248ad368c20d14a79e03 (diff) |
Allow changing of command string and parameter vector within OnPreCommand, allowing for m_abbreviation and other fancy stuff.
Add basic skeleton module for it
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9840 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_abbreviation.cpp')
-rw-r--r-- | src/modules/m_abbreviation.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp new file mode 100644 index 000000000..fd6309e83 --- /dev/null +++ b/src/modules/m_abbreviation.cpp @@ -0,0 +1,50 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#include "inspircd.h" +#include "wildcard.h" + +/* $ModDesc: Provides the ability to abbreviate commands. */ + +class ModuleAbbreviation : public Module +{ + + public: + + ModuleAbbreviation(InspIRCd* Me) + : Module(Me) + { + Me->Modules->Attach(I_OnPreCommand, this); + /* Must do this first */ + Me->Modules->SetPriority(this, I_OnPreCommand, PRIO_FIRST); + } + + virtual Version GetVersion() + { + return Version(1,2,0,0,VF_VENDOR,API_VERSION); + } + + virtual int OnPreCommand(std::string &command, std::vector<std::string> ¶meters, User *user, bool validated, const std::string &original_line) + { + /* Command is already validated, has a length of 0, or last character is not a . */ + if (validated || command.empty() || *command.rbegin() != '.') + return 0; + + /* Whack the . off the end */ + command.erase(command.end() - 1); + + ServerInstance->Logs->Log("m_abbreviation", DEBUG, "Abbreviated command: %s", command.c_str()); + } +}; + +MODULE_INIT(ModuleAbbreviation) |