diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2008-08-31 23:49:32 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2008-08-31 23:49:32 +0100 | 
| commit | 07054a511479f070a274b4c8a488cc79b79abe1f (patch) | |
| tree | c9da436a184d257b6e57f885c1f64d0f81a9f291 | |
| parent | 3b99524d537183f74f34be8fef4e02324707f34e (diff) | |
"chat add" can generate a channel name by itself if necessary. Also fixed
MIN_ARGS, using a variable named i showed why precompiler macros really
are evil. :-)
| -rw-r--r-- | root_commands.c | 32 | 
1 files changed, 27 insertions, 5 deletions
| diff --git a/root_commands.c b/root_commands.c index b6ae5c7a..f65bdc65 100644 --- a/root_commands.c +++ b/root_commands.c @@ -80,9 +80,9 @@ void root_command_string( irc_t *irc, user_t *u, char *command, int flags )  #define MIN_ARGS( x, y... )                                                    \  	do                                                                     \  	{                                                                      \ -		int i;                                                         \ -		for( i = 1; i <= x; i ++ )                                     \ -			if( cmd[i] == NULL )                                   \ +		int blaat;                                                     \ +		for( blaat = 0; blaat <= x; blaat ++ )                         \ +			if( cmd[blaat] == NULL )                               \  			{                                                      \  				irc_usermsg( irc, "Not enough parameters given (need %d).", x ); \  				return y;                                      \ @@ -1007,7 +1007,9 @@ static void cmd_chat( irc_t *irc, char **cmd )  	if( g_strcasecmp( cmd[1], "add" ) == 0 )  	{ -		MIN_ARGS( 4 ); +		char *channel, *s; +		 +		MIN_ARGS( 3 );  		if( !( acc = account_get( irc, cmd[2] ) ) )  		{ @@ -1015,10 +1017,30 @@ static void cmd_chat( irc_t *irc, char **cmd )  			return;  		} -		if( ( c = chat_add( irc, acc, cmd[3], cmd[4] ) ) ) +		if( cmd[4] == NULL ) +		{ +			channel = g_strdup( cmd[3] ); +			if( ( s = strchr( channel, '@' ) ) ) +				*s = 0; +		} +		else +		{ +			channel = g_strdup( cmd[4] ); +		} +		 +		if( strchr( CTYPES, channel[0] ) == NULL ) +		{ +			s = g_strdup_printf( "%c%s", CTYPES[0], channel ); +			g_free( channel ); +			channel = s; +		} +		 +		if( ( c = chat_add( irc, acc, cmd[3], channel ) ) )  			irc_usermsg( irc, "Chatroom added successfully." );  		else  			irc_usermsg( irc, "Could not add chatroom." ); +		 +		g_free( channel );  	}  	else if( g_strcasecmp( cmd[1], "list" ) == 0 )  	{ | 
