Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/include/module.h
1069 views
1
/*
2
* Module/dll handling code written by Colten Edwards.
3
* Copyright 1997
4
*/
5
6
#ifndef _MODULE_H
7
#define _MODULE_H
8
9
10
/*
11
* if we change the table below, we change this module number to the
12
* current date.
13
*/
14
#define MODULE_VERSION 011000
15
16
#include "struct.h"
17
18
typedef int (*Function_ptr)();
19
20
#ifdef WANT_DLL
21
#ifdef HPUX
22
#include <dl.h>
23
#endif
24
25
#define COMMAND_PROC 0x0001 /* New /command proc return void */
26
#define ALIAS_PROC 0x0002 /* new $alias proc return new_malloc'd string */
27
#define CTCP_PROC 0x0004 /* new ctcp proc return new_malloc'd string*/
28
#define VAR_PROC 0x0008 /* new variable no return */
29
#define HOOK_PROC 0x0010 /* new numeric proc
30
* return int 1 if we don't want client
31
* to also handle this.
32
* or 0 if we want client to handle
33
*/
34
#define RAW_PROC 0x0020 /* new raw irc proc */
35
#define DCC_PROC 0x0040 /* add to dcc command list */
36
#define OUTPUT_PROC 0x0080 /* New output proc for all windows. */
37
#define WINDOW_PROC 0x0100 /* New window proc */
38
#define TABLE_PROC 0x8000 /* removing a global_table proc */
39
40
#define INVALID_MODVERSION -1
41
42
typedef int (Irc_PackageInitProc) (IrcCommandDll **, Function_ptr *);
43
typedef char *(Irc_PackageVersionProc) (IrcCommandDll **);
44
45
typedef struct _function_table
46
{
47
char *name;
48
char *desc;
49
int id;
50
int flag;
51
void *func1;
52
void *func2;
53
} Function;
54
55
typedef struct _package_installed {
56
struct _package_installed *next;
57
char *name;
58
char *version;
59
60
int major;
61
int minor;
62
int lock;
63
64
#if defined(HPUX)
65
shl_t handle;
66
#elif defined(__EMX__)
67
HMODULE handle;
68
#elif defined(WINNT)
69
HINSTANCE handle;
70
#else
71
void *handle;
72
#endif
73
Irc_PackageInitProc *cleanup;
74
} Packages;
75
76
Packages *find_module (char *);
77
int BX_add_module_proc (unsigned int, char *, char *, char *, int, int, void *, void *);
78
int remove_package (char *);
79
int BX_remove_module_proc (unsigned int, char *, char *, char *);
80
int add_module(unsigned int, Function *, char *);
81
82
extern BuiltInDllFunctions *dll_functions;
83
#ifndef __hook_c
84
extern NumericFunction *dll_numeric_list;
85
#endif
86
extern IrcCommandDll *dll_commands;
87
extern CtcpEntryDll *dll_ctcp;
88
extern WindowDll *dll_window;
89
extern IrcVariableDll *dll_variable;
90
91
92
char *BX_get_dllstring_var(char *);
93
int BX_get_dllint_var(char *);
94
void BX_set_dllstring_var(char *, char *);
95
void BX_set_dllint_var(char *, unsigned int);
96
RawDll *find_raw_proc(char *, char **);
97
98
int check_version(unsigned long);
99
#endif /* WANT_DLL */
100
101
/*
102
* the order of this enum is extremely important. ie a module compiled
103
* on a differant order would fail miserably. So when adding to the list
104
* make sure and add to the end of the list.
105
*/
106
107
enum FUNCTION_VALUE
108
{
109
/* ircaux.c */
110
MODULE_VERSION_CHECK,
111
/* output.c */
112
PUT_IT,
113
BITCHSAY,
114
YELL,
115
ADD_TO_LOG,
116
VSNPRINTF,
117
SNPRINTF,
118
NEW_MALLOC,
119
NEW_FREE,
120
NEW_REALLOC,
121
MALLOC_STRCPY,
122
MALLOC_STRCAT,
123
MALLOC_STR2CPY,
124
M_3DUP,
125
M_OPENDUP,
126
M_S3CAT,
127
M_S3CAT_S,
128
M_3CAT,
129
UPPER,
130
LOWER,
131
STRISTR,
132
RSTRISTR,
133
WORD_COUNT,
134
REMOVE_TRAILING_SPACES,
135
MY_STRICMP,
136
MY_STRNICMP,
137
MY_STRNSTR,
138
CHOP,
139
STRMCPY,
140
STRMCAT,
141
SCANSTR,
142
EXPAND_TWIDDLE,
143
CHECK_NICKNAME,
144
SINDEX,
145
RSINDEX,
146
ISNUMBER,
147
RFGETS,
148
PATH_SEARCH,
149
DOUBLE_QUOTE,
150
IRCPANIC,
151
END_STRCMP,
152
BEEP_EM,
153
UZFOPEN,
154
FUNC_GET_TIME,
155
TIME_DIFF,
156
TIME_TO_NEXT_MINUTE,
157
PLURAL,
158
MY_CTIME,
159
LTOA,
160
STRFORMAT,
161
MATCHINGBRACKET,
162
PARSE_NUMBER,
163
SPLITW,
164
UNSPLITW,
165
M_2DUP,
166
M_E3CAT,
167
CHECK_VAL,
168
ON_OFF,
169
STREXTEND,
170
STRFILL,
171
EMPTY_FUNC,
172
REMOVE_BRACKETS,
173
MY_ATOL,
174
M_DUPCHAR,
175
STREQ,
176
STRIEQ,
177
STRMOPENCAT,
178
OV_STRCPY,
179
STRIP_CONTROL,
180
FIGURE_OUT_ADDRESS,
181
STRNRCHR,
182
MASK_DIGITS,
183
CCSPAN,
184
CHARCOUNT,
185
STRPCAT,
186
STRCPY_NOCOLORCODES,
187
CRYPTIT,
188
STRIPDEV,
189
MANGLE_LINE,
190
M_STRDUP,
191
M_STRCAT_UES,
192
M_STRNDUP,
193
MALLOC_SPRINTF,
194
M_SPRINTF,
195
NEXT_ARG,
196
NEW_NEXT_ARG,
197
NEW_NEW_NEXT_ARG,
198
LAST_ARG,
199
NEXT_IN_COMMA_LIST,
200
RANDOM_NUMBER,
201
202
/* words.c */
203
STRSEARCH,
204
MOVE_TO_ABS_WORD,
205
MOVE_WORD_REL,
206
EXTRACT,
207
EXTRACT2,
208
WILD_MATCH,
209
/* network */
210
CONNECT_BY_NUMBER,
211
RESOLV,
212
LOOKUP_HOST,
213
LOOKUP_IP,
214
HOST_TO_IP,
215
IP_TO_HOST,
216
ONE_TO_ANOTHER,
217
SET_BLOCKING,
218
SET_NON_BLOCKING,
219
220
/* list.c */
221
ADD_TO_LIST,
222
ADD_TO_LIST_EXT,
223
REMOVE_FROM_LIST_,
224
REMOVE_FROM_LIST_EXT,
225
REMOVEWILD_FROM_LIST,
226
LIST_LOOKUP,
227
LIST_LOOKUP_EXT,
228
FIND_IN_LIST,
229
FIND_IN_LIST_EXT,
230
/* alist.c */
231
ADD_TO_ARRAY,
232
REMOVE_FROM_ARRAY,
233
ARRAY_POP,
234
REMOVE_ALL_FROM_ARRAY,
235
ARRAY_LOOKUP,
236
FIND_ARRAY_ITEM,
237
FIND_FIXED_ARRAY_ITEM,
238
239
/* server.c */
240
SEND_TO_SERVER,
241
QUEUE_SEND_TO_SERVER,
242
MY_SEND_TO_SERVER,
243
/* connecting to the server */
244
GET_CONNECTED,
245
CONNECT_TO_SERVER_BY_REFNUM,
246
CLOSE_SERVER,
247
IS_SERVER_CONNECTED,
248
FLUSH_SERVER,
249
SERVER_IS_CONNECTED,
250
IS_SERVER_OPEN,
251
CLOSE_ALL_SERVER,
252
/* server file reading */
253
READ_SERVER_FILE,
254
ADD_TO_SERVER_LIST,
255
BUILD_SERVER_LIST,
256
DISPLAY_SERVER_LIST,
257
CREATE_SERVER_LIST,
258
PARSE_SERVER_INFO,
259
SERVER_LIST_SIZE,
260
/* misc server/nickname functions */
261
FIND_SERVER_REFNUM,
262
FIND_IN_SERVER_LIST,
263
PARSE_SERVER_INDEX,
264
SET_SERVER_REDIRECT,
265
GET_SERVER_REDIRECT,
266
CHECK_SERVER_REDIRECT,
267
FUDGE_NICKNAME,
268
RESET_NICKNAME,
269
/* various set server struct functions */
270
SET_SERVER_COOKIE,
271
SET_SERVER_FLAG,
272
SET_SERVER_MOTD,
273
SET_SERVER_OPERATOR,
274
SET_SERVER_ITSNAME,
275
SET_SERVER_VERSION,
276
SET_SERVER_LAG,
277
SET_SERVER_PASSWORD,
278
SET_SERVER_NICKNAME,
279
SET_SERVER2_8,
280
SET_SERVER_AWAY,
281
/* various get server struct functions */
282
GET_SERVER_COOKIE,
283
GET_SERVER_NICKNAME,
284
GET_SERVER_NAME,
285
GET_SERVER_ITSNAME,
286
GET_SERVER_MOTD,
287
GET_SERVER_OPERATOR,
288
GET_SERVER_VERSION,
289
GET_SERVER_FLAG,
290
GET_POSSIBLE_UMODES,
291
GET_SERVER_PORT,
292
GET_SERVER_LAG,
293
GET_SERVER2_8,
294
GET_UMODE,
295
GET_SERVER_AWAY,
296
GET_SERVER_NETWORK,
297
GET_PENDING_NICKNAME,
298
SERVER_DISCONNECT,
299
300
GET_SERVER_LIST,
301
GET_SERVER_CHANNELS,
302
303
SET_SERVER_LAST_CTCP_TIME,
304
GET_SERVER_LAST_CTCP_TIME,
305
SET_SERVER_TRACE_FLAG,
306
GET_SERVER_TRACE_FLAG,
307
GET_SERVER_READ,
308
GET_SERVER_LINKLOOK,
309
SET_SERVER_LINKLOOK,
310
GET_SERVER_LINKLOOK_TIME,
311
SET_SERVER_LINKLOOK_TIME,
312
GET_SERVER_TRACE_KILL,
313
SET_SERVER_TRACE_KILL,
314
ADD_SERVER_CHANNELS,
315
SET_SERVER_CHANNELS,
316
SEND_MSG_TO_CHANNELS,
317
SEND_MSG_TO_NICKS,
318
IS_SERVER_QUEUE,
319
/* glob.c */
320
BSD_GLOB,
321
BSD_GLOBFREE,
322
323
CONVERT_OUTPUT_FORMAT,
324
UPDATE_CLOCK,
325
BREAKARGS,
326
PASTEARGS,
327
USERAGE,
328
SEND_TEXT,
329
SET_LASTLOG_MSG_LEVEL,
330
SPLIT_CTCP,
331
RANDOM_STR,
332
DCC_PRINTF,
333
334
MY_ENCRYPT,
335
MY_DECRYPT,
336
PREPARE_COMMAND,
337
BUILD_STATUS,
338
FUNC_LOAD,
339
340
HOOK,
341
/* irc.c */
342
IRC_IO_FUNC,
343
IRC_EXIT_FUNC,
344
/* alias.c */
345
LOCK_STACK_FRAME,
346
UNLOCK_STACK_FRAME,
347
348
349
/* input.c */
350
FUNC_UPDATE_INPUT,
351
CURSOR_TO_INPUT,
352
SET_INPUT,
353
GET_INPUT,
354
SET_INPUT_PROMPT,
355
GET_INPUT_PROMPT,
356
ADDTABKEY,
357
GETTABKEY,
358
GETNEXTNICK,
359
GETCHANNICK,
360
LOOKUP_NICKCOMPLETION,
361
ADD_COMPLETION_TYPE,
362
363
/* module.c */
364
ADD_MODULE_PROC,
365
REMOVE_MODULE_PROC,
366
/* names.c */
367
IS_CHANOP,
368
IS_CHANNEL,
369
MAKE_CHANNEL,
370
IM_ON_CHANNEL,
371
IS_ON_CHANNEL,
372
ADD_CHANNEL,
373
ADD_TO_CHANNEL,
374
GET_CHANNEL_KEY,
375
FUNC_RECREATE_MODE,
376
FUNC_COMPRESS_MODES,
377
FUNC_GOT_OPS,
378
GET_CHANNEL_BANS,
379
GET_CHANNEL_MODE,
380
CLEAR_BANS,
381
REMOVE_CHANNEL,
382
REMOVE_FROM_CHANNEL,
383
RENAME_NICK,
384
GET_CHANNEL_OPER,
385
GET_CHANNEL_HALFOP,
386
FETCH_USERHOST,
387
GET_CHANNEL_VOICE,
388
CREATE_CHANNEL_LIST,
389
FLUSH_CHANNEL_STATS,
390
LOOKUP_CHANNEL,
391
392
FIND_NICKLIST_IN_CHANNELLIST,
393
ADD_NICKLIST_TO_CHANNELLIST,
394
NEXT_NICKLIST,
395
396
NEXT_NAMELIST,
397
ADD_NAME_TO_GENERICLIST,
398
FIND_NAME_IN_GENERICLIST,
399
ADD_WHOWAS_USERHOST_CHANNEL,
400
FIND_USERHOST_CHANNEL,
401
NEXT_USERHOST,
402
SORTED_NICKLIST,
403
CLEAR_SORTED_NICKLIST,
404
ADD_NAME_TO_FLOODLIST,
405
FIND_NAME_IN_FLOODLIST,
406
CLEAR_WHOWAS_HASH_TABLE,
407
REMOVE_OLDEST_WHOWAS_HASHLIST,
408
409
410
/* cset.c fset.c vars.c */
411
FGET_STRING_VAR,
412
FSET_STRING_VAR,
413
GET_WSET_STRING_VAR,
414
SET_WSET_STRING_VAR,
415
SET_CSET_INT_VAR,
416
GET_CSET_INT_VAR,
417
SET_CSET_STR_VAR,
418
GET_CSET_STR_VAR,
419
GET_DLLINT_VAR,
420
SET_DLLINT_VAR,
421
GET_DLLSTRING_VAR,
422
SET_DLLSTRING_VAR,
423
GET_INT_VAR,
424
SET_INT_VAR,
425
GET_STRING_VAR,
426
SET_STRING_VAR,
427
428
ADD_TIMER,
429
DELETE_TIMER,
430
DELETE_ALL_TIMERS,
431
432
/* sockets from misc.c */
433
ADD_SOCKETREAD,
434
ADD_SOCKETTIMEOUT,
435
CLOSE_SOCKETREAD,
436
GET_SOCKET,
437
SET_SOCKETFLAGS,
438
GET_SOCKETFLAGS,
439
GET_SOCKETINFO,
440
SET_SOCKETINFO,
441
SET_SOCKETWRITE,
442
CHECK_SOCKET,
443
READ_SOCKETS,
444
WRITE_SOCKETS,
445
GET_MAX_FD,
446
NEW_CLOSE,
447
NEW_OPEN,
448
DGETS,
449
450
451
/* screen.c */
452
PREPARE_DISPLAY,
453
ADD_TO_WINDOW,
454
SKIP_INCOMING_MIRC,
455
ADD_TO_SCREEN,
456
SPLIT_UP_LINE,
457
OUTPUT_LINE,
458
OUTPUT_WITH_COUNT,
459
SCROLL_WINDOW,
460
CURSOR_NOT_IN_DISPLAY,
461
CURSOR_IN_DISPLAY,
462
IS_CURSOR_IN_DISPLAY,
463
REPAINT_WINDOW,
464
CREATE_NEW_SCREEN,
465
CREATE_ADDITIONAL_SCREEN,
466
KILL_SCREEN,
467
XTERM_SETTITLE,
468
ADD_WAIT_PROMPT,
469
SKIP_CTL_C_SEQ,
470
STRIP_ANSI,
471
472
/* window.c */
473
FREE_FORMATS,
474
REMOVE_WINDOW_FROM_SCREEN,
475
SET_SCREENS_CURRENT_WINDOW,
476
NEW_WINDOW,
477
DELETE_WINDOW,
478
TRAVERSE_ALL_WINDOWS,
479
ADD_TO_INVISIBLE_LIST,
480
ADD_TO_WINDOW_LIST,
481
RECALCULATE_WINDOW_POSITIONS,
482
MOVE_WINDOW,
483
RESIZE_WINDOW,
484
REDRAW_ALL_WINDOWS,
485
REBALANCE_WINDOWS,
486
RECALCULATE_WINDOWS,
487
UPDATE_ALL_WINDOWS,
488
GOTO_WINDOW,
489
HIDE_BX_WINDOW,
490
FUNC_SWAP_LAST_WINDOW,
491
FUNC_SWAP_NEXT_WINDOW,
492
FUNC_SWAP_PREVIOUS_WINDOW,
493
SHOW_WINDOW,
494
GET_STATUS_BY_REFNUM,
495
GET_WINDOW_BY_DESC,
496
GET_WINDOW_BY_REFNUM,
497
GET_VISIBLE_BY_REFNUM,
498
GET_WINDOW_BY_NAME,
499
FUNC_NEXT_WINDOW,
500
FUNC_PREVIOUS_WINDOW,
501
UPDATE_WINDOW_STATUS,
502
UPDATE_ALL_STATUS,
503
UPDATE_WINDOW_STATUS_ALL,
504
STATUS_UPDATE,
505
SET_PROMPT_BY_REFNUM,
506
GET_PROMPT_BY_REFNUM,
507
QUERY_NICK, /* DEFUNCT */
508
QUERY_HOST, /* DEFUNCT */
509
QUERY_CMD, /* DEFUNCT */
510
GET_TARGET_BY_REFNUM,
511
GET_TARGET_CMD_BY_REFNUM,
512
GET_WINDOW_TARGET_BY_DESC,
513
IS_CURRENT_CHANNEL,
514
SET_CURRENT_CHANNEL_BY_REFNUM,
515
GET_CURRENT_CHANNEL_BY_REFNUM,
516
GET_REFNUM_BY_WINDOW,
517
IS_BOUND_TO_WINDOW,
518
GET_WINDOW_BOUND_CHANNEL,
519
IS_BOUND_ANYWHERE,
520
IS_BOUND,
521
UNBIND_CHANNEL,
522
GET_BOUND_CHANNEL,
523
GET_WINDOW_SERVER,
524
SET_WINDOW_SERVER,
525
WINDOW_CHECK_SERVERS,
526
CHANGE_WINDOW_SERVER,
527
SET_LEVEL_BY_REFNUM,
528
SET_SERVER_STAT_FLAG,
529
GET_SERVER_STAT_FLAG,
530
MESSAGE_TO,
531
CLEAR_WINDOW,
532
CLEAR_ALL_WINDOWS,
533
CLEAR_WINDOW_BY_REFNUM,
534
UNCLEAR_WINDOW_BY_REFNUM,
535
SET_SCROLL_LINES,
536
SET_CONTINUED_LINES,
537
CURRENT_REFNUM,
538
NUMBER_OF_WINDOWS_ON_SCREEN,
539
SET_SCROLLBACK_SIZE,
540
IS_WINDOW_NAME_UNIQUE,
541
GET_NICKLIST_BY_WINDOW,
542
SCROLLBACK_BACKWARDS_LINES,
543
SCROLLBACK_FORWARDS_LINES,
544
SCROLLBACK_FORWARDS,
545
SCROLLBACK_BACKWARDS,
546
SCROLLBACK_END,
547
SCROLLBACK_START,
548
SET_HOLD_MODE,
549
UNHOLD_WINDOWS,
550
FUNC_UNSTOP_ALL_WINDOWS,
551
RESET_LINE_CNT,
552
FUNC_TOGGLE_STOP_SCREEN,
553
FLUSH_EVERYTHING_BEING_HELD,
554
UNHOLD_A_WINDOW,
555
RECALCULATE_WINDOW_CURSOR,
556
MAKE_WINDOW_CURRENT,
557
CLEAR_SCROLLBACK,
558
SET_DISPLAY_TARGET,
559
RESET_DISPLAY_TARGET,
560
RESTORE_DISPLAY_TARGET,
561
SAVE_DISPLAY_TARGET,
562
563
IS_OTHER_FLOOD,
564
CHECK_FLOODING,
565
FLOOD_PROT,
566
/* expr.c */
567
568
NEXT_UNIT,
569
EXPAND_ALIAS,
570
PARSE_INLINE,
571
ALIAS_SPECIAL_CHAR,
572
PARSE_LINE,
573
PARSE_COMMAND_FUNC,
574
MAKE_LOCAL_STACK,
575
DESTROY_LOCAL_STACK,
576
577
/* dcc.c */
578
DCC_CREATE_FUNC,
579
FIND_DCC_FUNC,
580
ERASE_DCC_INFO,
581
ADD_DCC_BIND,
582
REMOVE_DCC_BIND,
583
REMOVE_ALL_DCC_BINDS,
584
GET_ACTIVE_COUNT,
585
GET_NUM_QUEUE,
586
ADD_TO_QUEUE,
587
DCC_FILESEND,
588
DCC_RESEND,
589
590
/* who.c */
591
WHOBASE,
592
ISONBASE,
593
USERHOSTBASE,
594
595
FIND_COMMAND_FUNC,
596
597
598
NICKNAME,
599
IRC_VERSION,
600
FROM_SERVER,
601
CONNECTED_TO_SERVER,
602
PRIMARY_SERVER,
603
PARSING_SERVER_INDEX,
604
NOW,
605
START_TIME,
606
IDLE_TIME,
607
608
LOADING_GLOBAL,
609
TARGET_WINDOW,
610
CURRENT_WINDOW,
611
INVISIBLE_LIST,
612
613
MAIN_SCREEN,
614
LAST_INPUT_SCREEN,
615
OUTPUT_SCREEN,
616
SCREEN_LIST,
617
IRCLOG_FP,
618
DOING_NOTICE,
619
LAST_SENT_MSG_BODY, /* NO LONGER USED */
620
SENT_NICK, /* NO LONGER USED */
621
622
DLL_FUNCTIONS,
623
DLL_NUMERIC,
624
DLL_COMMANDS,
625
DLL_VARIABLE,
626
DLL_CTCP,
627
DLL_WINDOW,
628
WINDOW_DISPLAY,
629
STATUS_UPDATE_FLAG,
630
TABKEY_ARRAY,
631
AUTOREPLY_ARRAY,
632
IDENTD_SOCKET,
633
634
VAR_TCL_INTERP,
635
LASTCLICKLINEDATA,
636
CONTEXTX,
637
CONTEXTY,
638
GUIIPC,
639
GUI_MUTEX_LOCK,
640
GUI_MUTEX_UNLOCK,
641
642
/* input output functions */
643
SERV_OPEN_FUNC,
644
SERV_INPUT_FUNC,
645
SERV_OUTPUT_FUNC,
646
SERV_CLOSE_FUNC,
647
CHECK_EXT_MAIL_STATUS,
648
CHECK_EXT_MAIL,
649
DEFAULT_OUTPUT_FUNCTION,
650
DEFAULT_STATUS_OUTPUT_FUNCTION,
651
652
/* names.c */
653
IS_HALFOP,
654
655
/* leave at the end */
656
NUMBER_OF_GLOBAL_FUNCTIONS
657
};
658
659
extern Function_ptr global_table[];
660
extern IrcCommand irc_command[];
661
662
#endif
663
664