The formatting of /NAMES and /SCAN output has been substantially reworked. The old /FSETs NAMES_BOTCOLOR, NAMES_FRIENDCOLOR, NAMES_NICKCOLOR, NAMES_OPCOLOR, NAMES_SHITCOLOR and NAMES_VOICECOLOR have been replaced with these new /FSETs: ....................NAMES_NICK %B$[10]0 ................NAMES_NICK_BOT %G$[10]0 .............NAMES_NICK_FRIEND %Y$[10]0 .................NAMES_NICK_ME %W$[10]0 ...............NAMES_NICK_SHIT %R$[10]0 ....................NAMES_USER %K[ %n$1-%K] .............NAMES_USER_CHANOP %K[%C$0%n$1-%K] ..............NAMES_USER_IRCOP %K[%R$0%n$1-%K] ..............NAMES_USER_VOICE %K[%M$0%n$1-%K] The NAMES_NICK formats control how the nick itself is displayed, depending on the status of the nick as recognised by BitchX (the priority order is NAMES_NICK_ME > NAMES_NICK_BOT > NAMES_NICK_FRIEND > NAMES_NICK_SHIT > NAMES_NICK). The NAMES_USER formats control how the overall entry appears in the /NAMES or /SCAN line, depending on the channel status of the nick (the priority order is NAMES_USER_CHANOP > NAMES_USER_VOICE > NAMES_USER_IRCOP > NAMES_USER). You'll need to update any scripts or custom formats that altered the old formats. If you just use the defaults, the main difference you'll see is that your own nick is now shown in white, and voiced users are shown with the '+' sent by the server instead of the 'v'. You can go back to the old look by setting these formats: /FSET NAMES_NICK_ME %B$[10]0 /FSET NAMES_USER_VOICE %K[%Mv%n$1-%K] git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@46 13b04d17-f746-0410-82c6-800466cd88b0
441 lines
9.8 KiB
C
441 lines
9.8 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_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_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_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_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_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_ADMIN_FSET,
|
|
FORMAT_WHOIS_AWAY_FSET,
|
|
FORMAT_WHOIS_BOT_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_NAME_FSET,
|
|
FORMAT_WHOIS_NICK_FSET,
|
|
FORMAT_WHOIS_OPER_FSET,
|
|
FORMAT_WHOIS_REGISTER_FSET,
|
|
FORMAT_WHOIS_SERVER_FSET,
|
|
FORMAT_WHOIS_SERVICE_FSET,
|
|
FORMAT_WHOIS_SHIT_FSET,
|
|
FORMAT_WHOIS_SIGNON_FSET,
|
|
FORMAT_WHOIS_ACTUALLY_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, 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 /* _CSETS_H_ */
|