diff libpurple/xmlnode.c @ 18072:3fc94e7c7056

add xmlnode_get_data_unescaped(), and got rid of an unecessary realloc
author Nathan Walp <nwalp@pidgin.im>
date Thu, 07 Jun 2007 21:14:54 +0000
parents 905d69a0ffd7
children 6050348614ab
line wrap: on
line diff
--- a/libpurple/xmlnode.c	Thu Jun 07 14:48:33 2007 +0000
+++ b/libpurple/xmlnode.c	Thu Jun 07 21:14:54 2007 +0000
@@ -333,8 +333,9 @@
 	for(c = node->child; c; c = c->next) {
 		if(c->type == XMLNODE_TYPE_DATA) {
 			if(!str)
-				str = g_string_new("");
-			str = g_string_append_len(str, c->data, c->data_sz);
+				str = g_string_new_len(c->data, c->data_sz);
+			else
+				str = g_string_append_len(str, c->data, c->data_sz);
 		}
 	}
 
@@ -344,6 +345,18 @@
 	return g_string_free(str, FALSE);
 }
 
+char *
+xmlnode_get_data_unescaped(xmlnode *node)
+{
+	char *escaped = xmlnode_get_data(node);
+
+	char *unescaped = escaped ? purple_unescape_html(escaped) : NULL;
+
+	g_free(escaped);
+
+	return unescaped;
+}
+
 static char *
 xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth)
 {