* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
#define CHANNEL_SUSPENDED 0x00000002 /* (1 << 1) */
#define CHANNEL_INFO_LINES 0x00000004 /* (1 << 2) - DEPRECATED */
#define CHANNEL_VOICE_ALL 0x00000008 /* (1 << 3) - DEPRECATED */
#define CHANNEL_SUSPENDED 0x00000002 /* (1 << 1) */
#define CHANNEL_INFO_LINES 0x00000004 /* (1 << 2) - DEPRECATED */
#define CHANNEL_VOICE_ALL 0x00000008 /* (1 << 3) - DEPRECATED */
/* No longer used. */ /* (1 << 4) */
#define CHANNEL_DYNAMIC_LIMIT 0x00000020 /* (1 << 5) */
#define CHANNEL_TOPIC_SNARF 0x00000040 /* (1 << 6) - DEPRECATED */
#define CHANNEL_PEON_INVITE 0x00000080 /* (1 << 7) - DEPRECATED */
#define CHANNEL_OFFCHANNEL 0x00000100 /* (1 << 8) */
/* No longer used. */ /* (1 << 4) */
#define CHANNEL_DYNAMIC_LIMIT 0x00000020 /* (1 << 5) */
#define CHANNEL_TOPIC_SNARF 0x00000040 /* (1 << 6) - DEPRECATED */
#define CHANNEL_PEON_INVITE 0x00000080 /* (1 << 7) - DEPRECATED */
#define CHANNEL_OFFCHANNEL 0x00000100 /* (1 << 8) */
/* Flags with values over 0x20000000 or (1 << 29) will not work
* because chanData.flags is a 30-bit field.
*/
/* Flags with values over 0x20000000 or (1 << 29) will not work
* because chanData.flags is a 30-bit field.
*/
#define IsProtected(x) ((x)->flags & CHANNEL_NODELETE)
#define IsSuspended(x) ((x)->flags & CHANNEL_SUSPENDED)
#define IsProtected(x) ((x)->flags & CHANNEL_NODELETE)
#define IsSuspended(x) ((x)->flags & CHANNEL_SUSPENDED)
unsigned short userCount;
unsigned short lvlOpts[NUM_LEVEL_OPTIONS];
unsigned char chOpts[NUM_CHAR_OPTIONS];
struct userData *users;
unsigned short userCount;
unsigned short lvlOpts[NUM_LEVEL_OPTIONS];
unsigned char chOpts[NUM_CHAR_OPTIONS];
struct userData *users;
#define IsUserSuspended(USER) ((USER)->flags & USER_SUSPENDED)
#define IsUserAutoInvite(USER) ((USER)->flags & USER_AUTO_INVITE)
#define IsUserSuspended(USER) ((USER)->flags & USER_SUSPENDED)
#define IsUserAutoInvite(USER) ((USER)->flags & USER_AUTO_INVITE)
struct do_not_register *chanserv_is_dnr(const char *chan_name, struct handle_info *handle);
int check_user_level(struct chanNode *channel, struct userNode *user, enum levelOption opt, int allow_override, int exempt_owner);
struct do_not_register *chanserv_is_dnr(const char *chan_name, struct handle_info *handle);
int check_user_level(struct chanNode *channel, struct userNode *user, enum levelOption opt, int allow_override, int exempt_owner);
+void do_math(char *Buffer, char *Math);
+char* user_level_name_from_level(int level);
+
+void process_adduser_pending(struct userNode *user);
+void wipe_adduser_pending(struct chanNode *channel, struct userNode *user);
+