diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-06-27 13:39:07 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-06-27 13:39:07 +0100 |
commit | 84c3a72604a292c41348d678eccf1875263cb8dd (patch) | |
tree | 4493f16cef85087b0c40c0025bd14b3c82508c2c /storage_xml.c | |
parent | e907683afea9e2789e0ac6a1eb55bda9c896c255 (diff) |
Import chatrooms configured in older BitlBee versions. Settings are currently
ignored though. Also removing the old chat.[ch] files since they're really not
important anymore.
Diffstat (limited to 'storage_xml.c')
-rw-r--r-- | storage_xml.c | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/storage_xml.c b/storage_xml.c index 3ce85713..73d77ade 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -28,7 +28,6 @@ #include "base64.h" #include "arc.h" #include "md5.h" -#include "chat.h" #if GLIB_CHECK_VERSION(2,8,0) #include <glib/gstdio.h> @@ -54,7 +53,7 @@ struct xml_parsedata irc_t *irc; char *current_setting; account_t *current_account; - struct chat *current_chat; + irc_channel_t *current_channel; set_t **current_set_head; char *given_nick; char *given_pass; @@ -175,9 +174,12 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na if( ( setting = xml_attr( attr_names, attr_values, "name" ) ) ) { + /* if( xd->current_chat != NULL ) xd->current_set_head = &xd->current_chat->set; - else if( xd->current_account != NULL ) + else + */ + if( xd->current_account != NULL ) xd->current_set_head = &xd->current_account->set; else xd->current_set_head = &xd->irc->b->set; @@ -214,7 +216,24 @@ static void xml_start_element( GMarkupParseContext *ctx, const gchar *element_na if( xd->current_account && handle && channel ) { - //xd->current_chat = chat_add( xd->irc, 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, "chat_type", "room" ) && + set_setstr( &ic->set, "account", acc ) && + set_setstr( &ic->set, "room", handle ) ) + { + /* Nothing else to do for now, really. */ + } + else if( ic ) + irc_channel_free( ic ); + + g_free( acc ); } else { @@ -244,7 +263,7 @@ static void xml_end_element( GMarkupParseContext *ctx, const gchar *element_name } else if( g_strcasecmp( element_name, "chat" ) == 0 ) { - xd->current_chat = NULL; + /* xd->current_chat = NULL; */ } } @@ -436,7 +455,6 @@ static storage_status_t xml_save( irc_t *irc, int overwrite ) unsigned char *pass_cr; char *pass_b64; int pass_len; - struct chat *c; pass_len = arc_encode( acc->pass, strlen( acc->pass ), (unsigned char**) &pass_cr, irc->password, 12 ); pass_b64 = base64_encode( pass_cr, pass_len ); @@ -469,27 +487,6 @@ static storage_status_t xml_save( irc_t *irc, int overwrite ) if( g_hash_table_find( acc->nicks, xml_save_nick, & fd ) ) goto write_error; -#if 0 - for( c = irc->chatrooms; c; c = c->next ) - { - if( c->acc != acc ) - continue; - - if( !xml_printf( fd, 2, "<chat handle=\"%s\" channel=\"%s\" type=\"%s\">\n", - c->handle, c->channel, "room" ) ) - goto write_error; - - for( set = c->set; set; set = set->next ) - if( set->value && !( set->flags & ACC_SET_NOSAVE ) ) - if( !xml_printf( fd, 3, "<setting name=\"%s\">%s</setting>\n", - set->key, set->value ) ) - goto write_error; - - if( !xml_printf( fd, 2, "</chat>\n" ) ) - goto write_error; - } -#endif - if( !xml_printf( fd, 1, "</account>\n" ) ) goto write_error; } |