Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/dll/aim/toc/interface.c
1072 views
1
/*
2
* interface.c
3
*
4
* by Nadeem Riaz ([email protected])
5
*
6
* Probably should be renamed misc.c (oh well)
7
*/
8
9
#include <stdlib.h>
10
#include <stdio.h>
11
#include <time.h>
12
#include "toc.h"
13
14
int (*TOC_RAW_HANDLERS[30])(int, char *);
15
int (*TOC_HANDLERS[30])(int, char **);
16
17
void init_toc() {
18
int x;
19
groups = NULL;
20
permit = NULL;
21
deny = NULL;
22
buddy_chats = NULL;
23
invited_chats = NULL;
24
strcpy(aim_host,TOC_HOST);
25
aim_port = TOC_PORT;
26
strcpy(login_host,AUTH_HOST);
27
login_port = AUTH_PORT;
28
29
/* Init Handlers */
30
for (x=0;x<30;x++)
31
TOC_HANDLERS[x] = NULL;
32
for (x=0;x<30;x++)
33
TOC_RAW_HANDLERS[x] = NULL;
34
35
}
36
37
void init_lists() {
38
if ( groups == NULL ) {
39
groups = (LL) CreateLL();
40
SetFreeLLE(groups,&misc_free_group);
41
}
42
if ( permit == NULL )
43
permit = (LL) CreateLL();
44
if ( deny == NULL )
45
deny = (LL) CreateLL();
46
if ( buddy_chats == NULL ) {
47
buddy_chats = CreateLL();
48
SetFreeLLE(buddy_chats,&misc_free_buddy_chat);
49
}
50
if ( invited_chats == NULL ) {
51
invited_chats = CreateLL();
52
SetFreeLLE(invited_chats,&misc_free_invited_chats);
53
}
54
}
55
56
57
int install_handler(int type, int (*func)(int, char **)) {
58
TOC_HANDLERS[type] = func;
59
return 1;
60
}
61
62
int install_raw_handler(int type, int (*func)(int, char *)) {
63
TOC_RAW_HANDLERS[type] = func;
64
return 1;
65
}
66
67
68
int use_handler(int mode,int type, void *args) {
69
int ret = 0;
70
toc_debug_printf("use_handler: mode = %d type = %d",mode,type);
71
if ( mode == TOC_HANDLE ) {
72
if ( TOC_HANDLERS[type] == NULL )
73
toc_debug_printf("Error, no handler installed for %d type",type);
74
else
75
ret = TOC_HANDLERS[type](type, (char **) args);
76
} else if ( mode == TOC_RAW_HANDLE ) {
77
if ( TOC_RAW_HANDLERS[type] == NULL )
78
toc_debug_printf("Error, no raw handler installed for %d type",type);
79
else
80
ret = TOC_RAW_HANDLERS[type](type, (char *) args);
81
} else {
82
toc_debug_printf("Error: %d : unkown handle mode!",mode);
83
ret = -1;
84
}
85
return ret;
86
}
87
88