summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorom <om@e03df62e-2008-0410-955e-edbf42e46eb7>2006-01-25 20:24:46 +0000
committerom <om@e03df62e-2008-0410-955e-edbf42e46eb7>2006-01-25 20:24:46 +0000
commit72943b2c720c1d94b145b4fa61bfb89d65d4ef9c (patch)
tree3ce7e72caf2b5c8a4ff7d8f9d58fa865f3439fd6
parent5938aba62fa74ebf04d07abbd49cb813e6dbf026 (diff)
Add InsertMode function to helperfuncs.(cpp|h) for easily adding modes to the CHANMODES section of the 005 numeric
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2897 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/helperfuncs.h2
-rw-r--r--src/helperfuncs.cpp23
-rw-r--r--src/modules/m_sslmodes.cpp2
3 files changed, 26 insertions, 1 deletions
diff --git a/include/helperfuncs.h b/include/helperfuncs.h
index d2fa40e20..ddfdf2826 100644
--- a/include/helperfuncs.h
+++ b/include/helperfuncs.h
@@ -84,4 +84,6 @@ bool AllModulesReportReady(userrec* user);
bool DirValid(char* dirandfile);
std::string GetFullProgDir(char** argv, int argc);
+int InsertMode(std::string &output, const char* modes, unsigned short section);
+
#endif
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 767cb7caa..2923041fc 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -1373,3 +1373,26 @@ std::string GetFullProgDir(char** argv, int argc)
return otherdir;
}
+int InsertMode(std::string &output, const char* mode, unsigned short section)
+{
+ unsigned short currsection = 1;
+ unsigned int pos = output.find("CHANMODES=", 0) + 10; // +10 for the length of "CHANMODES="
+
+ if(section > 4 || section == 0)
+ {
+ log(DEBUG, "InsertMode: CHANMODES doesn't have a section %dh :/", section);
+ return 0;
+ }
+
+ for(; pos < output.size(); pos++)
+ {
+ if(section == currsection)
+ break;
+
+ if(output[pos] == ',')
+ currsection++;
+ }
+
+ output.insert(pos, mode);
+ return 1;
+}
diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp
index 1a7f0670b..3ed40108d 100644
--- a/src/modules/m_sslmodes.cpp
+++ b/src/modules/m_sslmodes.cpp
@@ -24,7 +24,7 @@ class ModuleSSLModes : public Module
virtual void On005Numeric(std::string &output)
{
- output.insert(output.find(" ", output.find("CHANMODES=", 0)), "z");
+ InsertMode(output, "z", 4);
}
virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname)