- char topic_info[USERHOST_REPLYLEN];
- ircsprintf(topic_info, "%s!%s@%s",
- source_p->name, source_p->username, source_p->host);
- set_channel_topic(chptr, parv[2], topic_info, CurrentTime);
+ if(IsOverride(source_p))
+ {
+ sendto_wallops_flags(UMODE_WALLOP, &me,
+ "%s is overriding TOPIC on [%s]",
+ get_oper_name(source_p), chptr->chname);
+ sendto_server(NULL, chptr, NOCAPS, NOCAPS,
+ ":%s WALLOPS :%s is overriding TOPIC on [%s]",
+ me.name, get_oper_name(source_p), chptr->chname);
+ }
+ else
+ {
+ sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
+ me.name, source_p->name, parv[1]);
+ return 0;
+ }
+
+ }
+
+ if(ConfigChannel.host_in_topic)
+ rb_sprintf(topic_info, "%s!%s@%s",
+ source_p->name, source_p->username, source_p->host);
+ else
+ rb_strlcpy(topic_info, source_p->name, sizeof(topic_info));
+
+ set_channel_topic(chptr, parv[2], topic_info, rb_current_time());