Changeset 5100caa for account.c


Ignore:
Timestamp:
2006-07-01T15:52:05Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
fef6116
Parents:
0a3c243
Message:

Added "account set" command.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • account.c

    r0a3c243 r5100caa  
    2828#include "account.h"
    2929
     30char *set_eval_account( set_t *set, char *value );
     31
    3032account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass )
    3133{
    3234        account_t *a;
     35        set_t *s;
    3336       
    3437        if( irc->accounts )
     
    4851        a->irc = irc;
    4952       
     53        s = set_add( &a->set, "auto_connect", NULL, set_eval_account, a );
     54        s->flags |= ACC_SET_NOSAVE;
     55       
     56        s = set_add( &a->set, "password", NULL, set_eval_account, a );
     57        s->flags |= ACC_SET_NOSAVE;
     58       
     59        s = set_add( &a->set, "server", NULL, set_eval_account, a );
     60        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
     61       
     62        s = set_add( &a->set, "username", NULL, set_eval_account, a );
     63        s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY;
     64        set_setstr( &a->set, "username", user );
     65       
    5066        return( a );
     67}
     68
     69char *set_eval_account( set_t *set, char *value )
     70{
     71        account_t *acc = set->data;
     72       
     73        /* Double-check: We refuse to edit on-line accounts. */
     74        if( acc->gc )
     75                return NULL;
     76       
     77        if( strcmp( set->key, "username" ) == 0 )
     78        {
     79                g_free( acc->user );
     80                acc->user = g_strdup( value );
     81                return value;
     82        }
     83        else if( strcmp( set->key, "password" ) == 0 )
     84        {
     85                g_free( acc->pass );
     86                acc->pass = g_strdup( value );
     87                return NULL;    /* password shouldn't be visible in plaintext! */
     88        }
     89        else if( strcmp( set->key, "server" ) == 0 )
     90        {
     91                g_free( acc->server );
     92                if( *value )
     93                        acc->server = g_strdup( value );
     94                else
     95                        acc->server = NULL;
     96                return value;
     97        }
     98        else if( strcmp( set->key, "auto_connect" ) == 0 )
     99        {
     100                if( !is_bool( value ) )
     101                        return NULL;
     102               
     103                acc->auto_connect = bool2int( value );
     104                return value;
     105        }
     106       
     107        return NULL;
    51108}
    52109
     
    130187                        }
    131188                       
     189                        while( a->set )
     190                                set_del( &a->set, a->set->key );
     191                       
    132192                        g_free( a->user );
    133193                        g_free( a->pass );
Note: See TracChangeset for help on using the changeset viewer.