#include "spamserv.h"
#include "shun.h"
#include "timeq.h"
+#include "version.h"
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
log_module(MAIN_LOG, LOG_ERROR, "Could not find VERSION origin user %s", origin);
return 0;
}
- irc_numeric(user, 351, "%s %s %s", PACKAGE_TARNAME, PACKAGE_VERSION, self->name);
+ irc_numeric(user, 351, "%s %s+[%s] %s", PACKAGE_TARNAME, PACKAGE_VERSION, cvs_version, self->name);
return 1;
}
}
static mode_change_func_t *mcf_list;
+static void **mcf_list_extra;
static unsigned int mcf_size = 0, mcf_used = 0;
void
-reg_mode_change_func(mode_change_func_t handler)
+reg_mode_change_func(mode_change_func_t handler, void *extra)
{
if (mcf_used == mcf_size) {
if (mcf_size) {
mcf_size <<= 1;
mcf_list = realloc(mcf_list, mcf_size*sizeof(mode_change_func_t));
+ mcf_list_extra = realloc(mcf_list_extra, mcf_size*sizeof(void*));
} else {
mcf_size = 8;
mcf_list = malloc(mcf_size*sizeof(mode_change_func_t));
+ mcf_list_extra = malloc(mcf_size*sizeof(void*));
}
}
- mcf_list[mcf_used++] = handler;
+ mcf_list[mcf_used] = handler;
+ mcf_list_extra[mcf_used++] = extra;
}
static oper_func_t *of_list;
mod_chanmode_apply(who, channel, change);
if (flags & MC_NOTIFY)
for (ii = 0; ii < mcf_used; ++ii)
- mcf_list[ii](channel, who, change);
+ mcf_list[ii](channel, who, change, mcf_list_extra[ii]);
mod_chanmode_free(change);
return 1;
}
}
static user_mode_func_t *um_list;
+static void **um_list_extra;
static unsigned int um_size = 0, um_used = 0;
void
-reg_user_mode_func(user_mode_func_t handler)
+reg_user_mode_func(user_mode_func_t handler, void *extra)
{
if (um_used == um_size) {
if (um_size) {
um_size <<= 1;
um_list = realloc(um_list, um_size*sizeof(user_mode_func_t));
+ um_list_extra = realloc(um_list_extra, um_size*sizeof(void*));
} else {
um_size = 8;
um_list = malloc(um_size*sizeof(user_mode_func_t));
+ um_list_extra = malloc(um_size*sizeof(void*));
}
}
- um_list[um_used++] = handler;
+ um_list[um_used] = handler;
+ um_list_extra[um_used++] = extra;
}
void
{
unsigned int n;
for (n=0; n<um_used; n++) {
- um_list[n](user, mode_change);
+ um_list[n](user, mode_change, um_list_extra[n]);
}
}
static channel_mode_func_t *cm_list;
+static void **cm_list_extra;
static unsigned int cm_size = 0, cm_used = 0;
void
-reg_channel_mode_func(channel_mode_func_t handler)
+reg_channel_mode_func(channel_mode_func_t handler, void *extra)
{
if (cm_used == cm_size) {
if (cm_size) {
cm_size <<= 1;
cm_list = realloc(cm_list, cm_size*sizeof(channel_mode_func_t));
+ cm_list_extra = realloc(cm_list_extra, cm_size*sizeof(void*));
} else {
cm_size = 8;
cm_list = malloc(cm_size*sizeof(channel_mode_func_t));
+ cm_list_extra = malloc(cm_size*sizeof(void*));
}
}
- cm_list[cm_used++] = handler;
+ cm_list[cm_used] = handler;
+ cm_list_extra[cm_used++] = extra;
}
void
{
unsigned int n;
for (n=0; n<cm_used; n++) {
- cm_list[n](who, channel, modes, argc);
+ cm_list[n](who, channel, modes, argc, cm_list_extra[n]);
}
}