diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2008-08-30 22:30:13 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2008-08-30 22:30:13 +0100 |
commit | b84800d89604dee6fd837a2b8ab549346607e774 (patch) | |
tree | b93729909586ea48c75fe52440acd7ffc1783056 /storage_xml.c | |
parent | 1917a1ec17dde7c159af5ec65d6455c3348bb250 (diff) |
Support for saving the chatroom list. Also removed the hack that was used
to not save non-existent settings now that those simply aren't possible
anymore.
Diffstat (limited to 'storage_xml.c')
-rw-r--r-- | storage_xml.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/storage_xml.c b/storage_xml.c index d8c5ffb7..240bb589 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -437,7 +437,7 @@ static storage_status_t xml_save( irc_t *irc, int overwrite ) g_free( pass_buf ); for( set = irc->set; set; set = set->next ) - if( set->value && set->def ) + if( set->value ) if( !xml_printf( fd, 1, "<setting name=\"%s\">%s</setting>\n", set->key, set->value ) ) goto write_error; @@ -446,6 +446,7 @@ 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 ); @@ -464,7 +465,7 @@ static storage_status_t xml_save( irc_t *irc, int overwrite ) goto write_error; for( set = acc->set; set; set = set->next ) - if( set->value && set->def && !( set->flags & ACC_SET_NOSAVE ) ) + if( set->value && !( set->flags & ACC_SET_NOSAVE ) ) if( !xml_printf( fd, 2, "<setting name=\"%s\">%s</setting>\n", set->key, set->value ) ) goto write_error; @@ -478,6 +479,25 @@ 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; + 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; + } + if( !xml_printf( fd, 1, "</account>\n" ) ) goto write_error; } |