- Timestamp:
- 2006-10-15T09:41:12Z (17 years ago)
- Branches:
- master
- Children:
- 2529faf
- Parents:
- 695e392 (diff), e97827b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
account.c
r695e392 r69cb623 31 31 { 32 32 account_t *a; 33 set_t *s; 33 34 34 35 if( irc->accounts ) 35 36 { 36 37 for( a = irc->accounts; a->next; a = a->next ); 37 a = a->next = g_new0 38 a = a->next = g_new0( account_t, 1 ); 38 39 } 39 40 else … … 45 46 a->user = g_strdup( user ); 46 47 a->pass = g_strdup( pass ); 48 a->auto_connect = 1; 47 49 a->irc = irc; 48 50 51 s = set_add( &a->set, "auto_connect", "true", set_eval_account, a ); 52 s->flags |= ACC_SET_NOSAVE; 53 54 s = set_add( &a->set, "auto_reconnect", "true", set_eval_bool, a ); 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, "username", NULL, set_eval_account, a ); 60 s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY; 61 set_setstr( &a->set, "username", user ); 62 63 a->nicks = g_hash_table_new_full( g_str_hash, g_str_equal, g_free, g_free ); 64 65 /* This function adds some more settings (and might want to do more 66 things that have to be done now, although I can't think of anything. */ 67 if( prpl->acc_init ) 68 prpl->acc_init( a ); 69 49 70 return( a ); 71 } 72 73 char *set_eval_account( set_t *set, char *value ) 74 { 75 account_t *acc = set->data; 76 77 /* Double-check: We refuse to edit on-line accounts. */ 78 if( set->flags & ACC_SET_OFFLINE_ONLY && acc->gc ) 79 return NULL; 80 81 if( strcmp( set->key, "username" ) == 0 ) 82 { 83 g_free( acc->user ); 84 acc->user = g_strdup( value ); 85 return value; 86 } 87 else if( strcmp( set->key, "password" ) == 0 ) 88 { 89 g_free( acc->pass ); 90 acc->pass = g_strdup( value ); 91 return NULL; /* password shouldn't be visible in plaintext! */ 92 } 93 else if( strcmp( set->key, "server" ) == 0 ) 94 { 95 g_free( acc->server ); 96 if( *value ) 97 acc->server = g_strdup( value ); 98 else 99 acc->server = NULL; 100 return value; 101 } 102 else if( strcmp( set->key, "auto_connect" ) == 0 ) 103 { 104 if( !is_bool( value ) ) 105 return NULL; 106 107 acc->auto_connect = bool2int( value ); 108 return value; 109 } 110 111 return NULL; 50 112 } 51 113 … … 68 130 for( a = irc->accounts; a; a = a->next ) 69 131 if( a->prpl == proto && 70 a->prpl-> cmp_buddynames( handle, a->user ) == 0 )132 a->prpl->handle_cmp( handle, a->user ) == 0 ) 71 133 ret = a; 72 134 } … … 129 191 } 130 192 193 while( a->set ) 194 set_del( &a->set, a->set->key ); 195 196 g_hash_table_destroy( a->nicks ); 197 131 198 g_free( a->user ); 132 199 g_free( a->pass ); … … 142 209 void account_on( irc_t *irc, account_t *a ) 143 210 { 144 struct aim_user *u;145 146 211 if( a->gc ) 147 212 { … … 152 217 cancel_auto_reconnect( a ); 153 218 154 u = g_new0 ( struct aim_user, 1 );155 u->irc = irc;156 u->prpl = a->prpl;157 strncpy( u->username, a->user, sizeof( u->username ) - 1 );158 strncpy( u->password, a->pass, sizeof( u->password ) - 1 );159 if( a->server) strncpy( u->proto_opt[0], a->server, sizeof( u->proto_opt[0] ) - 1 );160 161 a->gc = (struct gaim_connection *) u; /* Bit hackish :-/ */162 219 a->reconnect = 0; 163 164 a->prpl->login( u ); 220 a->prpl->login( a ); 165 221 } 166 222
Note: See TracChangeset
for help on using the changeset viewer.