1 /* 2 * cset.h: header for cset.c 3 */ 4 5 #ifndef _CSET_H_ 6 #define _CSET_H_ 7 8 #include "struct.h" 9 /* This ensures we always have the offsetof() macro */ 10 #ifndef offsetof 11 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 12 #endif 13 14 /* the types of IrcVariables (repeated in vars.h) */ 15 #define BOOL_TYPE_VAR 0 16 #define CHAR_TYPE_VAR 1 17 #define INT_TYPE_VAR 2 18 #define STR_TYPE_VAR 3 19 20 /* var_settings indexes ... also used in display.c for highlights */ 21 #define OFF 0 22 #define ON 1 23 #define TOGGLE 2 24 25 enum CSET_TYPES 26 { 27 AINV_CSET, 28 ANNOY_KICK_CSET, 29 AOP_CSET, 30 AUTO_JOIN_ON_INVITE_CSET, 31 AUTO_LIMIT_CSET, 32 AUTO_REJOIN_CSET, 33 BANTIME_CSET, 34 BITCH_CSET, 35 CHANMODE_CSET, 36 CHANNEL_LOG_CSET, 37 CHANNEL_LOG_FILE_CSET, 38 CHANNEL_LOG_LEVEL_CSET, 39 COMPRESS_MODES_CSET, 40 CTCP_FLOOD_BAN_CSET, 41 DEOPFLOOD_CSET, 42 DEOPFLOOD_TIME_CSET, 43 DEOP_ON_DEOPFLOOD_CSET, 44 DEOP_ON_KICKFLOOD_CSET, 45 HACKING_CSET, 46 JOINFLOOD_CSET, 47 JOINFLOOD_TIME_CSET, 48 KICKFLOOD_CSET, 49 KICKFLOOD_TIME_CSET, 50 KICK_IF_BANNED_CSET, 51 KICK_ON_DEOPFLOOD_CSET, 52 KICK_ON_JOINFLOOD_CSET, 53 KICK_ON_KICKFLOOD_CSET, 54 KICK_ON_NICKFLOOD_CSET, 55 KICK_ON_PUBFLOOD_CSET, 56 KICK_OPS_CSET, 57 LAMEIDENT_CSET, 58 LAMELIST_CSET, 59 NICKFLOOD_CSET, 60 NICKFLOOD_TIME_CSET, 61 PUBFLOOD_CSET, 62 PUBFLOOD_IGNORE_TIME_CSET, 63 PUBFLOOD_TIME_CSET, 64 SHITLIST_CSET, 65 USERLIST_CSET, 66 NUMBER_OF_CSETS 67 }; 68 69 enum WSET_TYPES 70 { 71 STATUS_AWAY_WSET, 72 STATUS_CDCCCOUNT_WSET, 73 STATUS_CHANNEL_WSET, 74 STATUS_CHANOP_WSET, 75 STATUS_CLOCK_WSET, 76 STATUS_CPU_SAVER_WSET, 77 STATUS_DCCCOUNT_WSET, 78 STATUS_FLAG_WSET, 79 STATUS_FORMAT_WSET, 80 STATUS_FORMAT1_WSET, 81 STATUS_FORMAT2_WSET, 82 STATUS_FORMAT3_WSET, 83 STATUS_HALFOP_WSET, 84 STATUS_HOLD_WSET, 85 STATUS_HOLD_LINES_WSET, 86 STATUS_LAG_WSET, 87 STATUS_MAIL_WSET, 88 STATUS_MODE_WSET, 89 STATUS_MSGCOUNT_WSET, 90 STATUS_NICKNAME_WSET, 91 STATUS_NOTIFY_WSET, 92 STATUS_OPER_KILLS_WSET, 93 STATUS_QUERY_WSET, 94 STATUS_SCROLLBACK_WSET, 95 STATUS_SERVER_WSET, 96 STATUS_TOPIC_WSET, 97 STATUS_UMODE_WSET, 98 STATUS_USER0_WSET, 99 STATUS_USER1_WSET, 100 STATUS_USER10_WSET, 101 STATUS_USER11_WSET, 102 STATUS_USER12_WSET, 103 STATUS_USER13_WSET, 104 STATUS_USER14_WSET, 105 STATUS_USER15_WSET, 106 STATUS_USER16_WSET, 107 STATUS_USER17_WSET, 108 STATUS_USER18_WSET, 109 STATUS_USER19_WSET, 110 STATUS_USER2_WSET, 111 STATUS_USER20_WSET, 112 STATUS_USER21_WSET, 113 STATUS_USER22_WSET, 114 STATUS_USER23_WSET, 115 STATUS_USER24_WSET, 116 STATUS_USER25_WSET, 117 STATUS_USER26_WSET, 118 STATUS_USER27_WSET, 119 STATUS_USER28_WSET, 120 STATUS_USER29_WSET, 121 STATUS_USER3_WSET, 122 STATUS_USER30_WSET, 123 STATUS_USER31_WSET, 124 STATUS_USER32_WSET, 125 STATUS_USER33_WSET, 126 STATUS_USER34_WSET, 127 STATUS_USER35_WSET, 128 STATUS_USER36_WSET, 129 STATUS_USER37_WSET, 130 STATUS_USER38_WSET, 131 STATUS_USER39_WSET, 132 STATUS_USER4_WSET, 133 STATUS_USER5_WSET, 134 STATUS_USER6_WSET, 135 STATUS_USER7_WSET, 136 STATUS_USER8_WSET, 137 STATUS_USER9_WSET, 138 STATUS_USERS_WSET, 139 STATUS_VOICE_WSET, 140 STATUS_WINDOW_WSET, 141 NUMBER_OF_WSETS 142 }; 143 144 enum FSET_TYPES 145 { 146 FORMAT_ACTION_FSET, 147 FORMAT_ACTION_AR_FSET, 148 FORMAT_ACTION_CHANNEL_FSET, 149 FORMAT_ACTION_OTHER_FSET, 150 FORMAT_ACTION_OTHER_AR_FSET, 151 FORMAT_ACTION_USER_FSET, 152 FORMAT_ACTION_USER_AR_FSET, 153 FORMAT_ALIAS_FSET, 154 FORMAT_ASSIGN_FSET, 155 FORMAT_AWAY_FSET, 156 FORMAT_BACK_FSET, 157 158 FORMAT_BANS_FSET, 159 FORMAT_BANS_FOOTER_FSET, 160 FORMAT_BANS_HEADER_FSET, 161 FORMAT_BITCH_FSET, 162 FORMAT_BOT_FSET, 163 FORMAT_BOT_FOOTER_FSET, 164 FORMAT_BOT_HEADER_FSET, 165 FORMAT_BWALL_FSET, 166 167 FORMAT_CHANNEL_SIGNOFF_FSET, 168 FORMAT_CHANNEL_URL_FSET, 169 170 FORMAT_COMPLETE_FSET, 171 FORMAT_CONNECT_FSET, 172 FORMAT_CSET_FSET, 173 FORMAT_CTCP_FSET, 174 FORMAT_CTCP_CLOAK_FSET, 175 FORMAT_CTCP_CLOAK_FUNC_FSET, 176 FORMAT_CTCP_CLOAK_FUNC_USER_FSET, 177 FORMAT_CTCP_CLOAK_UNKNOWN_FSET, 178 FORMAT_CTCP_CLOAK_UNKNOWN_USER_FSET, 179 FORMAT_CTCP_CLOAK_USER_FSET, 180 FORMAT_CTCP_FUNC_FSET, 181 FORMAT_CTCP_FUNC_USER_FSET, 182 FORMAT_CTCP_REPLY_FSET, 183 FORMAT_CTCP_UNKNOWN_FSET, 184 FORMAT_CTCP_UNKNOWN_USER_FSET, 185 FORMAT_CTCP_USER_FSET, 186 FORMAT_DCC_FSET, 187 FORMAT_DCC_CHAT_FSET, 188 FORMAT_DCC_CONNECT_FSET, 189 FORMAT_DCC_ERROR_FSET, 190 FORMAT_DCC_LOST_FSET, 191 FORMAT_DCC_REQUEST_FSET, 192 FORMAT_DESYNC_FSET, 193 FORMAT_DISCONNECT_FSET, 194 FORMAT_EBANS_FSET, 195 FORMAT_EBANS_FOOTER_FSET, 196 FORMAT_EBANS_HEADER_FSET, 197 FORMAT_ENCRYPTED_NOTICE_FSET, 198 FORMAT_ENCRYPTED_PRIVMSG_FSET, 199 FORMAT_FLOOD_FSET, 200 FORMAT_FRIEND_JOIN_FSET, 201 FORMAT_HELP_FSET, 202 FORMAT_HOOK_FSET, 203 204 FORMAT_IGNORE_INVITE_FSET, 205 FORMAT_IGNORE_MSG_FSET, 206 FORMAT_IGNORE_MSG_AWAY_FSET, 207 FORMAT_IGNORE_NOTICE_FSET, 208 FORMAT_IGNORE_WALL_FSET, 209 210 FORMAT_INVITE_FSET, 211 FORMAT_INVITE_USER_FSET, 212 FORMAT_JOIN_FSET, 213 FORMAT_KICK_FSET, 214 FORMAT_KICK_USER_FSET, 215 FORMAT_KILL_FSET, 216 FORMAT_LASTLOG_FSET, 217 FORMAT_LEAVE_FSET, 218 FORMAT_LINKS_FSET, 219 FORMAT_LIST_FSET, 220 FORMAT_MAIL_FSET, 221 FORMAT_MODE_FSET, 222 FORMAT_MODE_CHANNEL_FSET, 223 FORMAT_MSG_FSET, 224 FORMAT_MSGCOUNT_FSET, 225 FORMAT_MSGLOG_FSET, 226 FORMAT_MSG_GROUP_FSET, 227 228 FORMAT_NAMES_FSET, 229 FORMAT_NAMES_BANNER_FSET, 230 FORMAT_NAMES_BOT_FSET, 231 FORMAT_NAMES_FOOTER_FSET, 232 FORMAT_NAMES_FRIEND_FSET, 233 FORMAT_NAMES_IRCOP_FSET, 234 FORMAT_NAMES_NICK_FSET, 235 FORMAT_NAMES_NICK_BOT_FSET, 236 FORMAT_NAMES_NICK_FRIEND_FSET, 237 FORMAT_NAMES_NICK_ME_FSET, 238 FORMAT_NAMES_NICK_SHIT_FSET, 239 FORMAT_NAMES_NONOP_FSET, 240 FORMAT_NAMES_OP_FSET, 241 FORMAT_NAMES_SHIT_FSET, 242 FORMAT_NAMES_USER_FSET, 243 FORMAT_NAMES_USER_CHANOP_FSET, 244 FORMAT_NAMES_USER_IRCOP_FSET, 245 FORMAT_NAMES_USER_VOICE_FSET, 246 FORMAT_NAMES_VOICE_FSET, 247 248 FORMAT_NETADD_FSET, 249 FORMAT_NETJOIN_FSET, 250 FORMAT_NETSPLIT_FSET, 251 FORMAT_NETSPLIT_HEADER_FSET, 252 253 FORMAT_NICKNAME_FSET, 254 FORMAT_NICKNAME_OTHER_FSET, 255 FORMAT_NICKNAME_USER_FSET, 256 FORMAT_NICK_AUTO_FSET, 257 FORMAT_NICK_COMP_FSET, 258 FORMAT_NICK_MSG_FSET, 259 260 FORMAT_NONICK_FSET, 261 FORMAT_NOTE_FSET, 262 FORMAT_NOTICE_FSET, 263 FORMAT_NOTIFY_OFF_FSET, 264 FORMAT_NOTIFY_ON_FSET, 265 FORMAT_NOTIFY_SIGNOFF_FSET, 266 FORMAT_NOTIFY_SIGNON_FSET, 267 FORMAT_OPER_FSET, 268 FORMAT_OV_FSET, 269 FORMAT_PASTE_FSET, 270 FORMAT_PUBLIC_FSET, 271 FORMAT_PUBLIC_AR_FSET, 272 FORMAT_PUBLIC_MSG_FSET, 273 FORMAT_PUBLIC_MSG_AR_FSET, 274 FORMAT_PUBLIC_NOTICE_FSET, 275 FORMAT_PUBLIC_NOTICE_AR_FSET, 276 FORMAT_PUBLIC_OTHER_FSET, 277 FORMAT_PUBLIC_OTHER_AR_FSET, 278 FORMAT_REL_FSET, 279 FORMAT_RELM_FSET, 280 FORMAT_RELN_FSET, 281 FORMAT_RELS_FSET, 282 FORMAT_RELSM_FSET, 283 FORMAT_RELSN_FSET, 284 FORMAT_SEND_ACTION_FSET, 285 FORMAT_SEND_ACTION_OTHER_FSET, 286 FORMAT_SEND_AWAY_FSET, 287 FORMAT_SEND_CTCP_FSET, 288 FORMAT_SEND_DCC_CHAT_FSET, 289 FORMAT_SEND_ENCRYPTED_MSG_FSET, 290 FORMAT_SEND_ENCRYPTED_NOTICE_FSET, 291 FORMAT_SEND_MSG_FSET, 292 293 FORMAT_SEND_NOTICE_FSET, 294 FORMAT_SEND_PUBLIC_FSET, 295 FORMAT_SEND_PUBLIC_OTHER_FSET, 296 FORMAT_SERVER_FSET, 297 FORMAT_SERVER_MSG1_FSET, 298 FORMAT_SERVER_MSG1_FROM_FSET, 299 FORMAT_SERVER_MSG2_FSET, 300 FORMAT_SERVER_MSG2_FROM_FSET, 301 302 FORMAT_SERVER_NOTICE_FSET, 303 FORMAT_SERVER_NOTICE_BOT_FSET, 304 FORMAT_SERVER_NOTICE_BOT1_FSET, 305 FORMAT_SERVER_NOTICE_BOT_ALARM_FSET, 306 FORMAT_SERVER_NOTICE_CLIENT_CONNECT_FSET, 307 FORMAT_SERVER_NOTICE_CLIENT_EXIT_FSET, 308 FORMAT_SERVER_NOTICE_CLIENT_INVALID_FSET, 309 FORMAT_SERVER_NOTICE_CLIENT_TERM_FSET, 310 FORMAT_SERVER_NOTICE_FAKE_FSET, 311 FORMAT_SERVER_NOTICE_GLINE_FSET, 312 FORMAT_SERVER_NOTICE_KILL_FSET, 313 FORMAT_SERVER_NOTICE_KILL_LOCAL_FSET, 314 FORMAT_SERVER_NOTICE_KLINE_FSET, 315 FORMAT_SERVER_NOTICE_NICK_COLLISION_FSET, 316 FORMAT_SERVER_NOTICE_OPER_FSET, 317 FORMAT_SERVER_NOTICE_REHASH_FSET, 318 FORMAT_SERVER_NOTICE_STATS_FSET, 319 FORMAT_SERVER_NOTICE_TRAFFIC_HIGH_FSET, 320 FORMAT_SERVER_NOTICE_TRAFFIC_NORM_FSET, 321 FORMAT_SERVER_NOTICE_UNAUTH_FSET, 322 323 FORMAT_SET_FSET, 324 FORMAT_SET_NOVALUE_FSET, 325 FORMAT_SHITLIST_FSET, 326 FORMAT_SHITLIST_FOOTER_FSET, 327 FORMAT_SHITLIST_HEADER_FSET, 328 329 FORMAT_SIGNOFF_FSET, 330 FORMAT_SILENCE_FSET, 331 FORMAT_SMODE_FSET, 332 FORMAT_STATUS_FSET, 333 FORMAT_STATUS1_FSET, 334 FORMAT_STATUS2_FSET, 335 FORMAT_STATUS3_FSET, 336 FORMAT_TIMER_FSET, 337 FORMAT_TOPIC_FSET, 338 FORMAT_TOPIC_CHANGE_FSET, 339 FORMAT_TOPIC_CHANGE_HEADER_FSET, 340 FORMAT_TOPIC_SETBY_FSET, 341 FORMAT_TOPIC_UNSET_FSET, 342 FORMAT_TRACE_OPER_FSET, 343 FORMAT_TRACE_SERVER_FSET, 344 FORMAT_TRACE_USER_FSET, 345 FORMAT_USAGE_FSET, 346 FORMAT_USERLIST_FSET, 347 FORMAT_USERLIST_FOOTER_FSET, 348 FORMAT_USERLIST_HEADER_FSET, 349 350 FORMAT_USERMODE_FSET, 351 FORMAT_USERMODE_OTHER_FSET, 352 FORMAT_USERS_FSET, 353 FORMAT_USERS_HEADER_FSET, 354 FORMAT_USERS_SHIT_FSET, 355 FORMAT_USERS_TITLE_FSET, 356 FORMAT_USERS_USER_FSET, 357 FORMAT_VERSION_FSET, 358 FORMAT_WALL_FSET, 359 FORMAT_WALLOP_FSET, 360 FORMAT_WALL_AR_FSET, 361 FORMAT_WATCH_SIGNOFF_FSET, 362 FORMAT_WATCH_SIGNON_FSET, 363 FORMAT_WHO_FSET, 364 FORMAT_WHOIS_ACTUALLY_FSET, 365 FORMAT_WHOIS_ADMIN_FSET, 366 FORMAT_WHOIS_AWAY_FSET, 367 FORMAT_WHOIS_BOT_FSET, 368 FORMAT_WHOIS_CALLERID_FSET, 369 FORMAT_WHOIS_CHANNELS_FSET, 370 FORMAT_WHOIS_FOOTER_FSET, 371 FORMAT_WHOIS_FRIEND_FSET, 372 FORMAT_WHOIS_HEADER_FSET, 373 FORMAT_WHOIS_HELP_FSET, 374 FORMAT_WHOIS_IDLE_FSET, 375 FORMAT_WHOIS_LOGGEDIN_FSET, 376 FORMAT_WHOIS_NAME_FSET, 377 FORMAT_WHOIS_NICK_FSET, 378 FORMAT_WHOIS_OPER_FSET, 379 FORMAT_WHOIS_REGISTER_FSET, 380 FORMAT_WHOIS_SECURE_FSET, 381 FORMAT_WHOIS_SERVER_FSET, 382 FORMAT_WHOIS_SERVICE_FSET, 383 FORMAT_WHOIS_SHIT_FSET, 384 FORMAT_WHOIS_SIGNON_FSET, 385 FORMAT_WHOLEFT_FOOTER_FSET, 386 FORMAT_WHOLEFT_HEADER_FSET, 387 FORMAT_WHOLEFT_USER_FSET, 388 FORMAT_WHOWAS_HEADER_FSET, 389 FORMAT_WHOWAS_NICK_FSET, 390 FORMAT_WIDELIST_FSET, 391 FORMAT_WINDOW_SET_FSET, 392 FORMAT_XTERM_TITLE_FSET, 393 NUMBER_OF_FSET 394 }; 395 396 397 typedef struct cset_array_struc 398 { 399 char *name; 400 int type; 401 int offset; 402 void (*func) (struct cset_array_struc *, CSetList *); 403 int flag; 404 } CSetArray; 405 406 typedef struct wset_array_struc 407 { 408 char *name; 409 int type; 410 int offset; 411 int format_offset; 412 void (*func) (Window *, char *, int); 413 int flag; 414 } WSetArray; 415 416 417 void cset_variable(char *, char *, char *, char *); 418 int BX_get_cset_int_var(CSetList *, int); 419 void BX_set_cset_int_var(CSetList *, int, int); 420 char *BX_get_cset_str_var(CSetList *, int); 421 void BX_set_cset_str_var(CSetList *, int, const char *); 422 423 CSetList *create_csets_for_channel(char *channel); 424 void remove_csets_for_channel(CSetList *); 425 char *BX_get_wset_string_var(WSet *, int); 426 void BX_set_wset_string_var(WSet *, int, char *); 427 void wset_variable(char *, char *, char *, char *); 428 WSet *create_wsets_for_window(Window *); 429 void create_fsets(Window *, int); 430 void remove_wsets_for_window(Window *); 431 char *BX_fget_string_var(enum FSET_TYPES); 432 void BX_fset_string_var(enum FSET_TYPES, char *); 433 void fset_variable(char *, char *, char *, char *); 434 char *make_fstring_var(const char *); 435 char **get_wset_format_var_address(WSet *, int); 436 char *get_cset(char *, ChannelList *, char *); 437 void delete_all_ext_fset(void); 438 CSetList *check_cset_queue(char *, int); 439 void do_logchannel(unsigned long, ChannelList *, char *, ...); 440 void check_channel_limit(ChannelList *chan); 441 442 void add_numeric_fset(char *name, int remove, char *args, int); 443 char *find_numeric_fset(int numeric); 444 445 #endif /* _CSETS_H_ */ 446