diff options
| -rw-r--r-- | irc_channel.c | 2 | ||||
| -rw-r--r-- | irc_im.c | 2 | ||||
| -rw-r--r-- | protocols/account.c | 1 | ||||
| -rw-r--r-- | storage_xml.c | 18 | 
4 files changed, 11 insertions, 12 deletions
| diff --git a/irc_channel.c b/irc_channel.c index 536b2de1..5d504f66 100644 --- a/irc_channel.c +++ b/irc_channel.c @@ -578,7 +578,7 @@ static char *set_eval_by_account( set_t *set, char *value )  	if( icc->type == IRC_CC_TYPE_ACCOUNT )  		bee_irc_channel_update( ic->irc, ic, NULL ); -	return g_strdup_printf( "%s(%s)", acc->prpl->name, acc->user ); +	return g_strdup( acc->tag );  }  static char *set_eval_fill_by( set_t *set, char *value ) @@ -804,7 +804,7 @@ static char *set_eval_room_account( set_t *set, char *value )  	if( acc->prpl->chat_add_settings )  		acc->prpl->chat_add_settings( acc, &ic->set ); -	return g_strdup_printf( "%s(%s)", acc->prpl->name, acc->user ); +	return g_strdup( acc->tag );  }  static char *set_eval_chat_type( set_t *set, char *value ) diff --git a/protocols/account.c b/protocols/account.c index 6a762e8b..7fceae91 100644 --- a/protocols/account.c +++ b/protocols/account.c @@ -66,6 +66,7 @@ account_t *account_add( bee_t *bee, struct prpl *prpl, char *user, char *pass )  	s->flags |= ACC_SET_NOSAVE | SET_NULL_OK;  	s = set_add( &a->set, "tag", NULL, set_eval_account, a ); +	s->flags |= ACC_SET_NOSAVE;  	s = set_add( &a->set, "username", NULL, set_eval_account, a );  	s->flags |= ACC_SET_NOSAVE | ACC_SET_OFFLINE_ONLY; diff --git a/storage_xml.c b/storage_xml.c index db72025d..1d6757ae 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -126,7 +126,7 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  	}  	else if( g_strcasecmp( element_name, "account" ) == 0 )  	{ -		char *protocol, *handle, *server, *password = NULL, *autoconnect; +		char *protocol, *handle, *server, *password = NULL, *autoconnect, *tag;  		char *pass_b64 = NULL;  		unsigned char *pass_cr = NULL;  		int pass_len; @@ -136,6 +136,7 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  		pass_b64 = xml_attr( attr_names, attr_values, "password" );  		server = xml_attr( attr_names, attr_values, "server" );  		autoconnect = xml_attr( attr_names, attr_values, "autoconnect" ); +		tag = xml_attr( attr_names, attr_values, "tag" );  		protocol = xml_attr( attr_names, attr_values, "protocol" );  		if( protocol ) @@ -155,6 +156,8 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  				set_setstr( &xd->current_account->set, "server", server );  			if( autoconnect )  				set_setstr( &xd->current_account->set, "auto_connect", autoconnect ); +			if( tag ) +				set_setstr( &xd->current_account->set, "tag", tag );  		}  		else  		{ @@ -243,16 +246,11 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  		if( xd->current_account && handle && channel )  		{  			irc_channel_t *ic; -			char *acc; -			 -			acc = g_strdup_printf( "%s(%s)", -			                       xd->current_account->prpl->name, -			                       xd->current_account->user );  			if( ( ic = irc_channel_new( irc, channel ) ) &&  			    set_setstr( &ic->set, "type", "chat" ) &&  			    set_setstr( &ic->set, "chat_type", "room" ) && -			    set_setstr( &ic->set, "account", acc ) && +			    set_setstr( &ic->set, "account", xd->current_account->tag ) &&  			    set_setstr( &ic->set, "room", handle ) )  			{  				/* Try to pick up some settings where possible. */ @@ -260,8 +258,6 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na  			}  			else if( ic )  				irc_channel_free( ic ); -			 -			g_free( acc );  		}  		else  		{ @@ -501,7 +497,9 @@ static storage_status_t xml_save( irc_t *irc, int overwrite )  		pass_b64 = base64_encode( pass_cr, pass_len );  		g_free( pass_cr ); -		if( !xml_printf( fd, 1, "<account protocol=\"%s\" handle=\"%s\" password=\"%s\" autoconnect=\"%d\"", acc->prpl->name, acc->user, pass_b64, acc->auto_connect ) ) +		if( !xml_printf( fd, 1, "<account protocol=\"%s\" handle=\"%s\" password=\"%s\" " +		                        "autoconnect=\"%d\" tag=\"%s\"", acc->prpl->name, acc->user, +		                        pass_b64, acc->auto_connect, acc->tag ) )  		{  			g_free( pass_b64 );  			goto write_error; | 
