1 |
/* General prototypes and external variable declarations. |
2 |
* |
3 |
* IRC Services is copyright (c) 1996-2009 Andrew Church. |
4 |
* E-mail: <achurch@achurch.org> |
5 |
* Parts written by Andrew Kempe and others. |
6 |
* This program is free but copyrighted software; see the file GPL.txt for |
7 |
* details. |
8 |
*/ |
9 |
|
10 |
#ifndef EXTERN_H |
11 |
#define EXTERN_H |
12 |
|
13 |
|
14 |
#define E extern /* This is used in other files as well */ |
15 |
|
16 |
|
17 |
/**** actions.c ****/ |
18 |
|
19 |
extern int actions_init(int, char **); |
20 |
extern void actions_cleanup(void); |
21 |
extern int bad_password(const char *, User *, const char *); |
22 |
extern void clear_channel(Channel *, int, const void *); |
23 |
extern const char *set_clear_channel_sender(const char *); |
24 |
extern void kill_user(const char *, const char *, const char *); |
25 |
extern void set_topic(const char *, Channel *, const char *, |
26 |
const char *, time_t); |
27 |
extern void set_cmode(const char *, Channel *, ...); |
28 |
|
29 |
|
30 |
/**** channels.c ****/ |
31 |
|
32 |
extern Channel *get_channel(const char *); |
33 |
extern Channel *first_channel(void); |
34 |
extern Channel *next_channel(void); |
35 |
|
36 |
extern int channel_init(int, char **); |
37 |
extern void channel_cleanup(void); |
38 |
extern void get_channel_stats(long *, long *); |
39 |
|
40 |
extern Channel *chan_adduser(User *, const char *, int32); |
41 |
extern void chan_deluser(User *, Channel *); |
42 |
extern int chan_has_ban(const char *, const char *); |
43 |
|
44 |
extern void do_cmode(const char *, int, char **); |
45 |
extern void do_topic(const char *, int, char **); |
46 |
|
47 |
|
48 |
/**** compat.c ****/ |
49 |
|
50 |
#if !HAVE_HSTRERROR |
51 |
# undef hstrerror |
52 |
extern const char *hstrerror(int h_errnum); |
53 |
#endif |
54 |
|
55 |
#if !HAVE_STRTOK |
56 |
# undef strtok |
57 |
extern char *strtok(char *str, const char *delim); |
58 |
#endif |
59 |
#if !HAVE_STRICMP && !HAVE_STRCASECMP |
60 |
# undef stricmp |
61 |
# undef strnicmp |
62 |
extern int stricmp(const char *s1, const char *s2); |
63 |
extern int strnicmp(const char *s1, const char *s2, size_t len); |
64 |
#endif |
65 |
#if !HAVE_STRDUP && !MEMCHECKS |
66 |
# undef strdup |
67 |
extern char *strdup(const char *s); |
68 |
#endif |
69 |
#if !HAVE_STRSPN |
70 |
# undef strspn |
71 |
# undef strcspn |
72 |
extern size_t strspn(const char *s, const char *accept); |
73 |
extern size_t strcspn(const char *s, const char *reject); |
74 |
#endif |
75 |
#if !HAVE_STRERROR |
76 |
# undef strerror |
77 |
extern char *strerror(int errnum); |
78 |
#endif |
79 |
#if !HAVE_STRSIGNAL |
80 |
# undef strsignal |
81 |
extern char *strsignal(int signum); |
82 |
#endif |
83 |
|
84 |
|
85 |
/**** init.c ****/ |
86 |
|
87 |
extern char **LoadModules; |
88 |
extern int LoadModules_count; |
89 |
extern char **LoadLanguageText; |
90 |
extern int LoadLanguageText_count; |
91 |
|
92 |
extern char *RemoteServer; |
93 |
extern int32 RemotePort; |
94 |
extern char *RemotePassword; |
95 |
extern char *LocalHost; |
96 |
extern int32 LocalPort; |
97 |
|
98 |
extern char *ServerName; |
99 |
extern char *ServerDesc; |
100 |
extern char *ServiceUser; |
101 |
extern char *ServiceHost; |
102 |
|
103 |
extern char *LogFilename; |
104 |
extern char PIDFilename[PATH_MAX + 1]; |
105 |
extern char *MOTDFilename; |
106 |
extern char *LockFilename; |
107 |
|
108 |
extern int16 DefTimeZone; |
109 |
|
110 |
extern int NoBouncyModes; |
111 |
extern int NoSplitRecovery; |
112 |
extern int StrictPasswords; |
113 |
extern int NoAdminPasswordCheck; |
114 |
extern int32 BadPassLimit; |
115 |
extern time_t BadPassTimeout; |
116 |
extern int32 BadPassWarning; |
117 |
extern int32 IgnoreDecay; |
118 |
extern double IgnoreThreshold; |
119 |
extern time_t UpdateTimeout; |
120 |
extern time_t WarningTimeout; |
121 |
extern int32 ReadTimeout; |
122 |
extern int32 TimeoutCheck; |
123 |
extern time_t PingFrequency; |
124 |
extern int32 MergeChannelModes; |
125 |
extern int32 TotalNetBufferSize; |
126 |
extern int32 NetBufferSize; |
127 |
extern int32 NetBufferLimitInactive; |
128 |
extern int32 NetBufferLimitIgnore; |
129 |
|
130 |
extern char *EncryptionType; |
131 |
extern char *GuestNickPrefix; |
132 |
extern char **RejectEmail; |
133 |
extern int RejectEmail_count; |
134 |
extern int32 ListMax; |
135 |
extern int LogMaxUsers; |
136 |
extern int EnableGetpass; |
137 |
extern int WallAdminPrivs; |
138 |
|
139 |
extern int introduce_user(const char *user); |
140 |
extern int init(int ac, char **av); |
141 |
extern int reconfigure(void); |
142 |
extern void cleanup(void); |
143 |
|
144 |
|
145 |
/**** ignore.c ****/ |
146 |
|
147 |
extern void ignore_init(User *); |
148 |
extern void ignore_update(User *, uint32); |
149 |
|
150 |
|
151 |
/**** main.c ****/ |
152 |
|
153 |
extern const char *services_dir; |
154 |
extern int debug; |
155 |
extern int readonly; |
156 |
extern int nofork; |
157 |
extern int noexpire; |
158 |
extern int noakill; |
159 |
extern int forceload; |
160 |
extern int encrypt_all; |
161 |
|
162 |
extern int linked; |
163 |
extern int quitting; |
164 |
extern int delayed_quit; |
165 |
extern int restart; |
166 |
extern char quitmsg[BUFSIZE]; |
167 |
extern char inbuf[BUFSIZE]; |
168 |
extern Socket *servsock; |
169 |
extern int save_data; |
170 |
extern time_t start_time; |
171 |
extern int openlog_failed, openlog_errno; |
172 |
extern int cb_connect; |
173 |
extern int cb_save_complete; |
174 |
|
175 |
extern void connect_callback(Socket *, void *); |
176 |
extern void disconnect_callback(Socket *, void *); |
177 |
extern void readfirstline_callback(Socket *, void *); |
178 |
extern void readline_callback(Socket *, void *); |
179 |
|
180 |
extern int lock_data(void); |
181 |
extern int is_data_locked(void); |
182 |
extern int unlock_data(void); |
183 |
extern void save_data_now(void); |
184 |
|
185 |
|
186 |
/**** messages.c ****/ |
187 |
|
188 |
extern int allow_ignore; |
189 |
/* rest is in messages.h */ |
190 |
|
191 |
|
192 |
/**** misc.c ****/ |
193 |
|
194 |
extern unsigned char irc_lowertable[256]; |
195 |
extern unsigned char irc_tolower(char c); |
196 |
#define irc_tolower(c) (irc_lowertable[(uint8)(c)]) /* for speed */ |
197 |
extern int irc_stricmp(const char *s1, const char *s2); |
198 |
extern int irc_strnicmp(const char *s1, const char *s2, int max); |
199 |
extern char *strscpy(char *d, const char *s, size_t len); |
200 |
extern char *strmove(char *d, const char *s); |
201 |
extern char *stristr(const char *s1, const char *s2); |
202 |
extern char *strupper(char *s); |
203 |
extern char *strlower(char *s); |
204 |
extern char *strnrepl(char *s, int32 size, const char *old, const char *new); |
205 |
extern char *strtok_remaining(void); |
206 |
/* strbcpy(): strscpy() for a char array destination; uses sizeof(d) as |
207 |
* the size to copy */ |
208 |
#define strbcpy(d,s) strscpy((d), (s), sizeof(d)) |
209 |
|
210 |
extern char *merge_args(int argc, char **argv); |
211 |
|
212 |
extern int match_wild(const char *pattern, const char *str); |
213 |
extern int match_wild_nocase(const char *pattern, const char *str); |
214 |
|
215 |
extern unsigned char valid_nick_table[0x10000]; |
216 |
extern unsigned char valid_chan_table[0x10000]; |
217 |
extern int valid_nick(const char *str); |
218 |
extern int valid_chan(const char *str); |
219 |
extern int valid_domain(const char *str); |
220 |
extern int valid_email(const char *str); |
221 |
extern int valid_url(const char *str); |
222 |
extern int rejected_email(const char *email); |
223 |
|
224 |
extern uint32 time_msec(void); |
225 |
extern time_t strtotime(const char *str, char **endptr); |
226 |
extern int dotime(const char *s); |
227 |
|
228 |
extern uint8 *pack_ip(const char *ipaddr); |
229 |
extern char *unpack_ip(const uint8 * ip); |
230 |
extern uint8 *pack_ip6(const char *ipaddr); |
231 |
extern char *unpack_ip6(const uint8 * ip); |
232 |
|
233 |
extern int encode_base64(const void *in, int insize, char *out, int outsize); |
234 |
extern int decode_base64(const char *in, void *out, int outsize); |
235 |
|
236 |
typedef int (*range_callback_t) (int num, va_list args); |
237 |
extern int process_numlist(const char *numstr, int *count_ret, |
238 |
range_callback_t callback, ...); |
239 |
|
240 |
extern long atolsafe(const char *s, long min, long max); |
241 |
|
242 |
|
243 |
/**** process.c ****/ |
244 |
|
245 |
extern int split_buf(char *buf, char ***argv, int colon_special); |
246 |
extern int process_init(int ac, char **av); |
247 |
extern void process_cleanup(void); |
248 |
extern void process(void); |
249 |
|
250 |
|
251 |
/**** servers.c ****/ |
252 |
|
253 |
extern Server *get_server(const char *servername); |
254 |
extern Server *first_server(void); |
255 |
extern Server *next_server(void); |
256 |
|
257 |
extern int server_init(int ac, char **av); |
258 |
extern void server_cleanup(void); |
259 |
extern void get_server_stats(long *nservers, long *memuse); |
260 |
extern void do_server(const char *source, int ac, char **av); |
261 |
extern void do_squit(const char *source, int ac, char **av); |
262 |
|
263 |
|
264 |
/**** signals.c ****/ |
265 |
|
266 |
extern void init_signals(void); |
267 |
extern void do_sigsetjmp(void *bufptr); /* actually a sigjmp_buf * */ |
268 |
extern void enable_signals(void); |
269 |
extern void disable_signals(void); |
270 |
|
271 |
|
272 |
/**** users.c ****/ |
273 |
|
274 |
extern int32 usercnt, opcnt; |
275 |
|
276 |
extern User *get_user(const char *); |
277 |
extern User *first_user(void); |
278 |
extern User *next_user(void); |
279 |
|
280 |
extern void quit_user(User *, const char *, int); |
281 |
extern int user_init(int, char **); |
282 |
extern void user_cleanup(void); |
283 |
extern void get_user_stats(long *, long *); |
284 |
|
285 |
extern int do_nick(const char *, int, char **); |
286 |
extern void do_join(const char *, int, char **); |
287 |
extern void do_part(const char *, int, char **); |
288 |
extern void do_kick(const char *, int, char **); |
289 |
extern void do_umode(const char *, int, char **); |
290 |
extern void do_quit(const char *, int, char **); |
291 |
extern void do_kill(const char *, int, char **); |
292 |
|
293 |
extern Channel *join_channel(User *, const char *, int32); |
294 |
extern int part_channel(User *, const char *, int, |
295 |
const char *, const char *); |
296 |
extern void part_all_channels(User *); |
297 |
|
298 |
extern int is_oper(const User *); |
299 |
extern Channel *is_on_chan(const User *, const char *); |
300 |
extern int is_chanop(const User *, const char *); |
301 |
extern int is_voiced(const User *, const char *); |
302 |
|
303 |
extern int match_usermask(const char *, const User *); |
304 |
extern void split_usermask(const char *, char **, char **, |
305 |
char **); |
306 |
extern char *create_mask(const User *, int); |
307 |
|
308 |
extern char *make_guest_nick(void); |
309 |
extern int is_guest_nick(const char *); |
310 |
#endif /* EXTERN_H */ |
311 |
|
312 |
/* |
313 |
* Local variables: |
314 |
* c-file-style: "stroustrup" |
315 |
* c-file-offsets: ((case-label . *) (statement-case-intro . *)) |
316 |
* indent-tabs-mode: nil |
317 |
* End: |
318 |
* |
319 |
* vim: expandtab shiftwidth=4: |
320 |
*/ |