libpurple/protocols/gg/xml.c

branch
soc.2012.gg
changeset 33343
09f740724036
parent 33315
42bbe5b85df8
child 33348
2394cd23ce8f
--- a/libpurple/protocols/gg/xml.c	Fri Aug 17 17:44:23 2012 +0200
+++ b/libpurple/protocols/gg/xml.c	Sun Aug 19 12:41:35 2012 +0200
@@ -12,11 +12,13 @@
 	if (childName != NULL)
 	{
 		xml = xmlnode_get_child(xml, childName);
-		g_return_val_if_fail(xml != NULL, FALSE);
+		if (xml == NULL)
+			return FALSE;
 	}
 	
 	str = xmlnode_get_data(xml);
-	g_return_val_if_fail(str != NULL, FALSE);
+	if (str == NULL)
+		return FALSE;
 	
 	*var = str;
 	return TRUE;
@@ -28,7 +30,8 @@
 	gboolean succ;
 	
 	succ = ggp_xml_get_string(xml, childName, &str);
-	g_return_val_if_fail(succ, FALSE);
+	if (!succ)
+		return FALSE;
 	
 	*var = (strcmp(str, "true") == 0 ||
 		strcmp(str, "True") == 0 ||
@@ -46,7 +49,8 @@
 	unsigned int val;
 	
 	succ = ggp_xml_get_string(xml, childName, &str);
-	g_return_val_if_fail(succ, FALSE);
+	if (!succ)
+		return FALSE;
 	
 	errno = 0;
 	val = strtoul(str, &endptr, 10);
@@ -101,3 +105,32 @@
 		child = next;
 	}
 }
+
+unsigned int ggp_xml_child_count(xmlnode *xml, const gchar *childName)
+{
+	xmlnode *child;
+	unsigned int count = 0;
+	
+	g_return_val_if_fail(xml != NULL, 0);
+	
+	if (childName)
+	{
+		child = xmlnode_get_child(xml, childName);
+		while (child)
+		{
+			child = xmlnode_get_next_twin(child);
+			count++;
+		}
+	}
+	else
+	{
+		child = xml->child;
+		while (child)
+		{
+			child = child->next;
+			count++;
+		}
+	}
+	
+	return count;
+}

mercurial