Changeset 3b99524


Ignore:
Timestamp:
2008-08-31T15:41:51Z (11 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
07054a5
Parents:
3611717
Message:

Added a MIN_ARGS() macro instead of stupidly copy-pasting the same
if-statement ten times.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • root_commands.c

    r3611717 r3b99524  
    7878}
    7979
     80#define MIN_ARGS( x, y... )                                                    \
     81        do                                                                     \
     82        {                                                                      \
     83                int i;                                                         \
     84                for( i = 1; i <= x; i ++ )                                     \
     85                        if( cmd[i] == NULL )                                   \
     86                        {                                                      \
     87                                irc_usermsg( irc, "Not enough parameters given (need %d).", x ); \
     88                                return y;                                      \
     89                        }                                                      \
     90        } while( 0 )
     91
    8092void root_command( irc_t *irc, char *cmd[] )
    8193{       
     
    88100                if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 )
    89101                {
    90                         if( !cmd[commands[i].required_parameters] )
    91                         {
    92                                 irc_usermsg( irc, "Not enough parameters given (need %d)", commands[i].required_parameters );
    93                                 return;
    94                         }
     102                        MIN_ARGS( commands[i].required_parameters );
     103                       
    95104                        commands[i].execute( irc, cmd );
    96105                        return;
     
    270279                char *id;
    271280               
    272                 if( !set_full )
    273                 {
    274                         /* FIXME: Broken # */
    275                         irc_usermsg( irc, "Not enough parameters given (need %d)", 3 );
    276                         return 0;
    277                 }
     281                MIN_ARGS( 3, 0 );
    278282       
    279283                if( ( tmp = strchr( set_full, '/' ) ) )
     
    374378                struct prpl *prpl;
    375379               
    376                 if( cmd[2] == NULL || cmd[3] == NULL || cmd[4] == NULL )
    377                 {
    378                         irc_usermsg( irc, "Not enough parameters" );
    379                         return;
    380                 }
     380                MIN_ARGS( 4 );
    381381               
    382382                prpl = find_protocol( cmd[2] );
     
    400400        else if( g_strcasecmp( cmd[1], "del" ) == 0 )
    401401        {
    402                 if( !cmd[2] )
    403                 {
    404                         irc_usermsg( irc, "Not enough parameters given (need %d)", 2 );
    405                 }
    406                 else if( !( a = account_get( irc, cmd[2] ) ) )
     402                MIN_ARGS( 2 );
     403
     404                if( !( a = account_get( irc, cmd[2] ) ) )
    407405                {
    408406                        irc_usermsg( irc, "Invalid account" );
     
    532530        else if( g_strcasecmp( cmd[1], "set" ) == 0 )
    533531        {
    534                 if( !cmd[2] )
    535                 {
    536                         irc_usermsg( irc, "Not enough parameters given (need %d)", 2 );
    537                         return;
    538                 }
     532                MIN_ARGS( 2 );
    539533               
    540534                cmd_set_real( irc, cmd + 1, cmd_account_set_findhead );
     
    10141008        if( g_strcasecmp( cmd[1], "add" ) == 0 )
    10151009        {
    1016                 if( !( cmd[2] && cmd[3] && cmd[4] ) )
    1017                 {
    1018                         irc_usermsg( irc, "Not enough parameters given (need %d)", 4 );
    1019                         return;
    1020                 }
     1010                MIN_ARGS( 4 );
    10211011               
    10221012                if( !( acc = account_get( irc, cmd[2] ) ) )
     
    10531043        else if( g_strcasecmp( cmd[1], "del" ) == 0 )
    10541044        {
    1055                 if( !cmd[2] )
    1056                 {
    1057                         irc_usermsg( irc, "Not enough parameters given (need %d)", 2 );
    1058                         return;
    1059                 }
     1045                MIN_ARGS( 2 );
    10601046               
    10611047                if( ( c = chat_get( irc, cmd[2] ) ) )
     
    10711057        {
    10721058                user_t *u;
    1073 
    1074                 if( !cmd[2] )
    1075                 {
    1076                         irc_usermsg( irc, "Not enough parameters given (need %d)", 2 );
    1077                         return;
    1078                 }
     1059               
     1060                MIN_ARGS( 2 );
    10791061               
    10801062                if( ( u = user_find( irc, cmd[2] ) ) && u->ic && u->ic->acc->prpl->chat_with )
Note: See TracChangeset for help on using the changeset viewer.