| 29 |
29 |
| 30 #include "xml.h" |
30 #include "xml.h" |
| 31 |
31 |
| 32 #include "debug.h" |
32 #include "debug.h" |
| 33 |
33 |
| 34 gboolean ggp_xml_get_string(const xmlnode *xml, gchar *childName, gchar **var) |
34 gboolean ggp_xml_get_string(const PurpleXmlNode *xml, gchar *childName, gchar **var) |
| 35 { |
35 { |
| 36 char *str; |
36 char *str; |
| 37 |
37 |
| 38 g_return_val_if_fail(xml != NULL, FALSE); |
38 g_return_val_if_fail(xml != NULL, FALSE); |
| 39 g_return_val_if_fail(var != NULL, FALSE); |
39 g_return_val_if_fail(var != NULL, FALSE); |
| 40 |
40 |
| 41 if (childName != NULL) |
41 if (childName != NULL) |
| 42 { |
42 { |
| 43 xml = xmlnode_get_child(xml, childName); |
43 xml = purple_xmlnode_get_child(xml, childName); |
| 44 if (xml == NULL) |
44 if (xml == NULL) |
| 45 return FALSE; |
45 return FALSE; |
| 46 } |
46 } |
| 47 |
47 |
| 48 str = xmlnode_get_data(xml); |
48 str = purple_xmlnode_get_data(xml); |
| 49 if (str == NULL) |
49 if (str == NULL) |
| 50 return FALSE; |
50 return FALSE; |
| 51 |
51 |
| 52 *var = str; |
52 *var = str; |
| 53 return TRUE; |
53 return TRUE; |
| 54 } |
54 } |
| 55 |
55 |
| 56 gboolean ggp_xml_get_bool(const xmlnode *xml, gchar *childName, gboolean *var) |
56 gboolean ggp_xml_get_bool(const PurpleXmlNode *xml, gchar *childName, gboolean *var) |
| 57 { |
57 { |
| 58 char *str; |
58 char *str; |
| 59 gboolean succ; |
59 gboolean succ; |
| 60 |
60 |
| 61 succ = ggp_xml_get_string(xml, childName, &str); |
61 succ = ggp_xml_get_string(xml, childName, &str); |
| 90 if (succ) |
90 if (succ) |
| 91 *var = val; |
91 *var = val; |
| 92 return succ; |
92 return succ; |
| 93 } |
93 } |
| 94 |
94 |
| 95 gboolean ggp_xml_set_string(xmlnode *xml, gchar *childName, const gchar *val) |
95 gboolean ggp_xml_set_string(PurpleXmlNode *xml, gchar *childName, const gchar *val) |
| 96 { |
96 { |
| 97 g_return_val_if_fail(xml != NULL, FALSE); |
97 g_return_val_if_fail(xml != NULL, FALSE); |
| 98 g_return_val_if_fail(val != NULL, FALSE); |
98 g_return_val_if_fail(val != NULL, FALSE); |
| 99 |
99 |
| 100 if (childName != NULL) |
100 if (childName != NULL) |
| 101 { |
101 { |
| 102 xmlnode *child = xmlnode_get_child(xml, childName); |
102 PurpleXmlNode *child = purple_xmlnode_get_child(xml, childName); |
| 103 if (child == NULL) |
103 if (child == NULL) |
| 104 child = xmlnode_new_child(xml, childName); |
104 child = purple_xmlnode_new_child(xml, childName); |
| 105 xml = child; |
105 xml = child; |
| 106 } |
106 } |
| 107 |
107 |
| 108 ggp_xmlnode_remove_children(xml); |
108 ggp_xmlnode_remove_children(xml); |
| 109 xmlnode_insert_data(xml, val, -1); |
109 purple_xmlnode_insert_data(xml, val, -1); |
| 110 |
110 |
| 111 return TRUE; |
111 return TRUE; |
| 112 } |
112 } |
| 113 |
113 |
| 114 gboolean ggp_xml_set_bool(xmlnode *xml, gchar *childName, gboolean val) |
114 gboolean ggp_xml_set_bool(PurpleXmlNode *xml, gchar *childName, gboolean val) |
| 115 { |
115 { |
| 116 return ggp_xml_set_string(xml, childName, val ? "true" : "false"); |
116 return ggp_xml_set_string(xml, childName, val ? "true" : "false"); |
| 117 } |
117 } |
| 118 |
118 |
| 119 gboolean ggp_xml_set_uint(xmlnode *xml, gchar *childName, unsigned int val) |
119 gboolean ggp_xml_set_uint(PurpleXmlNode *xml, gchar *childName, unsigned int val) |
| 120 { |
120 { |
| 121 gchar buff[20]; |
121 gchar buff[20]; |
| 122 g_snprintf(buff, sizeof(buff), "%u", val); |
122 g_snprintf(buff, sizeof(buff), "%u", val); |
| 123 return ggp_xml_set_string(xml, childName, buff); |
123 return ggp_xml_set_string(xml, childName, buff); |
| 124 } |
124 } |
| 125 |
125 |
| 126 void ggp_xmlnode_remove_children(xmlnode *xml) |
126 void ggp_xmlnode_remove_children(PurpleXmlNode *xml) |
| 127 { |
127 { |
| 128 xmlnode *child = xml->child; |
128 PurpleXmlNode *child = xml->child; |
| 129 while (child) |
129 while (child) |
| 130 { |
130 { |
| 131 xmlnode *next = child->next; |
131 PurpleXmlNode *next = child->next; |
| 132 if (child->type != XMLNODE_TYPE_ATTRIB) |
132 if (child->type != PURPLE_XMLNODE_TYPE_ATTRIB) |
| 133 xmlnode_free(child); |
133 purple_xmlnode_free(child); |
| 134 child = next; |
134 child = next; |
| 135 } |
135 } |
| 136 } |
136 } |
| 137 |
137 |
| 138 unsigned int ggp_xml_child_count(xmlnode *xml, const gchar *childName) |
138 unsigned int ggp_xml_child_count(PurpleXmlNode *xml, const gchar *childName) |
| 139 { |
139 { |
| 140 xmlnode *child; |
140 PurpleXmlNode *child; |
| 141 unsigned int count = 0; |
141 unsigned int count = 0; |
| 142 |
142 |
| 143 g_return_val_if_fail(xml != NULL, 0); |
143 g_return_val_if_fail(xml != NULL, 0); |
| 144 |
144 |
| 145 if (childName) |
145 if (childName) |
| 146 { |
146 { |
| 147 child = xmlnode_get_child(xml, childName); |
147 child = purple_xmlnode_get_child(xml, childName); |
| 148 while (child) |
148 while (child) |
| 149 { |
149 { |
| 150 child = xmlnode_get_next_twin(child); |
150 child = purple_xmlnode_get_next_twin(child); |
| 151 count++; |
151 count++; |
| 152 } |
152 } |
| 153 } |
153 } |
| 154 else |
154 else |
| 155 { |
155 { |