Changeset b74b287


Ignore:
Timestamp:
2009-10-11T21:08:26Z (11 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
ec5e57d
Parents:
0f7ee7e5
Message:

Fixed account cleanup (use remove, not destroy) and now using user's account
settings.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • protocols/purple/purple.c

    r0f7ee7e5 rb74b287  
    9393}
    9494
     95static void purple_sync_settings( account_t *acc, PurpleAccount *pa )
     96{
     97        PurplePlugin *prpl = purple_plugins_find_with_id( pa->protocol_id );
     98        PurplePluginProtocolInfo *pi = prpl->info->extra_info;
     99        GList *i;
     100       
     101        for( i = pi->protocol_options; i; i = i->next )
     102        {
     103                PurpleAccountOption *o = i->data;
     104                const char *name;
     105                set_t *s;
     106               
     107                name = purple_account_option_get_setting( o );
     108                s = set_find( &acc->set, name );
     109                if( s->value == NULL )
     110                        continue;
     111               
     112                switch( purple_account_option_get_type( o ) )
     113                {
     114                case PURPLE_PREF_STRING:
     115                        purple_account_set_string( pa, name, set_getstr( &acc->set, name ) );
     116                        break;
     117               
     118                case PURPLE_PREF_INT:
     119                        purple_account_set_int( pa, name, set_getint( &acc->set, name ) );
     120                        break;
     121               
     122                case PURPLE_PREF_BOOLEAN:
     123                        purple_account_set_bool( pa, name, set_getbool( &acc->set, name ) );
     124                        break;
     125               
     126                default:
     127                        break;
     128                }
     129        }
     130}
     131
    95132static void purple_login( account_t *acc )
    96133{
     
    103140        purple_connections = g_slist_prepend( purple_connections, ic );
    104141       
    105         pa = purple_account_new( acc->user, acc->prpl->name );
     142        ic->proto_data = pa = purple_account_new( acc->user, acc->prpl->name );
    106143        purple_account_set_password( pa, acc->pass );
    107        
    108         ic->proto_data = pa;
     144        purple_sync_settings( acc, pa );
    109145       
    110146        purple_account_set_enabled( pa, "BitlBee", TRUE );
     
    117153        purple_account_set_enabled( pa, "BitlBee", FALSE );
    118154        purple_connections = g_slist_remove( purple_connections, ic );
    119         purple_account_destroy( pa );
     155        purple_accounts_remove( pa );
    120156}
    121157
     
    194230       
    195231        if( ic != NULL )
     232        {
    196233                imc_logout( ic, TRUE );
     234        }
    197235}
    198236
  • set.c

    r0f7ee7e5 rb74b287  
    6363}
    6464
    65 set_t *set_find( set_t **head, char *key )
     65set_t *set_find( set_t **head, const char *key )
    6666{
    6767        set_t *s = *head;
     
    7777}
    7878
    79 char *set_getstr( set_t **head, char *key )
     79char *set_getstr( set_t **head, const char *key )
    8080{
    8181        set_t *s = set_find( head, key );
     
    8787}
    8888
    89 int set_getint( set_t **head, char *key )
     89int set_getint( set_t **head, const char *key )
    9090{
    9191        char *s = set_getstr( head, key );
     
    101101}
    102102
    103 int set_getbool( set_t **head, char *key )
     103int set_getbool( set_t **head, const char *key )
    104104{
    105105        char *s = set_getstr( head, key );
     
    111111}
    112112
    113 int set_setstr( set_t **head, char *key, char *value )
     113int set_setstr( set_t **head, const char *key, char *value )
    114114{
    115115        set_t *s = set_find( head, key );
     
    150150}
    151151
    152 int set_setint( set_t **head, char *key, int value )
     152int set_setint( set_t **head, const char *key, int value )
    153153{
    154154        char s[24];     /* Not quite 128-bit clean eh? ;-) */
     
    158158}
    159159
    160 void set_del( set_t **head, char *key )
     160void set_del( set_t **head, const char *key )
    161161{
    162162        set_t *s = *head, *t = NULL;
     
    182182}
    183183
    184 int set_reset( set_t **head, char *key )
     184int set_reset( set_t **head, const char *key )
    185185{
    186186        set_t *s;
  • set.h

    r0f7ee7e5 rb74b287  
    7676
    7777/* Returns the raw set_t. Might be useful sometimes. */
    78 set_t *set_find( set_t **head, char *key );
     78set_t *set_find( set_t **head, const char *key );
    7979
    8080/* Returns a pointer to the string value of this setting. Don't modify the
    8181   returned string, and don't free() it! */
    82 G_MODULE_EXPORT char *set_getstr( set_t **head, char *key );
     82G_MODULE_EXPORT char *set_getstr( set_t **head, const char *key );
    8383
    8484/* Get an integer. In previous versions set_getint() was also used to read
    8585   boolean values, but this SHOULD be done with set_getbool() now! */
    86 G_MODULE_EXPORT int set_getint( set_t **head, char *key );
    87 G_MODULE_EXPORT int set_getbool( set_t **head, char *key );
     86G_MODULE_EXPORT int set_getint( set_t **head, const char *key );
     87G_MODULE_EXPORT int set_getbool( set_t **head, const char *key );
    8888
    8989/* set_setstr() strdup()s the given value, so after using this function
    9090   you can free() it, if you want. */
    91 int set_setstr( set_t **head, char *key, char *value );
    92 int set_setint( set_t **head, char *key, int value );
    93 void set_del( set_t **head, char *key );
    94 int set_reset( set_t **head, char *key );
     91int set_setstr( set_t **head, const char *key, char *value );
     92int set_setint( set_t **head, const char *key, int value );
     93void set_del( set_t **head, const char *key );
     94int set_reset( set_t **head, const char *key );
    9595
    9696/* Two very useful generic evaluators. */
Note: See TracChangeset for help on using the changeset viewer.