/*
* m_topic
- * parv[0] = sender prefix
* parv[1] = channel name
* parv[2] = new topic, if setting topic
*/
return 0;
}
- if((chptr->mode.mode & MODE_TOPICLIMIT) == 0 || is_chanop(msptr))
+ if((chptr->mode.mode & MODE_TOPICLIMIT) == 0 || is_any_op(msptr) || IsOverride(source_p))
{
char topic_info[USERHOST_REPLYLEN];
- rb_sprintf(topic_info, "%s!%s@%s",
- source_p->name, source_p->username, source_p->host);
+
+ 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());
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
}
else
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
- me.name, source_p->name, name);
+ get_id(&me, source_p),
+ get_id(source_p, source_p), name);
}
else if(MyClient(source_p))
{
/*
* ms_topic
- * parv[0] = sender prefix
* parv[1] = channel name
* parv[2] = topic_info
* parv[3] = topic_info time