void irc_send_join(irc_channel_t *ic, irc_user_t *iu) { irc_t *irc = ic->irc; if (irc->caps & CAP_EXTENDED_JOIN) { irc_write(irc, ":%s!%s@%s JOIN %s * :%s", iu->nick, iu->user, iu->host, ic->name, iu->fullname); } else { irc_write(irc, ":%s!%s@%s JOIN :%s", iu->nick, iu->user, iu->host, ic->name); } if (iu == irc->user) { if (ic->topic && *ic->topic) { irc_send_topic(ic, FALSE); } irc_send_names(ic); } }
static void irc_cmd_topic( irc_t *irc, char **cmd ) { irc_channel_t *ic = irc_channel_by_name( irc, cmd[1] ); const char *new = cmd[2]; if( ic == NULL ) { irc_send_num( irc, 403, "%s :No such channel", cmd[1] ); } else if( new ) { if( ic->f->topic == NULL ) irc_send_num( irc, 482, "%s :Can't change this channel's topic", ic->name ); else if( ic->f->topic( ic, new ) ) irc_send_topic( ic, TRUE ); } else {