]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/mode.cpp
GCC doesn't like characters being used in array subscripts
[user/henk/code/inspircd.git] / src / mode.cpp
index 7aeaae1dcd933022ffa73eff4717842d12f2d24c..a632ab516916f02cf4b37d44a26c90ea64a388aa 100644 (file)
@@ -46,7 +46,7 @@
 #include "modes/umode_s.h"
 
 ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modeletter, ParamSpec Params, ModeType type)
-       : ServiceProvider(Creator, Name, type == MODETYPE_CHANNEL ? SERVICE_CMODE : SERVICE_UMODE), m_paramtype(TR_TEXT),
+       : ServiceProvider(Creator, Name, SERVICE_MODE), m_paramtype(TR_TEXT),
        parameters_taken(Params), mode(modeletter), prefix(0), oper(false),
        list(false), m_type(type), levelrequired(HALFOP_VALUE)
 {
@@ -644,6 +644,9 @@ bool ModeParser::AddMode(ModeHandler* mh)
        if ((mh->GetPrefix() == ',') || (mh->GetPrefix() == ':') || (mh->GetPrefix() == '#'))
                return false;
 
+       if (mh->GetPrefix() && FindPrefix(mh->GetPrefix()))
+               return false;
+
        mh->GetModeType() == MODETYPE_USER ? mask = MASK_USER : mask = MASK_CHANNEL;
        pos = (mh->GetModeChar()-65) | mask;