Index: storage_xml.c
===================================================================
--- storage_xml.c (revision 1917a1ec17dde7c159af5ec65d6455c3348bb250)
+++ storage_xml.c (revision b84800d89604dee6fd837a2b8ab549346607e774)
@@ -438,5 +438,5 @@
for( set = irc->set; set; set = set->next )
- if( set->value && set->def )
+ if( set->value )
if( !xml_printf( fd, 1, "%s\n", set->key, set->value ) )
goto write_error;
@@ -447,4 +447,5 @@
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 );
@@ -465,5 +466,5 @@
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, "%s\n", set->key, set->value ) )
goto write_error;
@@ -479,4 +480,23 @@
goto write_error;
+ for( c = irc->chatrooms; c; c = c->next )
+ {
+ if( c->acc != acc )
+ continue;
+
+ if( !xml_printf( fd, 2, "\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, "%s\n",
+ set->key, set->value ) )
+ goto write_error;
+
+ if( !xml_printf( fd, 2, "\n" ) )
+ goto write_error;
+ }
+
if( !xml_printf( fd, 1, "\n" ) )
goto write_error;