X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/ceafd592b7c084e0857902f0dd4132db97b2abf7..30f7b947f03d97a3d526bbadb50b9dd71aba4117:/src/proto-common.c diff --git a/src/proto-common.c b/src/proto-common.c index 48e3610..22ec8cc 100644 --- a/src/proto-common.c +++ b/src/proto-common.c @@ -1,7 +1,7 @@ /* 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 @@ -626,13 +626,23 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_ch 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; @@ -737,7 +747,7 @@ generate_hostmask(struct userNode *user, int options) 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;