e1899aa396139b2cd025aa6adcc5114a587c0e54
[ircu2.10.12-pk.git] / include / list.h
1 #ifndef LIST_H
2 #define LIST_H
3
4 /*=============================================================================
5  * General defines
6  */
7
8 /*=============================================================================
9  * Macro's
10  */
11
12 /* ============================================================================
13  * Structures
14  */
15
16 struct SLink {
17   struct SLink *next;
18   union {
19     aClient *cptr;
20     struct Channel *chptr;
21     struct ConfItem *aconf;
22     char *cp;
23     struct {
24       char *banstr;
25       char *who;
26       time_t when;
27     } ban;
28   } value;
29   unsigned int flags;
30 };
31
32 struct DSlink {
33   struct DSlink *next;
34   struct DSlink *prev;
35   union {
36     aClient *cptr;
37     struct Channel *chptr;
38     struct ConfItem *aconf;
39     char *cp;
40   } value;
41 };
42
43 /*=============================================================================
44  * Proto types
45  */
46
47 extern void free_link(Link *lp);
48 extern Link *make_link(void);
49 extern Link *find_user_link(Link *lp, aClient *ptr);
50 extern void initlists(void);
51 extern void outofmemory(void);
52 extern aClient *make_client(aClient *from, int status);
53 extern void free_client(aClient *cptr);
54 extern struct User *make_user(aClient *cptr);
55 extern struct Server *make_server(aClient *cptr);
56 extern void free_user(struct User *user, aClient *cptr);
57 extern void remove_client_from_list(aClient *cptr);
58 extern void add_client_to_list(aClient *cptr);
59 extern Dlink *add_dlink(Dlink **lpp, aClient *cp);
60 extern void remove_dlink(Dlink **lpp, Dlink *lp);
61 extern struct ConfItem *make_conf(void);
62 extern void delist_conf(struct ConfItem *aconf);
63 extern void free_conf(struct ConfItem *aconf);
64 extern aGline *make_gline(int is_ipmask, char *host, char *reason, char *name,
65     time_t expire);
66 extern aGline *find_gline(aClient *cptr, aGline **pgline);
67 extern void free_gline(aGline *agline, aGline *pgline);
68 extern void send_listinfo(aClient *cptr, char *name);
69 #ifdef BADCHAN
70 extern int bad_channel(char *name);
71 #endif
72
73 #endif /* LIST_H */