+ if (mbuf->mb_dest & (MODEBUF_DEST_CHANNEL | MODEBUF_DEST_HACK4)) {
+ addstr[0] = '\0';
+ addstr_i = 0;
+ remstr[0] = '\0';
+ remstr_i = 0;
+
+ for (i = 0; i < mbuf->mb_count; i++) {
+ if (MB_TYPE(mbuf, i) & MODE_ADD) {
+ strptr = addstr;
+ strptr_i = &addstr_i;
+ } else {
+ strptr = remstr;
+ strptr_i = &remstr_i;
+ }
+
+ if (MB_TYPE(mbuf, i) & (MODE_CHANOP | MODE_VOICE))
+ build_string(strptr, strptr_i, MB_CLIENT(mbuf, i)->name, 0);
+ else if (MB_TYPE(mbuf, i) & (MODE_KEY | MODE_BAN))
+ build_string(strptr, strptr_i, MB_STRING(mbuf, i), 0);
+ else if (MB_TYPE(mbuf, i) & MODE_LIMIT)
+ build_string(strptr, strptr_i, limitbuf, 0);
+ }
+
+ if (mbuf->mb_dest & MODEBUF_DEST_CHANNEL)
+ sendto_channel_butserv(mbuf->mb_channel, mbuf->mb_source,
+ ":%s MODE %s %s%s%s%s", mbuf->mb_source->name,
+ mbuf->mb_channel->chname, addbuf, rembuf, addstr,
+ remstr);
+ if (mbuf->mb_dest & MODEBUF_DEST_HACK4)
+ sendto_op_mask(SNO_HACK4, "HACK(4): %s MODE %s %s%s%s%s [" TIME_T_FMT
+ "]", mbuf->mb_source->name, mbuf->mb_channel->chname,
+ addbuf, rembuf, addstr, remstr,
+ mbuf->mb_channel->creationtime);
+ }
+
+ if (mbuf->mb_dest & MODEBUF_DEST_SERVER) {
+ addstr[0] = '\0';
+ addstr_i = 0;
+ remstr[0] = '\0';
+ remstr_i = 0;
+