X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fchannels.h;h=bf06e760a98ab0445771b87bd4044eec0af8a361;hb=b3e3b1f14e12b4b0a395ef8e2a4848f132e2c22b;hp=268adf47b1f642f0bc25c84a2f0456f39c05d77f;hpb=488cea15e8de7f1afa779728aa4af2efd548d268;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/channels.h b/include/channels.h index 268adf47b..bf06e760a 100644 --- a/include/channels.h +++ b/include/channels.h @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * InspIRCd: (C) 2002-2008 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -14,13 +14,6 @@ #ifndef __CHANNELS_H__ #define __CHANNELS_H__ -#include "inspircd_config.h" -#include "base.h" -#include -#include -#include -#include - /** RFC1459 channel modes */ enum ChannelModes { @@ -36,7 +29,6 @@ enum ChannelModes { /* Forward declarations - needed */ class User; -class Channel; /** Holds an entry for a ban list, exemption list, or invite list. * This class contains a single element in a channel list, such as a banlist. @@ -49,10 +41,10 @@ class HostItem : public classbase time_t set_time; /** Who added the item */ - char set_by[NICKMAX]; + std::string set_by; /** The actual item data */ - char data[MAXBUF]; + std::string data; HostItem() { /* stub */ } virtual ~HostItem() { /* stub */ } @@ -142,7 +134,7 @@ class CoreExport Channel : public Extensible /** The channel's name. */ - char name[CHANMAX]; + std::string name; /* CHANMAX */ /** Modes for the channel. * This is not a null terminated string! It is a hash where @@ -150,7 +142,7 @@ class CoreExport Channel : public Extensible * for mode +A, index 0. Use modechar-65 to calculate which * field to check. */ - char modes[64]; + unsigned char modes[64]; /** User lists. * There are four user lists, one for @@ -188,7 +180,7 @@ class CoreExport Channel : public Extensible /** Channel topic. * If this is an empty string, no channel topic is set. */ - char topic[MAXTOPIC]; + std::string topic; /* MAXTOPIC */ /** Creation time. * This is a timestamp (TS) value. @@ -203,7 +195,7 @@ class CoreExport Channel : public Extensible /** The last user to set the topic. * If this member is an empty string, no topic was ever set. */ - char setby[128]; + std::string setby; /* 128 */ /** Contains the channel user limit. * If this value is zero, there is no limit in place. @@ -213,7 +205,7 @@ class CoreExport Channel : public Extensible /** Contains the channel key. * If this value is an empty string, there is no channel key in place. */ - char key[32]; + std::string key; /* 32 */ /** The list of all bans set on the channel. */ @@ -352,7 +344,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); + long ServerKickUser(User* user, const char* reason, bool triggerevents, 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. @@ -379,7 +371,7 @@ class CoreExport Channel : public Extensible * @param text A printf-style format string which builds the output line without prefix * @param ... Zero or more POD types */ - void WriteChannel(User* user, char* text, ...); + void WriteChannel(User* user, const char* text, ...) CUSTOM_PRINTF(3, 4); /** Write to a channel, from a user, using std::string for text * @param user User whos details to prefix the line with @@ -392,7 +384,7 @@ class CoreExport Channel : public Extensible * @param text A printf-style format string which builds the output line without prefix * @param ... Zero or more POD type */ - void WriteChannelWithServ(const char* ServName, const char* text, ...); + void WriteChannelWithServ(const char* ServName, const char* text, ...) CUSTOM_PRINTF(3, 4); /** Write to a channel, from a server, using std::string for text * @param ServName Server name to prefix the line with @@ -409,7 +401,7 @@ class CoreExport Channel : public Extensible * @param text A printf-style format string which builds the output line without prefix * @param ... Zero or more POD type */ - void WriteAllExceptSender(User* user, bool serversource, char status, char* text, ...); + void WriteAllExceptSender(User* user, bool serversource, char status, const char* text, ...) CUSTOM_PRINTF(5, 6); /** Write to all users on a channel except a list of users, using va_args for text * @param user User whos details to prefix the line with, and to omit from receipt of the message @@ -420,7 +412,7 @@ class CoreExport Channel : public Extensible * @param text A printf-style format string which builds the output line without prefix * @param ... Zero or more POD type */ - void WriteAllExcept(User* user, bool serversource, char status, CUList &except_list, char* text, ...); + void WriteAllExcept(User* user, bool serversource, char status, CUList &except_list, const char* text, ...) CUSTOM_PRINTF(6, 7); /** Write to all users on a channel except a specific user, using std::string for text. * Internally, this calls WriteAllExcept(). @@ -536,6 +528,13 @@ class CoreExport Channel : public Extensible */ bool IsBanned(User* user); + /** Check whether an extban of a given type matches + * a given user for this channel. + * @param u The user to match bans against + * @param type The type of extban to check + */ + bool IsExtBanned(User *u, char type); + /** Clears the cached max bans value */ void ResetMaxBans();