- if (!topic) /* only asking for topic */
- {
- if (chptr->topic[0] == '\0')
- sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname); /* XXX DEAD */
- else
- {
- sendto_one(sptr, rpl_str(RPL_TOPIC), /* XXX DEAD */
- me.name, parv[0], chptr->chname, chptr->topic);
- sendto_one(sptr, rpl_str(RPL_TOPICWHOTIME), /* XXX DEAD */
- me.name, parv[0], chptr->chname,
- chptr->topic_nick, chptr->topic_time);
- }
- }
- else if (((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
- is_chan_op(sptr, chptr)) && topic)
- {
- /* setting a topic */
- ircd_strncpy(chptr->topic, topic, TOPICLEN);
- ircd_strncpy(chptr->topic_nick, sptr->name, NICKLEN);
- chptr->topic_time = CurrentTime;
- sendto_serv_butone(cptr, "%s%s " TOK_TOPIC " %s :%s", /* XXX DEAD */
- NumNick(sptr), chptr->chname, chptr->topic);
- sendto_channel_butserv(chptr, sptr, ":%s TOPIC %s :%s", /* XXX DEAD */
- parv[0], chptr->chname, chptr->topic);
- }
- else
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), /* XXX DEAD */
- me.name, parv[0], chptr->chname);