summaryrefslogtreecommitdiff
path: root/include/mode.h
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-06 22:28:57 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-06 22:28:57 +0000
commit526f5a4a02882b19056fe755dff1f64b764ff313 (patch)
tree6a9e92e4f3f7088b18dcdde360d07c911ee174df /include/mode.h
parenteacd707421be4f2612df9bde4517649061bb062e (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.h14
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();