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