Mercurial > pidgin
diff libpurple/prefs.c @ 19144:0e30dfac1f46
Added a function to the prefs API to get a list of children names.
author | Eric Polino <aluink@pidgin.im> |
---|---|
date | Mon, 09 Jul 2007 21:29:08 +0000 |
parents | c4518bbca240 |
children | d201f6967183 3eb794691fae |
line wrap: on
line diff
--- a/libpurple/prefs.c Sat Jul 07 01:30:42 2007 +0000 +++ b/libpurple/prefs.c Mon Jul 09 21:29:08 2007 +0000 @@ -35,6 +35,7 @@ #include "prefs.h" #include "debug.h" #include "util.h" +#include "xmlnode.h" #ifdef _WIN32 #include "win32dep.h" @@ -126,6 +127,7 @@ xmlnode_set_attrib(node, "name", pref->name); /* Set the type of this node (if type == PURPLE_PREF_NONE then do nothing) */ + /* XXX: Why aren't we using a switch here? */ if (pref->type == PURPLE_PREF_INT) { xmlnode_set_attrib(node, "type", "int"); snprintf(buf, sizeof(buf), "%d", pref->value.integer); @@ -1325,6 +1327,36 @@ disco_callback_helper_handle(&prefs, handle); } +static xmlnode* +single_pref_to_xmlnode(const struct purple_pref *pref) +{ + xmlnode *node; + struct purple_pref *child; + + node = xmlnode_new("pref"); + xmlnode_set_attrib(node,"name",pref->name); + + for(child = pref->first_child; child != NULL; child = child->sibling) + pref_to_xmlnode(node, child); + + return node; +} + +GList * +purple_prefs_get_children_names(const char *name) +{ + struct purple_pref *pref = find_pref(name); + xmlnode * node = single_pref_to_xmlnode(pref); + xmlnode * child = node->child; + GList * list = NULL; + + for(child = node->child;child;child = child->next){ + list = g_list_append(list,xmlnode_get_attrib(child,"name")); + } + return list; + +} + void purple_prefs_update_old() {