Changeset e222c36


Ignore:
Timestamp:
2012-06-07T22:45:24Z (8 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
297d1d0
Parents:
bb5ce568
Message:

Add xml_generate_settings(), little less code duplication.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • storage_xml.c

    rbb5ce568 re222c36  
    251251
    252252static gboolean xml_generate_nick( gpointer key, gpointer value, gpointer data );
     253static void xml_generate_settings( struct xt_node *cur, set_t **head );
    253254
    254255struct xt_node *xml_generate( irc_t *irc )
    255256{
    256257        char *pass_buf = NULL;
    257         set_t *set;
    258258        account_t *acc;
    259259        md5_byte_t pass_md5[21];
     
    280280        g_free( pass_buf );
    281281       
    282         for( set = irc->b->set; set; set = set->next )
    283                 if( set->value && !( set->flags & SET_NOSAVE ) )
    284                 {
    285                         struct xt_node *xset;
    286                         xt_add_child( cur, xset = xt_new_node( "setting", set->value, NULL ) );
    287                         xt_add_attr( xset, "name", set->key );
    288                 }
     282        xml_generate_settings( cur, &irc->b->set );
    289283       
    290284        for( acc = irc->b->accounts; acc; acc = acc->next )
     
    309303                g_free( pass_b64 );
    310304               
    311                 for( set = acc->set; set; set = set->next )
    312                         if( set->value && !( set->flags & SET_NOSAVE ) )
    313                         {
    314                                 struct xt_node *xset;
    315                                 xt_add_child( cur, xset = xt_new_node( "setting", set->value, NULL ) );
    316                                 xt_add_attr( xset, "name", set->key );
    317                         }
    318                
    319305                /* This probably looks pretty strange. g_hash_table_foreach
    320306                   is quite a PITA already (but it can't get much better in
     
    326312                g_hash_table_find( acc->nicks, xml_generate_nick, cur );
    327313               
     314                xml_generate_settings( cur, &acc->set );
     315               
    328316                xt_add_child( root, cur );
    329317        }
     
    340328                xt_add_attr( cur, "type", set_getstr( &ic->set, "type" ) );
    341329               
    342                 for( set = ic->set; set; set = set->next )
    343                         if( set->value && strcmp( set->key, "type" ) != 0 )
    344                         {
    345                                 struct xt_node *xset;
    346                                 xt_add_child( cur, xset = xt_new_node( "setting", set->value, NULL ) );
    347                                 xt_add_attr( xset, "name", set->key );
    348                         }
     330                xml_generate_settings( cur, &ic->set );
    349331               
    350332                xt_add_child( root, cur );
     
    362344       
    363345        return FALSE;
     346}
     347
     348static void xml_generate_settings( struct xt_node *cur, set_t **head )
     349{
     350        set_t *set;
     351       
     352        for( set = *head; set; set = set->next )
     353                if( set->value && !( set->flags & SET_NOSAVE ) )
     354                {
     355                        struct xt_node *xset;
     356                        xt_add_child( cur, xset = xt_new_node( "setting", set->value, NULL ) );
     357                        xt_add_attr( xset, "name", set->key );
     358                }
    364359}
    365360
Note: See TracChangeset for help on using the changeset viewer.