Changeset 4469e7e


Ignore:
Timestamp:
2010-06-03T22:17:11Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
2b8473c
Parents:
7b71feb
Message:

Support for the /topic command.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • irc_commands.c

    r7b71feb r4469e7e  
    529529}
    530530
    531 #if 0
    532531static void irc_cmd_topic( irc_t *irc, char **cmd )
    533532{
    534         char *channel = cmd[1];
    535         char *topic = cmd[2];
    536        
    537         if( topic )
    538         {
    539                 /* Send the topic */
    540                 struct groupchat *c = irc_chat_by_channel( irc, channel );
    541                 if( c && c->ic && c->ic->acc->prpl->chat_topic )
    542                         c->ic->acc->prpl->chat_topic( c, topic );
    543         }
    544         else
    545         {
    546                 /* Get the topic */
    547                 irc_topic( irc, channel );
    548         }
    549 }
    550 #endif
     533        irc_channel_t *ic = irc_channel_by_name( irc, cmd[1] );
     534        const char *new = cmd[2];
     535       
     536        if( ic == NULL )
     537        {
     538                irc_send_num( irc, 403, "%s :No such channel", cmd[1] );
     539        }
     540        else if( new )
     541        {
     542                if( ic->f->topic == NULL )
     543                        irc_send_num( irc, 482, "%s :Can't change this channel's topic", ic->name );
     544                else if( ic->f->topic( ic, new ) )
     545                        irc_send_topic( ic, TRUE );
     546        }
     547        else
     548        {
     549                irc_send_topic( ic, FALSE );
     550        }
     551}
    551552
    552553static void irc_cmd_away( irc_t *irc, char **cmd )
     
    637638#if 0
    638639        { "notice",      1, irc_cmd_privmsg,     IRC_CMD_LOGGED_IN },
     640#endif
    639641        { "topic",       1, irc_cmd_topic,       IRC_CMD_LOGGED_IN },
    640 #endif
    641642        { "oper",        2, irc_cmd_oper,        IRC_CMD_LOGGED_IN },
    642643        { "die",         0, NULL,                IRC_CMD_OPER_ONLY | IRC_CMD_TO_MASTER },
  • irc_im.c

    r7b71feb r4469e7e  
    477477static gboolean bee_irc_channel_chat_topic( irc_channel_t *ic, const char *new )
    478478{
    479         return TRUE;
     479        struct groupchat *c = ic->data;
     480        char *topic = g_strdup( new ); /* TODO: Need more const goodness here, sigh */
     481       
     482        if( c->ic->acc->prpl->chat_topic == NULL )
     483                irc_send_num( ic->irc, 482, "%s :IM network does not support channel topics", ic->name );
     484        else
     485        {
     486                c->ic->acc->prpl->chat_topic( c, topic );
     487                return TRUE;
     488        }
     489               
     490        return FALSE;
    480491}
    481492
Note: See TracChangeset for help on using the changeset viewer.