struct SLink;
struct Client;
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef unsigned __int64 ulong64;
+typedef signed __int64 long64;
+#else
+typedef unsigned long long ulong64;
+typedef signed long long long64;
+#endif
+
/*
* General defines
*/
/* Channel Visibility macros */
-#define MODE_CHANOP CHFL_CHANOP /**< +o Chanop */
-#define MODE_VOICE CHFL_VOICE /**< +v Voice */
-#define MODE_PRIVATE 0x0004 /**< +p Private */
-#define MODE_SECRET 0x0008 /**< +s Secret */
-#define MODE_MODERATED 0x0010 /**< +m Moderated */
-#define MODE_TOPICLIMIT 0x0020 /**< +t Topic Limited */
-#define MODE_INVITEONLY 0x0040 /**< +i Invite only */
-#define MODE_NOPRIVMSGS 0x0080 /**< +n No Private Messages */
-#define MODE_KEY 0x0100 /**< +k Keyed */
-#define MODE_BAN 0x0200 /**< +b Ban */
-#define MODE_LIMIT 0x0400 /**< +l Limit */
-#define MODE_REGONLY 0x0800 /**< Only +r users may join */
-#define MODE_DELJOINS 0x1000 /**< New join messages are delayed */
-#define MODE_REGISTERED 0x2000 /**< Channel marked as registered
- * (for future semantic expansion) */
-#define MODE_PERSIST 0x4000 /**< +z persistant channel */
-#define MODE_NOCOLOUR 0x8000 /**< no ANSI color codes */
-#define MODE_NOCTCP 0x10000 /**< no channel CTCPs */
-#define MODE_SAVE 0x20000 /**< save this mode-with-arg 'til
- * later */
-#define MODE_FREE 0x40000 /**< string needs to be passed to
- * MyFree() */
-#define MODE_BURSTADDED 0x80000 /**< channel was created by a BURST */
-#define MODE_UPASS 0x100000
-#define MODE_APASS 0x200000
-#define MODE_WASDELJOINS 0x400000 /**< Not DELJOINS, but some joins
- * pending */
-#define MODE_EXCEPTION 0x800000 /**< ban exceptions */
-#define MODE_NOAMSGS 0x1000000 /**< No multi target messages */
-#define MODE_NONOTICE 0x2000000 /**< No channel notices */
-#define MODE_QUARANTINE 0x4000000 /**< No channel notices */
-#define MODE_ALTCHAN 0x8000000 /**< Alternative channel */
-#define MODE_ACCESS 0x10000000 /**< ChanServ access */
+#define MODE_NULL 0
+#define MODE_CHANOP CHFL_CHANOP /**< +o Chanop */
+#define MODE_VOICE CHFL_VOICE /**< +v Voice */
+#define MODE_PRIVATE 0x00004 /**< +p Private */
+#define MODE_SECRET 0x00008 /**< +s Secret */
+#define MODE_MODERATED 0x00010 /**< +m Moderated */
+#define MODE_TOPICLIMIT 0x00020 /**< +t Topic Limited */
+#define MODE_INVITEONLY 0x00040 /**< +i Invite only */
+#define MODE_NOPRIVMSGS 0x00080 /**< +n No Private Messages */
+#define MODE_KEY 0x00100 /**< +k Keyed */
+#define MODE_BAN 0x00200 /**< +b Ban */
+#define MODE_LIMIT 0x00400 /**< +l Limit */
+#define MODE_REGONLY 0x00800 /**< Only +r users may join */
+#define MODE_DELJOINS 0x01000 /**< New join messages are delayed */
+#define MODE_REGISTERED 0x02000 /**< Channel marked as registered (for future semantic expansion) */
+#define MODE_PERSIST 0x04000 /**< +z persistant channel */
+#define MODE_NOCOLOUR 0x08000 /**< no ANSI color codes */
+#define MODE_NOCTCP 0x10000 /**< no channel CTCPs */
+#define MODE_SAVE 0x20000 /**< save this mode-with-arg 'til later */
+#define MODE_FREE 0x40000 /**< string needs to be passed to MyFree() */
+#define MODE_BURSTADDED 0x80000 /**< channel was created by a BURST */
+#define MODE_UPASS 0x100000
+#define MODE_APASS 0x200000
+#define MODE_WASDELJOINS 0x400000 /**< Not DELJOINS, but some joins pending */
+#define MODE_EXCEPTION 0x800000 /**< ban exceptions */
+#define MODE_NOAMSGS 0x1000000 /**< No multi target messages */
+#define MODE_NONOTICE 0x2000000 /**< No channel notices */
+#define MODE_QUARANTINE 0x4000000 /**< No channel notices */
+#define MODE_ALTCHAN 0x8000000 /**< Alternative channel */
+#define MODE_DEL 0x20000000
+#define MODE_ADD 0x40000000
+#define MODE_ACCESS 0x100000000LLU /**< ChanServ access */
+#define MODE_AUDITORIUM 0x200000000LLU /**< +u Auditorium */
/** mode flags which take another parameter (With PARAmeterS)
*/
#define MODE_WPARAS (MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS|MODE_EXCEPTION|MODE_ALTCHAN|MODE_ACCESS)
/** Available Channel modes */
-#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbiklmMnNopstUvrDRzQ" : "cCbiklmMnNopstvrDRzQ"
+#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbiklmMnNopstuUvrDRzQu" : "cCbiklmMnNopstuvrDRzQu"
/** Available Channel modes that take parameters */
#define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbkloUvFa" : "bklovFa"
CGT_CREATE
} ChannelGetType;
-/* used in SetMode() in channel.c and m_umode() in s_msg.c */
-
-#define MODE_NULL 0
-#define MODE_ADD 0x40000000
-#define MODE_DEL 0x20000000
-
/* used in ListingArgs.flags */
#define LISTARG_TOPICLIMITS 0x0001
/** Mode information for a channel */
struct Mode {
- unsigned int mode;
+ ulong64 mode;
unsigned int limit;
unsigned int access;
char key[KEYLEN + 1];
};
struct ModeBuf {
- unsigned int mb_add; /**< Modes to add */
- unsigned int mb_rem; /**< Modes to remove */
+ ulong64 mb_add; /**< Modes to add */
+ ulong64 mb_rem; /**< Modes to remove */
struct Client *mb_source; /**< Source of MODE changes */
struct Client *mb_connect; /**< Connection of MODE changes */
struct Channel *mb_channel; /**< Channel they affect */
unsigned int mb_dest; /**< Destination of MODE changes */
unsigned int mb_count; /**< Number of modes w/args */
struct {
- unsigned int mbm_type; /**< Type of argument */
+ ulong64 mbm_type; /**< Type of argument */
union {
unsigned int mbma_uint; /**< A limit */
char *mbma_string; /**< A string */
extern void RevealDelayedJoinIfNeeded(struct Client *sptr, struct Channel *chptr);
extern void RevealDelayedJoin(struct Membership *member);
extern void CheckDelayedJoins(struct Channel *chan);
+extern void CheckEnableDelayedJoins(struct Channel *chan);
extern void modebuf_init(struct ModeBuf *mbuf, struct Client *source,
struct Client *connect, struct Channel *chan,
unsigned int dest);
-extern void modebuf_mode(struct ModeBuf *mbuf, unsigned int mode);
-extern void modebuf_mode_uint(struct ModeBuf *mbuf, unsigned int mode,
+extern void modebuf_mode(struct ModeBuf *mbuf, ulong64 mode);
+extern void modebuf_mode_uint(struct ModeBuf *mbuf, ulong64 mode,
unsigned int uint);
-extern void modebuf_mode_string(struct ModeBuf *mbuf, unsigned int mode,
+extern void modebuf_mode_string(struct ModeBuf *mbuf, ulong64 mode,
char *string, int free);
-extern void modebuf_mode_client(struct ModeBuf *mbuf, unsigned int mode,
+extern void modebuf_mode_client(struct ModeBuf *mbuf, ulong64 mode,
struct Client *client, int oplevel);
extern int modebuf_flush(struct ModeBuf *mbuf);
extern void modebuf_extract(struct ModeBuf *mbuf, char *buf);