Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/include/cset.h
1069 views
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_NAME_FSET,
376
FORMAT_WHOIS_NICK_FSET,
377
FORMAT_WHOIS_OPER_FSET,
378
FORMAT_WHOIS_REGISTER_FSET,
379
FORMAT_WHOIS_SECURE_FSET,
380
FORMAT_WHOIS_SERVER_FSET,
381
FORMAT_WHOIS_SERVICE_FSET,
382
FORMAT_WHOIS_SHIT_FSET,
383
FORMAT_WHOIS_SIGNON_FSET,
384
FORMAT_WHOLEFT_FOOTER_FSET,
385
FORMAT_WHOLEFT_HEADER_FSET,
386
FORMAT_WHOLEFT_USER_FSET,
387
FORMAT_WHOWAS_HEADER_FSET,
388
FORMAT_WHOWAS_NICK_FSET,
389
FORMAT_WIDELIST_FSET,
390
FORMAT_WINDOW_SET_FSET,
391
FORMAT_XTERM_TITLE_FSET,
392
NUMBER_OF_FSET
393
};
394
395
396
typedef struct cset_array_struc
397
{
398
char *name;
399
int type;
400
int offset;
401
void (*func) (struct cset_array_struc *, CSetList *);
402
int flag;
403
} CSetArray;
404
405
typedef struct wset_array_struc
406
{
407
char *name;
408
int type;
409
int offset;
410
int format_offset;
411
void (*func) (Window *, char *, int);
412
int flag;
413
} WSetArray;
414
415
416
void cset_variable(char *, char *, char *, char *);
417
int BX_get_cset_int_var(CSetList *, int);
418
void BX_set_cset_int_var(CSetList *, int, int);
419
char *BX_get_cset_str_var(CSetList *, int);
420
void BX_set_cset_str_var(CSetList *, int, const char *);
421
422
CSetList *create_csets_for_channel(char *channel);
423
void remove_csets_for_channel(CSetList *);
424
char *BX_get_wset_string_var(WSet *, int);
425
void BX_set_wset_string_var(WSet *, int, char *);
426
void wset_variable(char *, char *, char *, char *);
427
WSet *create_wsets_for_window(Window *);
428
void create_fsets(Window *, int);
429
void remove_wsets_for_window(Window *);
430
char *BX_fget_string_var(enum FSET_TYPES);
431
void BX_fset_string_var(enum FSET_TYPES, char *);
432
void fset_variable(char *, char *, char *, char *);
433
char *make_fstring_var(const char *);
434
char **get_wset_format_var_address(WSet *, int);
435
char *get_cset(char *, ChannelList *, char *);
436
void delete_all_ext_fset(void);
437
CSetList *check_cset_queue(char *, int);
438
void do_logchannel(unsigned long, ChannelList *, char *, ...);
439
void check_channel_limit(ChannelList *chan);
440
441
void add_numeric_fset(char *name, int remove, char *args, int);
442
char *find_numeric_fset(int numeric);
443
444
#endif /* _CSETS_H_ */
445
446