+ if (a->modes & MODE_CHANOP) {
+ if (!(b->modes & MODE_CHANOP))
+ return -1;
+ else if ((b->modes & MODE_VOICE) != (a->modes & MODE_VOICE))
+ return (b->modes & MODE_VOICE) - (a->modes & MODE_VOICE);
+ else if (a->oplevel != b->oplevel)
+ return a->oplevel - b->oplevel;
+ } else if (b->modes & MODE_CHANOP)
+ return 1;
+ else if ((b->modes & MODE_VOICE) != (a->modes & MODE_VOICE))
+ return (b->modes & MODE_VOICE) - (a->modes & MODE_VOICE);
+
+ return irccasecmp(a->user->nick, b->user->nick);