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 /root_commands.c | |
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. :-)
Diffstat (limited to 'root_commands.c')
-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 ) { |