- The big forward port. I probably broke lots of stuff, so please look over any
[ircu2.10.12-pk.git] / include / s_user.h
1 /*
2  * s_user.h
3  *
4  * $Id$
5  */
6 #ifndef INCLUDED_s_user_h
7 #define INCLUDED_s_user_h
8 #ifndef INCLUDED_sys_types_h
9 #include <sys/types.h>
10 #define INCLUDED_sys_types_h
11 #endif
12
13 struct Client;
14 struct User;
15 struct Channel;
16 struct MsgBuf;
17 struct Flags;
18
19 /*
20  * Macros
21  */
22
23 /*
24  * Nick flood limit
25  * Minimum time between nick changes.
26  * (The first two changes are allowed quickly after another however).
27  */
28 #define NICK_DELAY 30
29
30 /*
31  * Target flood time.
32  * Minimum time between target changes.
33  * (MAXTARGETS are allowed simultaneously however).
34  * Its set to a power of 2 because we devide through it quite a lot.
35  */
36 #define TARGET_DELAY 128
37
38 /* return values for hunt_server() */
39
40 #define HUNTED_NOSUCH   (-1)    /* if the hunted server is not found */
41 #define HUNTED_ISME     0       /* if this server should execute the command */
42 #define HUNTED_PASS     1       /* if message passed onwards successfully */
43
44 /* send sets for send_umode() */
45 #define ALL_UMODES 0  /* both local and global user modes */
46 #define SEND_UMODES 1  /* global user modes only */
47 #define SEND_UMODES_BUT_OPER 2  /* global user modes except for FLAG_OPER */
48
49 /* used when sending to #mask or $mask */
50
51 #define MATCH_SERVER  1
52 #define MATCH_HOST    2
53
54 #define COOKIE_VERIFIED 0xffffffff
55
56 extern struct SLink *opsarray[];
57
58 typedef void (*InfoFormatter)(struct Client* who, struct Client *sptr, struct MsgBuf* buf);
59
60 /*
61  * Prototypes
62  */
63 extern struct User* make_user(struct Client *cptr);
64 extern void         free_user(struct User *user);
65 extern int          register_user(struct Client* cptr, struct Client* sptr,
66                                   const char* nick, char* username);
67
68 extern void         user_count_memory(size_t* count_out, size_t* bytes_out);
69
70 extern int set_nick_name(struct Client* cptr, struct Client* sptr,
71                          const char* nick, int parc, char* parv[]);
72 extern void send_umode_out(struct Client* cptr, struct Client* sptr,
73                           struct Flags* old, int prop);
74 extern int whisper(struct Client* source, const char* nick,
75                    const char* channel, const char* text, int is_notice);
76 extern void send_user_info(struct Client* to, char* names, int rpl,
77                            InfoFormatter fmt);
78 extern int add_silence(struct Client* sptr, const char* mask);
79
80 extern int hide_hostmask(struct Client *cptr, unsigned int flags);
81 extern int set_user_mode(struct Client *cptr, struct Client *sptr,
82                          int parc, char *parv[]);
83 extern int is_silenced(struct Client *sptr, struct Client *acptr);
84 extern int hunt_server(int, struct Client *cptr, struct Client *sptr,
85     char *command, int server, int parc, char *parv[]);
86 extern int hunt_server_cmd(struct Client *from, const char *cmd,
87                            const char *tok, struct Client *one,
88                            int MustBeOper, const char *pattern, int server,
89                            int parc, char *parv[]);
90 extern int hunt_server_prio_cmd(struct Client *from, const char *cmd,
91                                 const char *tok, struct Client *one,
92                                 int MustBeOper, const char *pattern,
93                                 int server, int parc, char *parv[]);
94 extern struct Client* next_client(struct Client* next, const char* ch);
95 extern char *umode_str(struct Client *cptr);
96 extern void send_umode(struct Client *cptr, struct Client *sptr,
97                        struct Flags *old, int sendset);
98 extern int del_silence(struct Client *sptr, char *mask);
99 extern void set_snomask(struct Client *, unsigned int, int);
100 extern int is_snomask(char *);
101 extern int check_target_limit(struct Client *sptr, void *target, const char *name,
102     int created);
103 extern void add_target(struct Client *sptr, void *target);
104 extern unsigned int umode_make_snomask(unsigned int oldmask, char *arg,
105                                        int what);
106 extern int send_supported(struct Client *cptr);
107
108 #define NAMES_ALL 1 /* List all users in channel */
109 #define NAMES_VIS 2 /* List only visible users in non-secret channels */
110 #define NAMES_EON 4 /* Add an 'End Of Names' reply to the end */
111
112 void do_names(struct Client* sptr, struct Channel* chptr, int filter);
113
114 #endif /* INCLUDED_s_user_h */