diff options
author | Sven Moritz Hallberg <pesco@khjk.org> | 2009-03-12 20:10:06 +0100 |
---|---|---|
committer | Sven Moritz Hallberg <pesco@khjk.org> | 2009-03-12 20:10:06 +0100 |
commit | 823de9d44f262ea2364ac8ec6a1e18e0f7dab658 (patch) | |
tree | bfe64e4fafbcd13aaef6a436cab6ad91619e2821 /root_commands.c | |
parent | 9b55485a6f9d72334b372e6fb6b60bbde943170d (diff) |
commit updates by ashish shukla <wahjava@gmail.com>
Diffstat (limited to 'root_commands.c')
-rw-r--r-- | root_commands.c | 91 |
1 files changed, 62 insertions, 29 deletions
diff --git a/root_commands.c b/root_commands.c index 2f00eca8..ffa163bb 100644 --- a/root_commands.c +++ b/root_commands.c @@ -131,7 +131,7 @@ static void cmd_account( irc_t *irc, char **cmd ); static void cmd_identify( irc_t *irc, char **cmd ) { - storage_status_t status = storage_load( irc->nick, cmd[1], irc ); + storage_status_t status = storage_load( irc, cmd[1] ); char *account_on[] = { "account", "on", NULL }; switch (status) { @@ -143,6 +143,8 @@ static void cmd_identify( irc_t *irc, char **cmd ) break; case STORAGE_OK: irc_usermsg( irc, "Password accepted, settings and accounts loaded" ); + irc_setpass( irc, cmd[1] ); + irc->status |= USTATUS_IDENTIFIED; irc_umode_set( irc, "+R", 1 ); if( set_getbool( &irc->set, "auto_connect" ) ) cmd_account( irc, account_on ); @@ -162,14 +164,14 @@ static void cmd_register( irc_t *irc, char **cmd ) return; } - irc_setpass( irc, cmd[1] ); - switch( storage_save( irc, FALSE )) { + switch( storage_save( irc, cmd[1], FALSE ) ) { case STORAGE_ALREADY_EXISTS: irc_usermsg( irc, "Nick is already registered" ); break; case STORAGE_OK: irc_usermsg( irc, "Account successfully created" ); + irc_setpass( irc, cmd[1] ); irc->status |= USTATUS_IDENTIFIED; irc_umode_set( irc, "+R", 1 ); break; @@ -238,6 +240,16 @@ void cmd_account_del_no( void *data ) g_free( data ); } +static void cmd_showset( irc_t *irc, set_t **head, char *key ) +{ + char *val; + + if( ( val = set_getstr( head, key ) ) ) + irc_usermsg( irc, "%s = `%s'", key, val ); + else + irc_usermsg( irc, "%s is empty", key ); +} + static void cmd_account( irc_t *irc, char **cmd ) { account_t *a; @@ -449,6 +461,7 @@ static void cmd_account( irc_t *irc, char **cmd ) if( cmd[3] && set_name ) { set_t *s = set_find( &a->set, set_name ); + int st; if( a->ic && s && s->flags & ACC_SET_OFFLINE_ONLY ) { @@ -464,27 +477,32 @@ static void cmd_account( irc_t *irc, char **cmd ) } if( g_strncasecmp( cmd[2], "-del", 4 ) == 0 ) - set_reset( &a->set, set_name ); + st = set_reset( &a->set, set_name ); + else + st = set_setstr( &a->set, set_name, cmd[3] ); + + if( set_getstr( &a->set, set_name ) == NULL ) + { + if( st ) + irc_usermsg( irc, "Setting changed successfully" ); + else + irc_usermsg( irc, "Failed to change setting" ); + } else - set_setstr( &a->set, set_name, cmd[3] ); + { + cmd_showset( irc, &a->set, set_name ); + } } - if( set_name ) /* else 'forgotten' on purpose.. Must show new value after changing */ + else if( set_name ) { - char *s = set_getstr( &a->set, set_name ); - if( s ) - irc_usermsg( irc, "%s = `%s'", set_name, s ); - else - irc_usermsg( irc, "%s is empty", set_name ); + cmd_showset( irc, &a->set, set_name ); } else { set_t *s = a->set; while( s ) { - if( s->value || s->def ) - irc_usermsg( irc, "%s = `%s'", s->key, s->value ? s->value : s->def ); - else - irc_usermsg( irc, "%s is empty", s->key ); + cmd_showset( irc, &s, s->key ); s = s->next; } } @@ -614,6 +632,8 @@ static void cmd_rename( irc_t *irc, char **cmd ) g_free( irc->mynick ); irc->mynick = g_strdup( cmd[2] ); + /* If we're called internally (user did "set root_nick"), + let's not go O(INF). :-) */ if( strcmp( cmd[0], "set_rename" ) != 0 ) set_setstr( &irc->set, "root_nick", cmd[2] ); } @@ -637,7 +657,7 @@ char *set_eval_root_nick( set_t *set, char *new_nick ) cmd_rename( irc, cmd ); } - return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : NULL; + return strcmp( irc->mynick, new_nick ) == 0 ? new_nick : SET_INVALID; } static void cmd_remove( irc_t *irc, char **cmd ) @@ -825,23 +845,37 @@ static void cmd_set( irc_t *irc, char **cmd ) if( cmd[1] && cmd[2] ) { + int st; + if( g_strncasecmp( cmd[1], "-del", 4 ) == 0 ) { - set_reset( &irc->set, cmd[2] ); + st = set_reset( &irc->set, cmd[2] ); set_name = cmd[2]; } else { - set_setstr( &irc->set, cmd[1], cmd[2] ); + st = set_setstr( &irc->set, cmd[1], cmd[2] ); + } + + /* Normally we just show the variable's new/unchanged + value as feedback to the user, but this has always + caused confusion when changing the password. Give + other feedback instead: */ + if( set_getstr( &irc->set, set_name ) == NULL ) + { + if( st ) + irc_usermsg( irc, "Setting changed successfully" ); + else + irc_usermsg( irc, "Failed to change setting" ); + } + else + { + cmd_showset( irc, &irc->set, set_name ); } } - if( set_name ) /* else 'forgotten' on purpose.. Must show new value after changing */ + else if( set_name ) { - char *s = set_getstr( &irc->set, set_name ); - if( s ) - irc_usermsg( irc, "%s = `%s'", set_name, s ); - else - irc_usermsg( irc, "%s is empty", set_name ); + cmd_showset( irc, &irc->set, set_name ); if( strchr( set_name, '/' ) ) irc_usermsg( irc, "Warning: / found in setting name, you're probably looking for the `account set' command." ); @@ -851,10 +885,7 @@ static void cmd_set( irc_t *irc, char **cmd ) set_t *s = irc->set; while( s ) { - if( s->value || s->def ) - irc_usermsg( irc, "%s = `%s'", s->key, s->value ? s->value : s->def ); - else - irc_usermsg( irc, "%s is empty", s->key ); + cmd_showset( irc, &s, s->key ); s = s->next; } } @@ -862,7 +893,9 @@ static void cmd_set( irc_t *irc, char **cmd ) static void cmd_save( irc_t *irc, char **cmd ) { - if( storage_save( irc, TRUE ) == STORAGE_OK ) + if( ( irc->status & USTATUS_IDENTIFIED ) == 0 ) + irc_usermsg( irc, "Please create an account first" ); + else if( storage_save( irc, NULL, TRUE ) == STORAGE_OK ) irc_usermsg( irc, "Configuration saved" ); else irc_usermsg( irc, "Configuration could not be saved!" ); |