X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/f14e4f83088ec0316a241872d798fe8c58fca061..30f7b947f03d97a3d526bbadb50b9dd71aba4117:/src/proto-common.c diff --git a/src/proto-common.c b/src/proto-common.c index 0cff85a..22ec8cc 100644 --- a/src/proto-common.c +++ b/src/proto-common.c @@ -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;