diff options
| author | dequis <dx@dxzone.com.ar> | 2015-01-23 04:01:05 -0300 | 
|---|---|---|
| committer | dequis <dx@dxzone.com.ar> | 2015-02-22 18:19:21 -0300 | 
| commit | d5c55acb585f4c53b6e41eaf2677c6c2f725592d (patch) | |
| tree | 937d2fc449da4ca7d259aba48d6ae10e4f15afb4 | |
| parent | 5ff46180e5378acd6d103d9314175c78530bda7e (diff) | |
storage_xml: replace hackish code with a GHashTableIter
| -rw-r--r-- | storage_xml.c | 29 | 
1 files changed, 9 insertions, 20 deletions
| diff --git a/storage_xml.c b/storage_xml.c index a1892e73..0dd4ec53 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -258,7 +258,6 @@ static storage_status_t xml_check_pass(const char *my_nick, const char *password  } -static gboolean xml_generate_nick(gpointer key, gpointer value, gpointer data);  static void xml_generate_settings(struct xt_node *cur, set_t **head);  struct xt_node *xml_generate(irc_t *irc) @@ -291,6 +290,8 @@ struct xt_node *xml_generate(irc_t *irc)  	xml_generate_settings(cur, &irc->b->set);  	for (acc = irc->b->accounts; acc; acc = acc->next) { +		GHashTableIter iter; +		gpointer key, value;  		unsigned char *pass_cr;  		char *pass_b64;  		int pass_len; @@ -311,14 +312,13 @@ struct xt_node *xml_generate(irc_t *irc)  		g_free(pass_b64); -		/* This probably looks pretty strange. g_hash_table_foreach -		   is quite a PITA already (but it can't get much better in -		   C without using #define, I'm afraid), and it -		   doesn't seem to be possible to abort the foreach on write -		   errors, so instead let's use the _find function and -		   return TRUE on write errors. Which means, if we found -		   something, there was an error. :-) */ -		g_hash_table_find(acc->nicks, xml_generate_nick, cur); +		g_hash_table_iter_init(&iter, acc->nicks); +		while (g_hash_table_iter_next(&iter, &key, &value)) { +			struct xt_node *node = xt_new_node("buddy", NULL, NULL); +			xt_add_attr(node, "handle", key); +			xt_add_attr(node, "nick", value); +			xt_add_child(cur, node); +		}  		xml_generate_settings(cur, &acc->set); @@ -344,17 +344,6 @@ struct xt_node *xml_generate(irc_t *irc)  	return root;  } -static gboolean xml_generate_nick(gpointer key, gpointer value, gpointer data) -{ -	struct xt_node *node = xt_new_node("buddy", NULL, NULL); - -	xt_add_attr(node, "handle", key); -	xt_add_attr(node, "nick", value); -	xt_add_child((struct xt_node *) data, node); - -	return FALSE; -} -  static void xml_generate_settings(struct xt_node *cur, set_t **head)  {  	set_t *set; | 
