libpurple/xmlnode.c

changeset 41647
63c65c9fbb34
parent 40756
3a58ef28ee44
child 41685
ca22b00972d4
--- a/libpurple/xmlnode.c	Mon Sep 05 20:39:46 2022 -0500
+++ b/libpurple/xmlnode.c	Mon Sep 05 20:51:04 2022 -0500
@@ -141,9 +141,7 @@
 				purple_xmlnode_free(attr_node);
 				attr_node = sibling;
 			}
-		}
-		else
-		{
+		} else {
 			attr_node = attr_node->next;
 		}
 		sibling = attr_node;
@@ -158,8 +156,7 @@
 	g_return_if_fail(node != NULL);
 	g_return_if_fail(attr != NULL);
 
-	for(attr_node = node->child; attr_node; attr_node = attr_node->next)
-	{
+	for(attr_node = node->child; attr_node; attr_node = attr_node->next) {
 		if(attr_node->type == PURPLE_XMLNODE_TYPE_ATTRIB &&
 		   purple_strequal(attr,  attr_node->name) &&
 		   purple_strequal(xmlns, attr_node->xmlns))
@@ -282,8 +279,9 @@
 			return current_node->xmlns;
 		} else if (current_node->namespace_map) {
 			ns = g_hash_table_lookup(current_node->namespace_map, "");
-			if (ns && *ns)
+			if (ns && *ns) {
 				return ns;
+			}
 		}
 
 		current_node = current_node->parent;
@@ -339,8 +337,9 @@
 	g_return_if_fail(node != NULL);
 
 	for (child = node->child; child; child = child->next) {
-		if (child->type == PURPLE_XMLNODE_TYPE_TAG)
+		if (child->type == PURPLE_XMLNODE_TYPE_TAG) {
 			purple_xmlnode_strip_prefixes(child);
+		}
 	}
 
 	prefix = purple_xmlnode_get_prefix(node);
@@ -370,8 +369,9 @@
 	if(NULL != node->parent) {
 		if(node->parent->child == node) {
 			node->parent->child = node->next;
-			if (node->parent->lastchild == node)
+			if (node->parent->lastchild == node) {
 				node->parent->lastchild = node->next;
+			}
 		} else {
 			PurpleXmlNode *prev = node->parent->child;
 			while(prev && prev->next != node) {
@@ -379,8 +379,9 @@
 			}
 			if(prev) {
 				prev->next = node->next;
-				if (node->parent->lastchild == node)
+				if (node->parent->lastchild == node) {
 					node->parent->lastchild = prev;
+				}
 			}
 		}
 	}
@@ -399,8 +400,7 @@
 	g_free(node->xmlns);
 	g_free(node->prefix);
 
-	if(node->namespace_map)
-		g_hash_table_destroy(node->namespace_map);
+	g_clear_pointer(&node->namespace_map, g_hash_table_destroy);
 
 	g_free(node);
 }
@@ -428,8 +428,9 @@
 	for(x = parent->child; x; x = x->next) {
 		/* XXX: Is it correct to ignore the namespace for the match if none was specified? */
 		const char *xmlns = NULL;
-		if(ns)
+		if(ns) {
 			xmlns = purple_xmlnode_get_namespace(x);
+		}
 
 		if(x->type == PURPLE_XMLNODE_TYPE_TAG && purple_strequal(parent_name, x->name)
 				&& purple_strequal(ns, xmlns)) {
@@ -438,8 +439,9 @@
 		}
 	}
 
-	if(child_name && ret)
+	if(child_name && ret) {
 		ret = purple_xmlnode_get_child(ret, child_name);
+	}
 
 	g_strfreev(names);
 	return ret;
@@ -455,15 +457,17 @@
 
 	for(c = node->child; c; c = c->next) {
 		if(c->type == PURPLE_XMLNODE_TYPE_DATA) {
-			if(!str)
+			if(!str) {
 				str = g_string_new_len(c->data, c->data_sz);
-			else
+			} else {
 				str = g_string_append_len(str, c->data, c->data_sz);
+			}
 		}
 	}
 
-	if (str == NULL)
+	if (str == NULL) {
 		return NULL;
+	}
 
 	return g_string_free(str, FALSE);
 }
@@ -525,22 +529,23 @@
 		/* Figure out if this node has a different default namespace from parent */
 		const char *xmlns = NULL;
 		const char *parent_xmlns = NULL;
-		if (!prefix)
+		if (!prefix) {
 			xmlns = node->xmlns;
+		}
 
