/* proto-common.c - common IRC protocol parsing/sending support
* Copyright 2000-2004 srvx Development Team
*
- * This file is part of srvx.
+ * This file is part of x3.
*
* srvx is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "ioset.h"
#include "log.h"
#include "nickserv.h"
+#include "shun.h"
#include "timeq.h"
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
{
if (mcf_used == mcf_size) {
if (mcf_size) {
- mcf_size <<= 1;
- mcf_list = realloc(mcf_list, mcf_size*sizeof(mode_change_func_t));
+ mcf_size <<= 1;
+ mcf_list = realloc(mcf_list, mcf_size*sizeof(mode_change_func_t));
} else {
- mcf_size = 8;
- mcf_list = malloc(mcf_size*sizeof(mode_change_func_t));
+ mcf_size = 8;
+ mcf_list = malloc(mcf_size*sizeof(mode_change_func_t));
}
}
mcf_list[mcf_used++] = handler;
break;
}
break;
+ /* XXX Hack: this is the stupedest use of switch iv ever seen.
+ * you have to compare for EVERY POSSIBLE COMBINATION of bitmask
+ * because switch does only full comparison. This needs redone as if/else.
+ **/
case MODE_CHANOP:
case MODE_HALFOP:
case MODE_VOICE:
+ case MODE_VOICE|MODE_CHANOP:
+ case MODE_VOICE|MODE_HALFOP:
+ case MODE_CHANOP|MODE_HALFOP:
case MODE_VOICE|MODE_CHANOP|MODE_HALFOP:
case MODE_REMOVE|MODE_CHANOP:
case MODE_REMOVE|MODE_HALFOP:
case MODE_REMOVE|MODE_VOICE:
+ case MODE_REMOVE|MODE_VOICE|MODE_CHANOP:
+ case MODE_REMOVE|MODE_VOICE|MODE_HALFOP:
+ case MODE_REMOVE|MODE_CHANOP|MODE_HALFOP:
case MODE_REMOVE|MODE_VOICE|MODE_CHANOP|MODE_HALFOP:
if (change->args[ii].mode & MODE_REMOVE)
change->args[ii].u.member->modes &= ~change->args[ii].mode;
mask = ~0 << masklen;
masked_ip = ntohl(user->ip.s_addr) & mask;
hostname = alloca(32);
- if (options & GENMASK_SRVXMASK) {
+ if (options & GENMASK_X3MASK) {
sprintf(hostname, "%d.%d.%d.%d/%d", (masked_ip>>24)&0xFF, (masked_ip>>16)&0xFF, (masked_ip>>8)&0xFF, masked_ip&0xFF, masklen);
} else {
int ofs = 0;