aboutsummaryrefslogtreecommitdiffstats
path: root/storage_xml.c
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 /storage_xml.c
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).
Diffstat (limited to 'storage_xml.c')
-rw-r--r--storage_xml.c18
1 files changed, 8 insertions, 10 deletions
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;