libpurple/protocols/gg/xml.c

branch
soc.2012.gg
changeset 33315
42bbe5b85df8
parent 33314
57013b9e1a8e
child 33343
09f740724036
equal deleted inserted replaced
33314:57013b9e1a8e 33315:42bbe5b85df8
1 #include "xml.h" 1 #include "xml.h"
2
3 #include "debug.h"
2 4
3 gboolean ggp_xml_get_string(const xmlnode *xml, gchar *childName, gchar **var) 5 gboolean ggp_xml_get_string(const xmlnode *xml, gchar *childName, gchar **var)
4 { 6 {
5 char *str; 7 char *str;
6 8
54 56
55 if (succ) 57 if (succ)
56 *var = val; 58 *var = val;
57 return succ; 59 return succ;
58 } 60 }
61
62 gboolean ggp_xml_set_string(xmlnode *xml, gchar *childName, const gchar *val)
63 {
64 g_return_val_if_fail(xml != NULL, FALSE);
65 g_return_val_if_fail(val != NULL, FALSE);
66
67 if (childName != NULL)
68 {
69 xmlnode *child = xmlnode_get_child(xml, childName);
70 if (child == NULL)
71 child = xmlnode_new_child(xml, childName);
72 xml = child;
73 }
74
75 ggp_xmlnode_remove_children(xml);
76 xmlnode_insert_data(xml, val, -1);
77
78 return TRUE;
79 }
80
81 gboolean ggp_xml_set_bool(xmlnode *xml, gchar *childName, gboolean val)
82 {
83 return ggp_xml_set_string(xml, childName, val ? "true" : "false");
84 }
85
86 gboolean ggp_xml_set_uint(xmlnode *xml, gchar *childName, unsigned int val)
87 {
88 gchar buff[20];
89 g_snprintf(buff, sizeof(buff), "%u", val);
90 return ggp_xml_set_string(xml, childName, buff);
91 }
92
93 void ggp_xmlnode_remove_children(xmlnode *xml)
94 {
95 xmlnode *child = xml->child;
96 while (child)
97 {
98 xmlnode *next = child->next;
99 if (child->type != XMLNODE_TYPE_ATTRIB)
100 xmlnode_free(child);
101 child = next;
102 }
103 }

mercurial