aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-07-24 17:58:27 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2010-07-24 17:58:27 +0200
commite135cd0997fb88ae644e63b6b7457ba08a60661a (patch)
treebae78b4045df81686a5a8c569360899a820f8e1b
parent40e6dac45f29a4c2cc64ce55eecef03d0b185bd5 (diff)
Use the account tag in a few places and store it in the XML file as an
attribute, not as a setting (since all accounts have it anyway).
-rw-r--r--irc_channel.c2
-rw-r--r--irc_im.c2
-rw-r--r--protocols/account.c1
-rw-r--r--storage_xml.c18
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 )
diff --git a/irc_im.c b/irc_im.c
index 4dbcddce..2033b1a8 100644
--- a/irc_im.c
+++ b/irc_im.c
@@ -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;