From d5bd9c078ae2fb4d2e9354e943e06e017e878776 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Thu, 28 Feb 2008 22:39:37 +0000 Subject: My fix for semi-PEBKAC bug #353: Add a warning if someone seems to be using the wrong command, and fixing "help nick" example to show how it should be done now. --- root_commands.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index 8e315bd4..2f542826 100644 --- a/root_commands.c +++ b/root_commands.c @@ -768,6 +768,9 @@ static void cmd_set( irc_t *irc, char **cmd ) irc_usermsg( irc, "%s = `%s'", set_name, s ); else irc_usermsg( irc, "%s is empty", set_name ); + + if( strchr( set_name, '/' ) ) + irc_usermsg( irc, "Warning: / found in setting name, you're probably looking for the `account set' command." ); } else { -- cgit v1.2.3 From 7f421d6b922837857d6aca342da314225023eb46 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Mon, 3 Mar 2008 23:18:36 +0000 Subject: BitlBee <= 1.0 didn't have "account set" and allowed one to delete an account and re-create it with new login settings if necessary, without losing custom nicknames. Now, nicknames are connected to an account instead of just the protocol, and they're flushed together with the account. So I added a warning to make sure nobody accidentally loses any settings while just changing the password. This will probably go after a few releases, since it's slightly annoying. --- root_commands.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index 2f542826..9a60b5af 100644 --- a/root_commands.c +++ b/root_commands.c @@ -203,6 +203,26 @@ static void cmd_drop( irc_t *irc, char **cmd ) } } +void cmd_account_del_yes( gpointer w, void *data ) +{ + account_t *a = data; + irc_t *irc = a->irc; + + if( a->ic ) + { + irc_usermsg( irc, "Account is still logged in, can't delete" ); + } + else + { + account_del( irc, a ); + irc_usermsg( irc, "Account deleted" ); + } +} + +void cmd_account_del_no( gpointer w, void *data ) +{ +} + static void cmd_account( irc_t *irc, char **cmd ) { account_t *a; @@ -257,8 +277,15 @@ static void cmd_account( irc_t *irc, char **cmd ) } else { - account_del( irc, a ); - irc_usermsg( irc, "Account deleted" ); + char *msg; + + msg = g_strdup_printf( "If you remove this account (%s(%s)), BitlBee will " + "also forget all your saved nicknames. If you want " + "to change your username/password, use the `account " + "set' command. Are you sure you want to delete this " + "account?", a->prpl->name, a->user ); + query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, a ); + g_free( msg ); } } else if( g_strcasecmp( cmd[1], "list" ) == 0 ) -- cgit v1.2.3 From 8dbe021fab08902eb202da8da26d183cb0832fca Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sat, 5 Apr 2008 00:13:07 +0100 Subject: Don't pass an account_t pointer directly to query_add() since query_del() wants to free it! Passing an indirect pointer instead. --- root_commands.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index 9a60b5af..2bccc465 100644 --- a/root_commands.c +++ b/root_commands.c @@ -205,22 +205,24 @@ static void cmd_drop( irc_t *irc, char **cmd ) void cmd_account_del_yes( gpointer w, void *data ) { - account_t *a = data; - irc_t *irc = a->irc; + account_t **aptr = data; + irc_t *irc = (*aptr)->irc; - if( a->ic ) + if( (*aptr)->ic ) { irc_usermsg( irc, "Account is still logged in, can't delete" ); } else { - account_del( irc, a ); + account_del( irc, (*aptr) ); irc_usermsg( irc, "Account deleted" ); } + g_free( aptr ); } void cmd_account_del_no( gpointer w, void *data ) { + g_free( data ); } static void cmd_account( irc_t *irc, char **cmd ) @@ -277,14 +279,18 @@ static void cmd_account( irc_t *irc, char **cmd ) } else { + account_t **aptr; char *msg; + aptr = g_malloc( sizeof( aptr ) ); + *aptr = a; + msg = g_strdup_printf( "If you remove this account (%s(%s)), BitlBee will " "also forget all your saved nicknames. If you want " "to change your username/password, use the `account " "set' command. Are you sure you want to delete this " "account?", a->prpl->name, a->user ); - query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, a ); + query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, aptr ); g_free( msg ); } } -- cgit v1.2.3 From f35aee7fdfc66138d0525a0a7b9e02ccb1aaaec7 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sat, 5 Apr 2008 13:36:13 +0100 Subject: Fixed #386. --- root_commands.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index 2bccc465..aec91455 100644 --- a/root_commands.c +++ b/root_commands.c @@ -203,24 +203,36 @@ static void cmd_drop( irc_t *irc, char **cmd ) } } -void cmd_account_del_yes( gpointer w, void *data ) +struct cmd_account_del_data { - account_t **aptr = data; - irc_t *irc = (*aptr)->irc; + account_t *a; + irc_t *irc; +}; + +void cmd_account_del_yes( void *data ) +{ + struct cmd_account_del_data *cad = data; + account_t *a; - if( (*aptr)->ic ) + for( a = cad->irc->accounts; a && a != cad->a; a = a->next ); + + if( a == NULL ) + { + irc_usermsg( cad->irc, "Account already deleted" ); + } + else if( a->ic ) { - irc_usermsg( irc, "Account is still logged in, can't delete" ); + irc_usermsg( cad->irc, "Account is still logged in, can't delete" ); } else { - account_del( irc, (*aptr) ); - irc_usermsg( irc, "Account deleted" ); + account_del( cad->irc, a ); + irc_usermsg( cad->irc, "Account deleted" ); } - g_free( aptr ); + g_free( data ); } -void cmd_account_del_no( gpointer w, void *data ) +void cmd_account_del_no( void *data ) { g_free( data ); } @@ -279,18 +291,19 @@ static void cmd_account( irc_t *irc, char **cmd ) } else { - account_t **aptr; + struct cmd_account_del_data *cad; char *msg; - aptr = g_malloc( sizeof( aptr ) ); - *aptr = a; + cad = g_malloc( sizeof( struct cmd_account_del_data ) ); + cad->a = a; + cad->irc = irc; msg = g_strdup_printf( "If you remove this account (%s(%s)), BitlBee will " "also forget all your saved nicknames. If you want " "to change your username/password, use the `account " "set' command. Are you sure you want to delete this " "account?", a->prpl->name, a->user ); - query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, aptr ); + query_add( irc, NULL, msg, cmd_account_del_yes, cmd_account_del_no, cad ); g_free( msg ); } } -- cgit v1.2.3 From 1195cecc99315c9c38e05c8dd0981792e7663583 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sat, 5 Apr 2008 14:03:31 +0100 Subject: Changed root nicknames are now saved. (Bug #378) --- root_commands.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index aec91455..4b27afe3 100644 --- a/root_commands.c +++ b/root_commands.c @@ -602,6 +602,9 @@ static void cmd_rename( irc_t *irc, char **cmd ) { g_free( irc->mynick ); irc->mynick = g_strdup( cmd[2] ); + + if( strcmp( cmd[0], "set_rename" ) != 0 ) + set_setstr( &irc->set, "root_nick", cmd[2] ); } else if( u->send_handler == buddy_send_handler ) { @@ -612,6 +615,20 @@ static void cmd_rename( irc_t *irc, char **cmd ) } } +char *set_eval_root_nick( set_t *set, char *new_nick ) +{ + irc_t *irc = set->data; + + if( strcmp( irc->mynick, new_nick ) != 0 ) + { + char *cmd[] = { "set_rename", irc->mynick, new_nick, NULL }; + + cmd_rename( irc, cmd ); + } + + return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : NULL; +} + static void cmd_remove( irc_t *irc, char **cmd ) { user_t *u; -- cgit v1.2.3 From 23c4e648e3d38336f949498d0b93e5b399087e44 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sun, 11 May 2008 12:37:34 -0700 Subject: Fixed NULL point dereference in "account set -del" code. --- root_commands.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'root_commands.c') diff --git a/root_commands.c b/root_commands.c index 4b27afe3..f55c4b5e 100644 --- a/root_commands.c +++ b/root_commands.c @@ -422,6 +422,12 @@ static void cmd_account( irc_t *irc, char **cmd ) else acc_handle = g_strdup( cmd[2] ); + if( !acc_handle ) + { + irc_usermsg( irc, "Not enough parameters given (need %d)", 3 ); + return; + } + if( ( tmp = strchr( acc_handle, '/' ) ) ) { *tmp = 0; -- cgit v1.2.3