Changeset c7eb771 for root_commands.c


Ignore:
Timestamp:
2010-06-28T00:18:40Z (9 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
ab6006c
Parents:
1c40aa7
Message:

Hacky support for short subcommands (i.e. "ac l" instead of "account list".).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • root_commands.c

    r1c40aa7 rc7eb771  
    323323{
    324324        account_t *a;
     325        int len;
    325326       
    326327        if( global.conf->authmode == AUTHMODE_REGISTERED && !( irc->status & USTATUS_IDENTIFIED ) )
     
    330331        }
    331332       
    332         if( g_strcasecmp( cmd[1], "add" ) == 0 )
     333        len = strlen( cmd[1] );
     334       
     335        if( len >= 1 && g_strncasecmp( cmd[1], "add", len ) == 0 )
    333336        {
    334337                struct prpl *prpl;
     
    356359                return;
    357360        }
    358         else if( g_strcasecmp( cmd[1], "list" ) == 0 )
     361        else if( len >= 1 && g_strncasecmp( cmd[1], "list", len ) == 0 )
    359362        {
    360363                int i = 0;
     
    388391                /* Try the following two only if cmd[2] == NULL */
    389392        }
    390         else if( g_strcasecmp( cmd[1], "on" ) == 0 )
     393        else if( len >= 2 && g_strncasecmp( cmd[1], "on", len ) == 0 )
    391394        {
    392395                if ( irc->b->accounts )
     
    405408                return;
    406409        }
    407         else if( g_strcasecmp( cmd[1], "off" ) == 0 )
     410        else if( len >= 2 && g_strncasecmp( cmd[1], "off", len ) == 0 )
    408411        {
    409412                irc_usermsg( irc, "Deactivating all active (re)connections..." );
     
    421424       
    422425        MIN_ARGS( 2 );
     426        len = strlen( cmd[2] );
    423427       
    424428        /* At least right now, don't accept on/off/set/del as account IDs even
     
    437441        }
    438442       
    439         if( g_strcasecmp( cmd[2], "del" ) == 0 )
     443        if( len >= 1 && g_strncasecmp( cmd[2], "del", len ) == 0 )
    440444        {
    441445                if( a->ic )
     
    449453                }
    450454        }
    451         else if( g_strcasecmp( cmd[2], "on" ) == 0 )
     455        else if( len >= 2 && g_strncasecmp( cmd[2], "on", len ) == 0 )
    452456        {
    453457                if( a->ic )
     
    456460                        account_on( irc->b, a );
    457461        }
    458         else if( g_strcasecmp( cmd[2], "off" ) == 0 )
     462        else if( len >= 2 && g_strncasecmp( cmd[2], "off", len ) == 0 )
    459463        {
    460464                if( a->ic )
     
    472476                }
    473477        }
    474         else if( g_strcasecmp( cmd[2], "set" ) == 0 )
     478        else if( len >= 1 && g_strncasecmp( cmd[2], "set", len ) == 0 )
    475479        {
    476480                cmd_set_real( irc, cmd + 2, &a->set, cmd_account_set_checkflags );
     
    485489{
    486490        irc_channel_t *ic;
    487        
    488         if( g_strcasecmp( cmd[1], "list" ) == 0 )
     491        int len;
     492       
     493        len = strlen( cmd[1] );
     494       
     495        if( len >= 1 && g_strncasecmp( cmd[1], "list", len ) == 0 )
    489496        {
    490497                GSList *l;
     
    510517       
    511518        MIN_ARGS( 2 );
     519        len = strlen( cmd[2] );
    512520       
    513521        if( ( ic = irc_channel_get( irc, cmd[1] ) ) == NULL )
     
    517525        }
    518526       
    519         if( g_strcasecmp( cmd[2], "set" ) == 0 )
     527        if( len >= 1 && g_strncasecmp( cmd[2], "set", len ) == 0 )
    520528        {
    521529                cmd_set_real( irc, cmd + 2, &ic->set, NULL );
    522530        }
    523         else if( g_strcasecmp( cmd[2], "del" ) == 0 )
     531        else if( len >= 1 && g_strncasecmp( cmd[2], "del", len ) == 0 )
    524532        {
    525533                if( !( ic->flags & IRC_CHANNEL_JOINED ) &&
Note: See TracChangeset for help on using the changeset viewer.