diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-25 01:04:18 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2006-05-25 01:04:18 +0200 |
commit | 601e81362bbf4e4d1e686334b35d3bdcd87314d2 (patch) | |
tree | 53ed2250bfc35b9e8da568b6f624a530d323ef32 /account.c | |
parent | 46ad029950221205d1eb6201ec2f01c7231876c2 (diff) | |
parent | fc630f9fb47690c30feaf4738727a213d633afc9 (diff) |
[merge] Wilmer
Diffstat (limited to 'account.c')
-rw-r--r-- | account.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -52,8 +52,34 @@ account_t *account_add( irc_t *irc, struct prpl *prpl, char *user, char *pass ) account_t *account_get( irc_t *irc, char *id ) { account_t *a, *ret = NULL; + char *handle, *s; int nr; + /* This checks if the id string ends with (...) */ + if( ( handle = strchr( id, '(' ) ) && ( s = strchr( handle, ')' ) ) && s[1] == 0 ) + { + struct prpl *proto; + + *s = *handle = 0; + handle ++; + + if( ( proto = find_protocol( id ) ) ) + { + for( a = irc->accounts; a; a = a->next ) + if( a->prpl == proto && + a->prpl->cmp_buddynames( handle, a->user ) == 0 ) + ret = a; + } + + /* Restore the string. */ + handle --; + *handle = '('; + *s = ')'; + + if( ret ) + return ret; + } + if( sscanf( id, "%d", &nr ) == 1 && nr < 1000 ) { for( a = irc->accounts; a; a = a->next ) @@ -140,7 +166,8 @@ void account_on( irc_t *irc, account_t *a ) void account_off( irc_t *irc, account_t *a ) { - account_offline( a->gc ); + a->gc->wants_to_die = TRUE; + signoff( a->gc ); a->gc = NULL; if( a->reconnect ) { |