diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-24 17:58:27 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-24 17:58:27 +0200 |
commit | e135cd0997fb88ae644e63b6b7457ba08a60661a (patch) | |
tree | bae78b4045df81686a5a8c569360899a820f8e1b | |
parent | 40e6dac45f29a4c2cc64ce55eecef03d0b185bd5 (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.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; |