aboutsummaryrefslogtreecommitdiffstats
path: root/root_commands.c
diff options
context:
space:
mode:
authorSven Moritz Hallberg <pesco@khjk.org>2008-07-17 01:22:52 +0200
committerSven Moritz Hallberg <pesco@khjk.org>2008-07-17 01:22:52 +0200
commit6738a676c7a3895988de4bd9eacfe8fa0ef73cc3 (patch)
treed95d913484cf79ff4a3c6d920a4d9b92ecd66de9 /root_commands.c
parent9730d7250bb9e938ca00b72efdd8e8b3c03b2753 (diff)
parent6a78c0eed44820a2fefe1e96516e335eddc9c70b (diff)
merge in latest trunk
Diffstat (limited to 'root_commands.c')
-rw-r--r--root_commands.c76
1 files changed, 74 insertions, 2 deletions
diff --git a/root_commands.c b/root_commands.c
index 5b64052f..2f00eca8 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -204,6 +204,40 @@ static void cmd_drop( irc_t *irc, char **cmd )
}
}
+struct cmd_account_del_data
+{
+ account_t *a;
+ irc_t *irc;
+};
+
+void cmd_account_del_yes( void *data )
+{
+ struct cmd_account_del_data *cad = data;
+ account_t *a;
+
+ 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( cad->irc, "Account is still logged in, can't delete" );
+ }
+ else
+ {
+ account_del( cad->irc, a );
+ irc_usermsg( cad->irc, "Account deleted" );
+ }
+ g_free( data );
+}
+
+void cmd_account_del_no( void *data )
+{
+ g_free( data );
+}
+
static void cmd_account( irc_t *irc, char **cmd )
{
account_t *a;
@@ -262,8 +296,20 @@ static void cmd_account( irc_t *irc, char **cmd )
}
else
{
- account_del( irc, a );
- irc_usermsg( irc, "Account deleted" );
+ struct cmd_account_del_data *cad;
+ char *msg;
+
+ 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, cad );
+ g_free( msg );
}
}
else if( g_strcasecmp( cmd[1], "list" ) == 0 )
@@ -381,6 +427,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;
@@ -561,6 +613,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 )
{
@@ -571,6 +626,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;
@@ -773,6 +842,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
{