-		if (!xmlns)
+		if (!xmlns) {
 			xmlns = purple_xmlnode_get_default_namespace(node);
-		if (node->parent)
+		}
+		if (node->parent) {
 			parent_xmlns = purple_xmlnode_get_default_namespace(node->parent);
-		if (!purple_strequal(xmlns, parent_xmlns))
-		{
+		}
+		if (!purple_strequal(xmlns, parent_xmlns)) {
 			char *escaped_xmlns = g_markup_escape_text(xmlns, -1);
 			g_string_append_printf(text, " xmlns='%s'", escaped_xmlns);
 			g_free(escaped_xmlns);
 		}
 	}
-	for(c = node->child; c; c = c->next)
-	{
+	for(c = node->child; c; c = c->next) {
 		if(c->type == PURPLE_XMLNODE_TYPE_ATTRIB) {
 			const char *aprefix = purple_xmlnode_get_prefix(c);
 			esc = g_markup_escape_text(c->name, -1);
@@ -553,8 +558,9 @@
 			g_free(esc);
 			g_free(esc2);
 		} else if(c->type == PURPLE_XMLNODE_TYPE_TAG || c->type == PURPLE_XMLNODE_TYPE_DATA) {
-			if(c->type == PURPLE_XMLNODE_TYPE_DATA)
+			if(c->type == PURPLE_XMLNODE_TYPE_DATA) {
 				pretty = FALSE;
+			}
 			need_end = TRUE;
 		}
 	}
@@ -562,8 +568,7 @@
 	if(need_end) {
 		g_string_append_printf(text, ">%s", pretty ? NEWLINE_S : "");
 
-		for(c = node->child; c; c = c->next)
-		{
+		for(c = node->child; c; c = c->next) {
 			if(c->type == PURPLE_XMLNODE_TYPE_TAG) {
 				int esc_len;
 				esc = purple_xmlnode_to_str_helper(c, &esc_len, pretty, depth+1);
@@ -576,8 +581,9 @@
 			}
 		}
 
-		if(tab && pretty)
+		if(tab && pretty) {
 			text = g_string_append(text, tab);
+		}
 		if (prefix) {
 			g_string_append_printf(text, "</%s:%s>%s", prefix, node_name, formatting ? NEWLINE_S : "");
 		} else {
@@ -591,8 +597,9 @@
 
 	g_free(tab);
 
-	if(len)
+	if(len) {
 		*len = text->len;
+	}
 
 	return g_string_free(text, FALSE);
 }
@@ -615,8 +622,9 @@
 		g_strdup_printf("<?xml version='1.0' encoding='UTF-8' ?>" NEWLINE_S NEWLINE_S "%s", xml);
 	g_free(xml);
 
-	if (len)
+	if (len) {
 		*len += sizeof("<?xml version='1.0' encoding='UTF-8' ?>" NEWLINE_S NEWLINE_S) - 1;
+	}
 
 	return xml_with_declaration;
 }
@@ -639,10 +647,11 @@
 	if(!element_name || xpd->error) {
 		return;
 	} else {
-		if(xpd->current)
+		if(xpd->current) {
 			node = purple_xmlnode_new_child(xpd->current, (const char*) element_name);
-		else
+		} else {
 			node = purple_xmlnode_new((const char *) element_name);
+		}
 
 		purple_xmlnode_set_namespace(node, (const char *) xmlns);
 		purple_xmlnode_set_prefix(node, (const char *)prefix);
@@ -682,12 +691,14 @@
 {
 	struct _xmlnode_parser_data *xpd = user_data;
 
-	if(!element_name || !xpd->current || xpd->error)
+	if(!element_name || !xpd->current || xpd->error) {
 		return;
+	}
 
 	if(xpd->current->parent) {
-		if(!xmlStrcmp((xmlChar*) xpd->current->name, element_name))
+		if(!xmlStrcmp((xmlChar*) xpd->current->name, element_name)) {
 			xpd->current = xpd->current->parent;
+		}
 	}
 }
 
@@ -696,11 +707,13 @@
 {
 	struct _xmlnode_parser_data *xpd = user_data;
 
-	if(!xpd->current || xpd->error)
+	if(!xpd->current || xpd->error) {
 		return;
+	}
 
-	if(!text || !text_len)
+	if(!text || !text_len) {
 		return;
+	}
 
 	purple_xmlnode_insert_data(xpd->current, (const char*) text, text_len);
 }
@@ -732,15 +745,16 @@
 		purple_debug_error("xmlnode", "XML parser error for PurpleXmlNode %p: "
 		                   "Domain %i, code %i, level %i: %s",
 		                   user_data, error->domain, error->code, error->level,
-		                   error->message ? error->message : "(null)\n");
-	} else if (error)
+		                   error->message ? error->message : "(null)");
+	} else if (error) {
 		purple_debug_warning("xmlnode", "XML parser error for PurpleXmlNode %p: "
 		                     "Domain %i, code %i, level %i: %s",
 		                     user_data, error->domain, error->code, error->level,
-		                     error->message ? error->message : "(null)\n");
-	else
-		purple_debug_warning("xmlnode", "XML parser error for PurpleXmlNode %p\n",
+		                     error->message ? error->message : "(null)");
+	} else {
+		purple_debug_warning("xmlnode", "XML parser error for PurpleXmlNode %p",
 		                     user_data);
+	}
 }
 
 static xmlSAXHandler purple_xmlnode_parser_libxml = {
@@ -791,17 +805,15 @@
 	xpd = g_new0(struct _xmlnode_parser_data, 1);
 
 	if (xmlSAXUserParseMemory(&purple_xmlnode_parser_libxml, xpd, str, real_size) < 0) {
-		while(xpd->current && xpd->current->parent)
+		while(xpd->current && xpd->current->parent) {
 			xpd->current = xpd->current->parent;
-		if(xpd->current)
-			purple_xmlnode_free(xpd->current);
-		xpd->current = NULL;
+		}
+		g_clear_pointer(&xpd->current, purple_xmlnode_free);
 	}
 	ret = xpd->current;
 	if (xpd->error) {
 		ret = NULL;
-		if (xpd->current)
-			purple_xmlnode_free(xpd->current);
+		g_clear_pointer(&xpd->current, purple_xmlnode_free);
 	}
 
 	g_free(xpd);
@@ -819,40 +831,36 @@
 
 	g_return_val_if_fail(dir != NULL, NULL);
 
-	purple_debug_misc(process, "Reading file %s from directory %s\n",
+	purple_debug_misc(process, "Reading file %s from directory %s",
 					filename, dir);
 
 	filename_full = g_build_filename(dir, filename, NULL);
 
-	if (!g_file_test(filename_full, G_FILE_TEST_EXISTS))
-	{
+	if (!g_file_test(filename_full, G_FILE_TEST_EXISTS)) {
 		purple_debug_info(process, "File %s does not exist (this is not "
-						"necessarily an error)\n", filename_full);
+						"necessarily an error)", filename_full);
 		g_free(filename_full);
 		return NULL;
 	}
 
-	if (!g_file_get_contents(filename_full, &contents, &length, &error))
-	{
-		purple_debug_error(process, "Error reading file %s: %s\n",
+	if (!g_file_get_contents(filename_full, &contents, &length, &error)) {
+		purple_debug_error(process, "Error reading file %s: %s",
 						 filename_full, error->message);
 		g_error_free(error);
 	}
 
-	if ((contents != NULL) && (length > 0))
-	{
+	if ((contents != NULL) && (length > 0)) {
 		node = purple_xmlnode_from_str(contents, length);
 
 		/* If we were unable to parse the file then save its contents to a backup file */
-		if (node == NULL)
-		{
+		if (node == NULL) {
 			gchar *filename_temp, *filename_temp_full;
 
 			filename_temp = g_strdup_printf("%s~", filename);
 			filename_temp_full = g_build_filename(dir, filename_temp, NULL);
 
 			purple_debug_error("util", "Error parsing file %s.  Renaming old "
-							 "file to %s\n", filename_full, filename_temp);
+							 "file to %s", filename_full, filename_temp);
 			g_file_set_contents(filename_temp_full, contents, length, NULL);
 
 			g_free(filename_temp_full);
@@ -863,8 +871,7 @@
 	}
 
 	/* If we could not parse the file then show the user an error message */
-	if (node == NULL)
-	{
+	if (node == NULL) {
 		gchar *title, *msg;
 		title = g_strdup_printf(_("Error Reading %s"), filename);
 		msg = g_strdup_printf(_("An error was encountered reading your "
@@ -940,12 +947,14 @@
 	for(sibling = node->next; sibling; sibling = sibling->next) {
 		/* XXX: Is it correct to ignore the namespace for the match if none was specified? */
 		const char *xmlns = NULL;
-		if(ns)
+		if(ns) {
 			xmlns = purple_xmlnode_get_namespace(sibling);
+		}
 
 		if(sibling->type == PURPLE_XMLNODE_TYPE_TAG && purple_strequal(node->name, sibling->name) &&
-				purple_strequal(ns, xmlns))
+				purple_strequal(ns, xmlns)) {
 			return sibling;
+		}
 	}
 
 	return NULL;

mercurial