00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _EGG_MOD_SERVER_CHANNELS_H_
00023 #define _EGG_MOD_SERVER_CHANNELS_H_
00024
00025
00026 #define CHANNEL_WHOLIST 0x1
00027 #define CHANNEL_BANLIST 0x2
00028 #define CHANNEL_NAMESLIST 0x4
00029 #define CHANNEL_JOINED 0x8
00030
00031
00032 #define CHANNEL_STATIC 0x1
00033 #define CHANNEL_INACTIVE 0x2
00034
00035 #define BOT_ISOP(chanptr) (((chanptr)->status & CHANNEL_JOINED) && flag_match_single_char(&((chanptr)->bot->mode), 'o'))
00036 #define BOT_ISHALFOP(chanptr) (((chanptr)->status & CHANNEL_JOINED) && flag_match_single_char(&((chanptr)->bot->mode), 'h'))
00037 #define BOT_CAN_SET_MODES(chanptr) (((chanptr)->status & CHANNEL_JOINED) && (flag_match_single_char(&((chanptr)->bot->mode), 'o') \
00038 || flag_match_single_char(&((chanptr)->bot->mode), 'h')))
00039
00040 typedef struct {
00041 char *nick;
00042 char *uhost;
00043 int ref_count;
00044 } uhost_cache_entry_t;
00045
00046
00047 extern channel_t *channel_head;
00048 extern int nchannels;
00049
00050
00051 extern void channel_init();
00052 extern void channel_reset();
00053 extern void channel_destroy();
00054 extern void channel_free(channel_t *chan);
00055 extern channel_t *channel_probe(const char *chan_name, int create);
00056 extern channel_t *channel_lookup(const char *chan_name);
00057 extern channel_t *channel_add(const char *name);
00058 extern int channel_remove(const char *name);
00059 extern int channel_load(const char *fname);
00060 extern int channel_save(const char *fname);
00061 extern int channel_set(channel_t *chan, const char *value, ...);
00062 extern int channel_get(channel_t *chan, char **strptr, ...);
00063 extern int channel_get_int(channel_t *chan, int *intptr, ...);
00064 extern xml_node_t *channel_get_node(channel_t *chan, ...);
00065 extern int channel_mode(const char *chan_name, const char *nick, char *buf);
00066 extern int channel_mode_arg(const char *chan_name, int type, const char **value);
00067 extern channel_mode_arg_t *channel_get_arg(channel_t *chan, int type);
00068 extern channel_mask_list_t *channel_get_mask_list(channel_t *chan, int type);
00069 extern void channel_add_mask(channel_t *chan, char type, const char *mask, const char *set_by, int time);
00070 extern void channel_del_mask(channel_t *chan, char type, const char *mask);
00071
00072
00073 extern void channel_events_init();
00074 extern void channel_events_destroy();
00075 extern void channel_free_online(channel_t *chan);
00076 extern void channel_on_quit(const char *nick, const char *uhost, user_t *u);
00077 extern void channel_on_connect();
00078
00079
00080 extern void uhost_cache_init();
00081 extern void uhost_cache_reset();
00082 extern void uhost_cache_destroy();
00083 extern char *uhost_cache_lookup(const char *nick);
00084 extern void uhost_cache_addref(const char *nick, const char *uhost);
00085 extern void uhost_cache_decref(const char *nick);
00086 void uhost_cache_swap(const char *old_nick, const char *new_nick);
00087
00088 #endif