diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-04-08 16:37:49 +0200 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-04-08 16:37:49 +0200 | 
| commit | 85616c361bf152a10f774ad65068103d0724e42b (patch) | |
| tree | a753ecdc9f39453176541497993ed6e72033350d /account.c | |
| parent | 11bcee97b781bac6e38db4e1630ac6934209e73b (diff) | |
Added $proto($handle) account matching to account_get().
Diffstat (limited to 'account.c')
| -rw-r--r-- | account.c | 26 | 
1 files changed, 26 insertions, 0 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 ) | 
