]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/channels.h
Don't globally route SETNAME, the FNAME is sufficient. Fixes bug #875
[user/henk/code/inspircd.git] / include / channels.h
index 3ce349990ccc1344390dd3ff02cde9a4f116ae24..1b6e9a8757ac6d1f80d30ea23d67bf38c80be975 100644 (file)
@@ -3,7 +3,7 @@
  *       +------------------------------------+
  *
  *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
@@ -74,7 +74,7 @@ typedef CUList::const_iterator CUListConstIter;
 
 /** A list of custom modes parameters on a channel
  */
-typedef std::map<char,char*> CustomModeList;
+typedef std::map<char,std::string> CustomModeList;
 
 
 /** used to hold a channel and a users modes on that channel, e.g. +v, +h, +o
@@ -202,12 +202,12 @@ class CoreExport Channel : public Extensible
         */
        void SetMode(char mode,bool mode_on);
 
-       /** Sets or unsets the parameters for a custom mode in a channels info
+       /** Sets or unsets a custom mode in the channels info
         * @param mode The mode character to set or unset
-        * @param parameter The parameter string to associate with this mode character
-        * @param mode_on True if you want to set the mode or false if you want to remove it
+        * @param parameter The parameter string to associate with this mode character.
+        * If it is empty, the mode is unset; if it is nonempty, the mode is set.
         */
-       void SetModeParam(char mode,const char* parameter,bool mode_on);
+       void SetModeParam(char mode, std::string parameter);
 
        /** Returns true if a mode is set on a channel
          * @param mode The mode character you wish to query
@@ -336,7 +336,7 @@ class CoreExport Channel : public Extensible
         * @return The number of users left on the channel. If this is zero
         * when the method returns, you MUST delete the Channel immediately!
         */
-       long ServerKickUser(User* user, const char* reason, bool triggerevents, const char* servername = NULL);
+       long ServerKickUser(User* user, const char* reason, const char* servername = NULL);
 
        /** Part a user from this channel with the given reason.
         * If the reason field is NULL, no reason will be sent.
@@ -524,12 +524,14 @@ class CoreExport Channel : public Extensible
         * a given user for this channel.
         * @param u The user to match bans against
         * @param type The type of extban to check
+        * @returns 1 = exempt, 0 = no match, -1 = banned
         */
-       bool IsExtBanned(User *u, char type);
+       int GetExtBanStatus(User *u, char type);
 
        /** Overloaded version to check whether a particular string is extbanned
+        * @returns 1 = exempt, 0 = no match, -1 = banned
         */
-       bool IsExtBanned(const std::string &str, char type);
+       int GetExtBanStatus(const std::string &str, char type);
 
        /** Clears the cached max bans value
         */
@@ -540,4 +542,18 @@ class CoreExport Channel : public Extensible
        virtual ~Channel() { /* stub */ }
 };
 
+static inline int banmatch_reduce(int v1, int v2)
+{
+       int a1 = abs(v1);
+       int a2 = abs(v2);
+       if (a1 > a2)
+               return v1;
+       else if (a2 > a1)
+               return v2;
+       else if (v1 > v2)
+               return v1;
+       // otherwise v2 > v1 or equal
+       return v2;
+}
+
 #endif