449 lines
10 KiB
C
449 lines
10 KiB
C
/*
|
|
* cset.h: header for cset.c
|
|
*/
|
|
#ifndef CSET_H_
|
|
#define CSET_H_
|
|
|
|
#include "struct.h"
|
|
/* This ensures we always have the offsetof() macro */
|
|
#ifndef offsetof
|
|
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
|
#endif
|
|
|
|
/* the types of IrcVariables (repeated in vars.h) */
|
|
#define BOOL_TYPE_VAR 0
|
|
#define CHAR_TYPE_VAR 1
|
|
#define INT_TYPE_VAR 2
|
|
#define STR_TYPE_VAR 3
|
|
|
|
/* var_settings indexes ... also used in display.c for highlights */
|
|
#define OFF 0
|
|
#define ON 1
|
|
#define TOGGLE 2
|
|
|
|
enum CSET_TYPES
|
|
{
|
|
AINV_CSET,
|
|
ANNOY_KICK_CSET,
|
|
AOP_CSET,
|
|
AUTO_JOIN_ON_INVITE_CSET,
|
|
AUTO_LIMIT_CSET,
|
|
AUTO_REJOIN_CSET,
|
|
BANTIME_CSET,
|
|
BITCH_CSET,
|
|
CHANMODE_CSET,
|
|
CHANNEL_LOG_CSET,
|
|
CHANNEL_LOG_FILE_CSET,
|
|
CHANNEL_LOG_LEVEL_CSET,
|
|
COMPRESS_MODES_CSET,
|
|
CTCP_FLOOD_BAN_CSET,
|
|
DEOPFLOOD_CSET,
|
|
DEOPFLOOD_TIME_CSET,
|
|
DEOP_ON_DEOPFLOOD_CSET,
|
|
DEOP_ON_KICKFLOOD_CSET,
|
|
HACKING_CSET,
|
|
JOINFLOOD_CSET,
|
|
JOINFLOOD_TIME_CSET,
|
|
KICKFLOOD_CSET,
|
|
KICKFLOOD_TIME_CSET,
|
|
KICK_IF_BANNED_CSET,
|
|
KICK_ON_DEOPFLOOD_CSET,
|
|
KICK_ON_JOINFLOOD_CSET,
|
|
KICK_ON_KICKFLOOD_CSET,
|
|
KICK_ON_NICKFLOOD_CSET,
|
|
KICK_ON_PUBFLOOD_CSET,
|
|
KICK_OPS_CSET,
|
|
LAMEIDENT_CSET,
|
|
LAMELIST_CSET,
|
|
NICKFLOOD_CSET,
|
|
NICKFLOOD_TIME_CSET,
|
|
PUBFLOOD_CSET,
|
|
PUBFLOOD_IGNORE_TIME_CSET,
|
|
PUBFLOOD_TIME_CSET,
|
|
SHITLIST_CSET,
|
|
USERLIST_CSET,
|
|
NUMBER_OF_CSETS
|
|
};
|
|
|
|
enum WSET_TYPES
|
|
{
|
|
STATUS_AWAY_WSET,
|
|
STATUS_CDCCCOUNT_WSET,
|
|
STATUS_CHANNEL_WSET,
|
|
STATUS_CHANOP_WSET,
|
|
STATUS_CLOCK_WSET,
|
|
STATUS_CPU_SAVER_WSET,
|
|
STATUS_DCCCOUNT_WSET,
|
|
STATUS_FLAG_WSET,
|
|
STATUS_FORMAT_WSET,
|
|
STATUS_FORMAT1_WSET,
|
|
STATUS_FORMAT2_WSET,
|
|
STATUS_FORMAT3_WSET,
|
|
STATUS_HALFOP_WSET,
|
|
STATUS_HOLD_WSET,
|
|
STATUS_HOLD_LINES_WSET,
|
|
STATUS_LAG_WSET,
|
|
STATUS_MAIL_WSET,
|
|
STATUS_MODE_WSET,
|
|
STATUS_MSGCOUNT_WSET,
|
|
STATUS_NICKNAME_WSET,
|
|
STATUS_NOTIFY_WSET,
|
|
STATUS_OPER_KILLS_WSET,
|
|
STATUS_QUERY_WSET,
|
|
STATUS_SCROLLBACK_WSET,
|
|
STATUS_SERVER_WSET,
|
|
STATUS_TOPIC_WSET,
|
|
STATUS_UMODE_WSET,
|
|
STATUS_USER0_WSET,
|
|
STATUS_USER1_WSET,
|
|
STATUS_USER10_WSET,
|
|
STATUS_USER11_WSET,
|
|
STATUS_USER12_WSET,
|
|
STATUS_USER13_WSET,
|
|
STATUS_USER14_WSET,
|
|
STATUS_USER15_WSET,
|
|
STATUS_USER16_WSET,
|
|
STATUS_USER17_WSET,
|
|
STATUS_USER18_WSET,
|
|
STATUS_USER19_WSET,
|
|
STATUS_USER2_WSET,
|
|
STATUS_USER20_WSET,
|
|
STATUS_USER21_WSET,
|
|
STATUS_USER22_WSET,
|
|
STATUS_USER23_WSET,
|
|
STATUS_USER24_WSET,
|
|
STATUS_USER25_WSET,
|
|
STATUS_USER26_WSET,
|
|
STATUS_USER27_WSET,
|
|
STATUS_USER28_WSET,
|
|
STATUS_USER29_WSET,
|
|
STATUS_USER3_WSET,
|
|
STATUS_USER30_WSET,
|
|
STATUS_USER31_WSET,
|
|
STATUS_USER32_WSET,
|
|
STATUS_USER33_WSET,
|
|
STATUS_USER34_WSET,
|
|
STATUS_USER35_WSET,
|
|
STATUS_USER36_WSET,
|
|
STATUS_USER37_WSET,
|
|
STATUS_USER38_WSET,
|
|
STATUS_USER39_WSET,
|
|
STATUS_USER4_WSET,
|
|
STATUS_USER5_WSET,
|
|
STATUS_USER6_WSET,
|
|
STATUS_USER7_WSET,
|
|
STATUS_USER8_WSET,
|
|
STATUS_USER9_WSET,
|
|
STATUS_USERS_WSET,
|
|
STATUS_VOICE_WSET,
|
|
STATUS_WINDOW_WSET,
|
|
NUMBER_OF_WSETS
|
|
};
|
|
|
|
enum FSET_TYPES
|
|
{
|
|
FORMAT_ACTION_FSET,
|
|
FORMAT_ACTION_AR_FSET,
|
|
FORMAT_ACTION_CHANNEL_FSET,
|
|
FORMAT_ACTION_OTHER_FSET,
|
|
FORMAT_ACTION_OTHER_AR_FSET,
|
|
FORMAT_ACTION_USER_FSET,
|
|
FORMAT_ACTION_USER_AR_FSET,
|
|
FORMAT_ALIAS_FSET,
|
|
FORMAT_ASSIGN_FSET,
|
|
FORMAT_AWAY_FSET,
|
|
FORMAT_BACK_FSET,
|
|
|
|
FORMAT_BANS_FSET,
|
|
FORMAT_BANS_FOOTER_FSET,
|
|
FORMAT_BANS_HEADER_FSET,
|
|
FORMAT_BITCH_FSET,
|
|
FORMAT_BOT_FSET,
|
|
FORMAT_BOT_FOOTER_FSET,
|
|
FORMAT_BOT_HEADER_FSET,
|
|
FORMAT_BWALL_FSET,
|
|
|
|
FORMAT_CHANNEL_SIGNOFF_FSET,
|
|
FORMAT_CHANNEL_URL_FSET,
|
|
|
|
FORMAT_COMPLETE_FSET,
|
|
FORMAT_CONNECT_FSET,
|
|
FORMAT_CSET_FSET,
|
|
FORMAT_CTCP_FSET,
|
|
FORMAT_CTCP_CLOAK_FSET,
|
|
FORMAT_CTCP_CLOAK_FUNC_FSET,
|
|
FORMAT_CTCP_CLOAK_FUNC_USER_FSET,
|
|
FORMAT_CTCP_CLOAK_UNKNOWN_FSET,
|
|
FORMAT_CTCP_CLOAK_UNKNOWN_USER_FSET,
|
|
FORMAT_CTCP_CLOAK_USER_FSET,
|
|
FORMAT_CTCP_FUNC_FSET,
|
|
FORMAT_CTCP_FUNC_USER_FSET,
|
|
FORMAT_CTCP_REPLY_FSET,
|
|
FORMAT_CTCP_UNKNOWN_FSET,
|
|
FORMAT_CTCP_UNKNOWN_USER_FSET,
|
|
FORMAT_CTCP_USER_FSET,
|
|
FORMAT_DCC_FSET,
|
|
FORMAT_DCC_CHAT_FSET,
|
|
FORMAT_DCC_CONNECT_FSET,
|
|
FORMAT_DCC_ERROR_FSET,
|
|
FORMAT_DCC_LOST_FSET,
|
|
FORMAT_DCC_REQUEST_FSET,
|
|
FORMAT_DESYNC_FSET,
|
|
FORMAT_DISCONNECT_FSET,
|
|
FORMAT_EBANS_FSET,
|
|
FORMAT_EBANS_FOOTER_FSET,
|
|
FORMAT_EBANS_HEADER_FSET,
|
|
FORMAT_ENCRYPTED_NOTICE_FSET,
|
|
FORMAT_ENCRYPTED_PRIVMSG_FSET,
|
|
FORMAT_ENCRYPTED_PUBLIC_FSET,
|
|
FORMAT_ENCRYPTED_PUBLIC_NOTICE_FSET,
|
|
FORMAT_FLOOD_FSET,
|
|
FORMAT_FRIEND_JOIN_FSET,
|
|
FORMAT_HELP_FSET,
|
|
FORMAT_HOOK_FSET,
|
|
|
|
FORMAT_IGNORE_INVITE_FSET,
|
|
FORMAT_IGNORE_MSG_FSET,
|
|
FORMAT_IGNORE_MSG_AWAY_FSET,
|
|
FORMAT_IGNORE_NOTICE_FSET,
|
|
FORMAT_IGNORE_WALL_FSET,
|
|
|
|
FORMAT_INVITE_FSET,
|
|
FORMAT_INVITE_USER_FSET,
|
|
FORMAT_JOIN_FSET,
|
|
FORMAT_KICK_FSET,
|
|
FORMAT_KICK_USER_FSET,
|
|
FORMAT_KILL_FSET,
|
|
FORMAT_LASTLOG_FSET,
|
|
FORMAT_LEAVE_FSET,
|
|
FORMAT_LINKS_FSET,
|
|
FORMAT_LIST_FSET,
|
|
FORMAT_MAIL_FSET,
|
|
FORMAT_MODE_FSET,
|
|
FORMAT_MODE_CHANNEL_FSET,
|
|
FORMAT_MSG_FSET,
|
|
FORMAT_MSGCOUNT_FSET,
|
|
FORMAT_MSGLOG_FSET,
|
|
FORMAT_MSG_GROUP_FSET,
|
|
|
|
FORMAT_NAMES_FSET,
|
|
FORMAT_NAMES_BANNER_FSET,
|
|
FORMAT_NAMES_BOT_FSET,
|
|
FORMAT_NAMES_FOOTER_FSET,
|
|
FORMAT_NAMES_FRIEND_FSET,
|
|
FORMAT_NAMES_IRCOP_FSET,
|
|
FORMAT_NAMES_NICK_FSET,
|
|
FORMAT_NAMES_NICK_BOT_FSET,
|
|
FORMAT_NAMES_NICK_FRIEND_FSET,
|
|
FORMAT_NAMES_NICK_ME_FSET,
|
|
FORMAT_NAMES_NICK_SHIT_FSET,
|
|
FORMAT_NAMES_NONOP_FSET,
|
|
FORMAT_NAMES_OP_FSET,
|
|
FORMAT_NAMES_SHIT_FSET,
|
|
FORMAT_NAMES_USER_FSET,
|
|
FORMAT_NAMES_USER_CHANOP_FSET,
|
|
FORMAT_NAMES_USER_IRCOP_FSET,
|
|
FORMAT_NAMES_USER_VOICE_FSET,
|
|
FORMAT_NAMES_VOICE_FSET,
|
|
|
|
FORMAT_NETADD_FSET,
|
|
FORMAT_NETJOIN_FSET,
|
|
FORMAT_NETSPLIT_FSET,
|
|
FORMAT_NETSPLIT_HEADER_FSET,
|
|
|
|
FORMAT_NICKNAME_FSET,
|
|
FORMAT_NICKNAME_OTHER_FSET,
|
|
FORMAT_NICKNAME_USER_FSET,
|
|
FORMAT_NICK_AUTO_FSET,
|
|
FORMAT_NICK_COMP_FSET,
|
|
FORMAT_NICK_MSG_FSET,
|
|
|
|
FORMAT_NONICK_FSET,
|
|
FORMAT_NOTE_FSET,
|
|
FORMAT_NOTICE_FSET,
|
|
FORMAT_NOTICE_GROUP_FSET,
|
|
FORMAT_NOTIFY_OFF_FSET,
|
|
FORMAT_NOTIFY_ON_FSET,
|
|
FORMAT_NOTIFY_SIGNOFF_FSET,
|
|
FORMAT_NOTIFY_SIGNON_FSET,
|
|
FORMAT_OPER_FSET,
|
|
FORMAT_OV_FSET,
|
|
FORMAT_PASTE_FSET,
|
|
FORMAT_PUBLIC_FSET,
|
|
FORMAT_PUBLIC_AR_FSET,
|
|
FORMAT_PUBLIC_MSG_FSET,
|
|
FORMAT_PUBLIC_MSG_AR_FSET,
|
|
FORMAT_PUBLIC_NOTICE_FSET,
|
|
FORMAT_PUBLIC_NOTICE_AR_FSET,
|
|
FORMAT_PUBLIC_OTHER_FSET,
|
|
FORMAT_PUBLIC_OTHER_AR_FSET,
|
|
FORMAT_REL_FSET,
|
|
FORMAT_RELM_FSET,
|
|
FORMAT_RELN_FSET,
|
|
FORMAT_RELS_FSET,
|
|
FORMAT_RELSM_FSET,
|
|
FORMAT_RELSN_FSET,
|
|
FORMAT_SEND_ACTION_FSET,
|
|
FORMAT_SEND_ACTION_OTHER_FSET,
|
|
FORMAT_SEND_AWAY_FSET,
|
|
FORMAT_SEND_CTCP_FSET,
|
|
FORMAT_SEND_DCC_CHAT_FSET,
|
|
FORMAT_SEND_ENCRYPTED_MSG_FSET,
|
|
FORMAT_SEND_ENCRYPTED_NOTICE_FSET,
|
|
FORMAT_SEND_ENCRYPTED_PUBLIC_FSET,
|
|
FORMAT_SEND_MSG_FSET,
|
|
|
|
FORMAT_SEND_NOTICE_FSET,
|
|
FORMAT_SEND_PUBLIC_FSET,
|
|
FORMAT_SEND_PUBLIC_OTHER_FSET,
|
|
FORMAT_SERVER_FSET,
|
|
FORMAT_SERVER_MSG1_FSET,
|
|
FORMAT_SERVER_MSG1_FROM_FSET,
|
|
FORMAT_SERVER_MSG2_FSET,
|
|
FORMAT_SERVER_MSG2_FROM_FSET,
|
|
|
|
FORMAT_SERVER_NOTICE_FSET,
|
|
FORMAT_SERVER_NOTICE_BOT_FSET,
|
|
FORMAT_SERVER_NOTICE_BOT1_FSET,
|
|
FORMAT_SERVER_NOTICE_BOT_ALARM_FSET,
|
|
FORMAT_SERVER_NOTICE_CLIENT_CONNECT_FSET,
|
|
FORMAT_SERVER_NOTICE_CLIENT_EXIT_FSET,
|
|
FORMAT_SERVER_NOTICE_CLIENT_INVALID_FSET,
|
|
FORMAT_SERVER_NOTICE_CLIENT_TERM_FSET,
|
|
FORMAT_SERVER_NOTICE_FAKE_FSET,
|
|
FORMAT_SERVER_NOTICE_GLINE_FSET,
|
|
FORMAT_SERVER_NOTICE_KILL_FSET,
|
|
FORMAT_SERVER_NOTICE_KILL_LOCAL_FSET,
|
|
FORMAT_SERVER_NOTICE_KLINE_FSET,
|
|
FORMAT_SERVER_NOTICE_NICK_COLLISION_FSET,
|
|
FORMAT_SERVER_NOTICE_OPER_FSET,
|
|
FORMAT_SERVER_NOTICE_REHASH_FSET,
|
|
FORMAT_SERVER_NOTICE_STATS_FSET,
|
|
FORMAT_SERVER_NOTICE_TRAFFIC_HIGH_FSET,
|
|
FORMAT_SERVER_NOTICE_TRAFFIC_NORM_FSET,
|
|
FORMAT_SERVER_NOTICE_UNAUTH_FSET,
|
|
|
|
FORMAT_SET_FSET,
|
|
FORMAT_SET_NOVALUE_FSET,
|
|
FORMAT_SHITLIST_FSET,
|
|
FORMAT_SHITLIST_FOOTER_FSET,
|
|
FORMAT_SHITLIST_HEADER_FSET,
|
|
|
|
FORMAT_SIGNOFF_FSET,
|
|
FORMAT_SILENCE_FSET,
|
|
FORMAT_SMODE_FSET,
|
|
FORMAT_STATUS_FSET,
|
|
FORMAT_STATUS1_FSET,
|
|
FORMAT_STATUS2_FSET,
|
|
FORMAT_STATUS3_FSET,
|
|
FORMAT_TIMER_FSET,
|
|
FORMAT_TOPIC_FSET,
|
|
FORMAT_TOPIC_CHANGE_FSET,
|
|
FORMAT_TOPIC_CHANGE_HEADER_FSET,
|
|
FORMAT_TOPIC_SETBY_FSET,
|
|
FORMAT_TOPIC_UNSET_FSET,
|
|
FORMAT_TRACE_OPER_FSET,
|
|
FORMAT_TRACE_SERVER_FSET,
|
|
FORMAT_TRACE_USER_FSET,
|
|
FORMAT_USAGE_FSET,
|
|
FORMAT_USERLIST_FSET,
|
|
FORMAT_USERLIST_FOOTER_FSET,
|
|
FORMAT_USERLIST_HEADER_FSET,
|
|
|
|
FORMAT_USERMODE_FSET,
|
|
FORMAT_USERMODE_OTHER_FSET,
|
|
FORMAT_USERS_FSET,
|
|
FORMAT_USERS_HEADER_FSET,
|
|
FORMAT_USERS_SHIT_FSET,
|
|
FORMAT_USERS_TITLE_FSET,
|
|
FORMAT_USERS_USER_FSET,
|
|
FORMAT_VERSION_FSET,
|
|
FORMAT_WALL_FSET,
|
|
FORMAT_WALLOP_FSET,
|
|
FORMAT_WALL_AR_FSET,
|
|
FORMAT_WATCH_SIGNOFF_FSET,
|
|
FORMAT_WATCH_SIGNON_FSET,
|
|
FORMAT_WHO_FSET,
|
|
FORMAT_WHOIS_ACTUALLY_FSET,
|
|
FORMAT_WHOIS_ADMIN_FSET,
|
|
FORMAT_WHOIS_AWAY_FSET,
|
|
FORMAT_WHOIS_BOT_FSET,
|
|
FORMAT_WHOIS_CALLERID_FSET,
|
|
FORMAT_WHOIS_CHANNELS_FSET,
|
|
FORMAT_WHOIS_FOOTER_FSET,
|
|
FORMAT_WHOIS_FRIEND_FSET,
|
|
FORMAT_WHOIS_HEADER_FSET,
|
|
FORMAT_WHOIS_HELP_FSET,
|
|
FORMAT_WHOIS_IDLE_FSET,
|
|
FORMAT_WHOIS_LOGGEDIN_FSET,
|
|
FORMAT_WHOIS_NAME_FSET,
|
|
FORMAT_WHOIS_NICK_FSET,
|
|
FORMAT_WHOIS_OPER_FSET,
|
|
FORMAT_WHOIS_REGISTER_FSET,
|
|
FORMAT_WHOIS_SECURE_FSET,
|
|
FORMAT_WHOIS_SERVER_FSET,
|
|
FORMAT_WHOIS_SERVICE_FSET,
|
|
FORMAT_WHOIS_SHIT_FSET,
|
|
FORMAT_WHOIS_SIGNON_FSET,
|
|
FORMAT_WHOLEFT_FOOTER_FSET,
|
|
FORMAT_WHOLEFT_HEADER_FSET,
|
|
FORMAT_WHOLEFT_USER_FSET,
|
|
FORMAT_WHOWAS_HEADER_FSET,
|
|
FORMAT_WHOWAS_NICK_FSET,
|
|
FORMAT_WIDELIST_FSET,
|
|
FORMAT_WINDOW_SET_FSET,
|
|
FORMAT_XTERM_TITLE_FSET,
|
|
NUMBER_OF_FSET
|
|
};
|
|
|
|
|
|
typedef struct cset_array_struc
|
|
{
|
|
char *name;
|
|
int type;
|
|
int offset;
|
|
void (*func) (struct cset_array_struc *, CSetList *);
|
|
int flag;
|
|
} CSetArray;
|
|
|
|
typedef struct wset_array_struc
|
|
{
|
|
char *name;
|
|
int type;
|
|
int offset;
|
|
int format_offset;
|
|
void (*func) (Window *, char *, int);
|
|
int flag;
|
|
} WSetArray;
|
|
|
|
|
|
void cset_variable(char *, char *, char *, char *);
|
|
int BX_get_cset_int_var(CSetList *, int);
|
|
void BX_set_cset_int_var(CSetList *, int, int);
|
|
char *BX_get_cset_str_var(CSetList *, int);
|
|
void BX_set_cset_str_var(CSetList *, int, const char *);
|
|
|
|
CSetList *create_csets_for_channel(char *channel);
|
|
void remove_csets_for_channel(CSetList *);
|
|
char *BX_get_wset_string_var(WSet *, int);
|
|
void BX_set_wset_string_var(WSet *, int, char *);
|
|
void wset_variable(char *, char *, char *, char *);
|
|
WSet *create_wsets_for_window(Window *);
|
|
void create_fsets(Window *, int);
|
|
void remove_wsets_for_window(Window *);
|
|
char *BX_fget_string_var(enum FSET_TYPES);
|
|
void BX_fset_string_var(enum FSET_TYPES, char *);
|
|
void fset_variable(char *, char *, char *, char *);
|
|
char *make_fstring_var(const char *);
|
|
char **get_wset_format_var_address(WSet *, int);
|
|
char *get_cset(char *, ChannelList *, char *);
|
|
void delete_all_ext_fset(void);
|
|
CSetList *check_cset_queue(char *, int);
|
|
void do_logchannel(unsigned long, ChannelList *, char *, ...);
|
|
void check_channel_limit(ChannelList *chan);
|
|
|
|
void add_numeric_fset(char *name, int remove, char *args, int);
|
|
char *find_numeric_fset(int numeric);
|
|
|
|
#endif /* CSET_H_ */
|