]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Added bool IsValidChannelName(const char *) - it doesn't seem to blow things up...
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 13 Feb 2006 01:01:43 +0000 (01:01 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 13 Feb 2006 01:01:43 +0000 (01:01 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3182 e03df62e-2008-0410-955e-edbf42e46eb7

include/helperfuncs.h
src/helperfuncs.cpp

index 1641575a660db90c0fc265fd3508e24853cf8db2..70cc06da2291fd5e95849c91a6384236c671ee7b 100644 (file)
@@ -83,7 +83,7 @@ void ShowRULES(userrec *user);
 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);
+bool IsValidChannelName(const char *);
 
 #endif
index e3e3db023b5919ad3ad1de6f1c56286e6bb7b6cf..fc4ec970f69f59285f6073579b706b8ae7453777 100644 (file)
@@ -1465,3 +1465,36 @@ int InsertMode(std::string &output, const char* mode, unsigned short section)
        output.insert(pos, mode);
        return 1;
 }
+
+bool IsValidChannelName(const char *chname)
+{
+               char *c;
+
+               /* check for no name - don't check for !*chname, as if it is empty, it won't be '#'! */
+               if (!chname || *chname != '#')
+               {
+                               return false;
+               }
+
+               c = (char *)chname + 1;
+               while (*c)
+               {
+                               switch (*c)
+                               {
+                                               case ' ':
+                                               case ',':
+                                               case 7:
+                                                               return false;
+                               }
+
+                               c++;
+               }
+               
+               /* too long a name - note funky pointer arithmetic here. */
+               if ((c - chname) > CHANMAX)
+               {
+                               return false;
+               }
+
+               return true;
+}