Mercurial > pidgin.yaz
comparison src/xmlnode.c @ 10425:9903182f2aac
[gaim-migrate @ 11677]
Added a util function to read an xml file and parse it into an xmlnode tree
Changed accounts.xml reading to use xmlnode's
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sun, 26 Dec 2004 22:52:52 +0000 |
| parents | 108151be77a3 |
| children | 703f722d076f |
comparison
equal
deleted
inserted
replaced
| 10424:108151be77a3 | 10425:9903182f2aac |
|---|---|
| 146 attrib_node->data = g_strdup(value); | 146 attrib_node->data = g_strdup(value); |
| 147 | 147 |
| 148 xmlnode_insert_child(node, attrib_node); | 148 xmlnode_insert_child(node, attrib_node); |
| 149 } | 149 } |
| 150 | 150 |
| 151 const char* | 151 const char * |
| 152 xmlnode_get_attrib(xmlnode *node, const char *attr) | 152 xmlnode_get_attrib(xmlnode *node, const char *attr) |
| 153 { | 153 { |
| 154 xmlnode *x; | 154 xmlnode *x; |
| 155 | 155 |
| 156 g_return_val_if_fail(node != NULL, NULL); | 156 g_return_val_if_fail(node != NULL, NULL); |
| 229 GString *str = NULL; | 229 GString *str = NULL; |
| 230 xmlnode *c; | 230 xmlnode *c; |
| 231 | 231 |
| 232 g_return_val_if_fail(node != NULL, NULL); | 232 g_return_val_if_fail(node != NULL, NULL); |
| 233 | 233 |
| 234 | |
| 235 for(c = node->child; c; c = c->next) { | 234 for(c = node->child; c; c = c->next) { |
| 236 if(c->type == XMLNODE_TYPE_DATA) { | 235 if(c->type == XMLNODE_TYPE_DATA) { |
| 237 if(!str) | 236 if(!str) |
| 238 str = g_string_new(""); | 237 str = g_string_new(""); |
| 239 str = g_string_append_len(str, c->data, c->data_sz); | 238 str = g_string_append_len(str, c->data, c->data_sz); |
| 244 return NULL; | 243 return NULL; |
| 245 | 244 |
| 246 return g_string_free(str, FALSE); | 245 return g_string_free(str, FALSE); |
| 247 } | 246 } |
| 248 | 247 |
| 249 static gchar * | 248 static char * |
| 250 xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) | 249 xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) |
| 251 { | 250 { |
| 252 GString *text = g_string_new(""); | 251 GString *text = g_string_new(""); |
| 253 xmlnode *c; | 252 xmlnode *c; |
| 254 char *node_name, *esc, *esc2, *tab = NULL; | 253 char *node_name, *esc, *esc2, *tab = NULL; |
| 315 *len = text->len; | 314 *len = text->len; |
| 316 | 315 |
| 317 return g_string_free(text, FALSE); | 316 return g_string_free(text, FALSE); |
| 318 } | 317 } |
| 319 | 318 |
| 320 gchar * | 319 char * |
| 321 xmlnode_to_str(xmlnode *node, int *len) | 320 xmlnode_to_str(xmlnode *node, int *len) |
| 322 { | 321 { |
| 323 return xmlnode_to_str_helper(node, len, FALSE, 0); | 322 return xmlnode_to_str_helper(node, len, FALSE, 0); |
| 324 } | 323 } |
| 325 | 324 |
| 326 gchar * | 325 char * |
| 327 xmlnode_to_formatted_str(xmlnode *node, int *len) | 326 xmlnode_to_formatted_str(xmlnode *node, int *len) |
| 328 { | 327 { |
| 329 gchar *xml, *xml_with_declaration; | 328 char *xml, *xml_with_declaration; |
| 330 | 329 |
| 331 xml = xmlnode_to_str_helper(node, len, TRUE, 0); | 330 xml = xmlnode_to_str_helper(node, len, TRUE, 0); |
| 332 xml_with_declaration = | 331 xml_with_declaration = |
| 333 g_strdup_printf("<?xml version='1.0' encoding='UTF-8' ?>\n\n%s", xml); | 332 g_strdup_printf("<?xml version='1.0' encoding='UTF-8' ?>\n\n%s", xml); |
| 334 g_free(xml); | 333 g_free(xml); |
