joinbuf_init(&join, acptr, acptr, JOINBUF_TYPE_JOIN, 0, 0);
joinbuf_init(&create, acptr, acptr, JOINBUF_TYPE_CREATE, 0, TStime());
- flags = (chptr->users == 0) ? CHFL_CHANOP : CHFL_DEOPPED;
- if(chptr) joinbuf_join(&join, chptr, flags);
+ flags = (chptr->users == 0) ? CHFL_CHANOP | CHFL_CHANNEL_MANAGER : CHFL_DEOPPED;
+ if(chptr->users) joinbuf_join(&join, chptr, flags);
else joinbuf_join(&create, chptr, flags);
/* Send information to the user. */
send_reply(acptr, RPL_TOPIC, chptr->chname, chptr->topic);
send_reply(acptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick, chptr->topic_time);
}
- do_names(acptr, chptr, NAMES_ALL|NAMES_EON);
+ do_names(acptr, chptr, NAMES_ALL|NAMES_EON|(((chptr->mode.mode & MODE_AUDITORIUM) && !(flags & CHFL_CHANOP)) ? NAMES_OPS : 0));
joinbuf_flush(&join);
joinbuf_flush(&create);
send_reply(acptr, RPL_TOPIC, chptr->chname, chptr->topic);
send_reply(acptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick, chptr->topic_time);
}
- do_names(acptr, chptr, NAMES_ALL|NAMES_EON);
+ do_names(acptr, chptr, NAMES_ALL|NAMES_EON|(((chptr->mode.mode & MODE_AUDITORIUM) && !(flags & CHFL_CHANOP)) ? NAMES_OPS : 0));
joinbuf_flush(&join);
joinbuf_flush(&create);