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; |