diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-03-06 22:28:57 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-03-06 22:28:57 +0000 |
commit | 526f5a4a02882b19056fe755dff1f64b764ff313 (patch) | |
tree | 6a9e92e4f3f7088b18dcdde360d07c911ee174df /include/mode.h | |
parent | eacd707421be4f2612df9bde4517649061bb062e (diff) |
Construct explicit parameter type list for MODE parameters
Previously, we used TR_SPACENICKLIST on the parameters. This worked only because
usually, if anything in the list parsed as a nick, then it was a nick. However,
some modes like +k and +g allow free-form text, which could also resolve as a
nick. Add extra parameters to allow modes to specify their TranslateType,
defaulting to TR_TEXT.
This fixes bug #757, found by Taros
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11180 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/mode.h')
-rw-r--r-- | include/mode.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/mode.h b/include/mode.h index f78fcda9c..525a26208 100644 --- a/include/mode.h +++ b/include/mode.h @@ -17,6 +17,7 @@ /* Forward declarations. */ class User; +#include "ctables.h" #include "channels.h" /** @@ -126,6 +127,10 @@ class CoreExport ModeHandler : public Extensible */ ModeType m_type; /** + * The mode parameter translation type + */ + TranslateType m_paramtype; + /** * True if the mode requires oper status * to set. */ @@ -161,7 +166,8 @@ class CoreExport ModeHandler : public Extensible * and the rank values OP_VALUE, HALFOP_VALUE and VOICE_VALUE respectively. Any prefixes you define should have unique values proportional * to these three defaults or proportional to another mode in a module you depend on. See src/cmode_o.cpp as an example. */ - ModeHandler(InspIRCd* Instance, char modeletter, int parameters_on, int parameters_off, bool listmode, ModeType type, bool operonly, char mprefix = 0, char prefixrequired = '%'); + ModeHandler(InspIRCd* Instance, char modeletter, int parameters_on, int parameters_off, bool listmode, ModeType type, bool operonly, + char mprefix = 0, char prefixrequired = '%', TranslateType translate = TR_TEXT); /** * The default destructor does nothing */ @@ -191,10 +197,14 @@ class CoreExport ModeHandler : public Extensible */ virtual unsigned int GetPrefixRank(); /** - * Returns the modes type + * Returns the mode's type */ ModeType GetModeType(); /** + * Returns the mode's parameter translation type + */ + TranslateType GetTranslateType(); + /** * Returns true if the mode can only be set/unset by an oper */ bool NeedsOper(); |