diff libpurple/protocols/jabber/caps.c @ 31590:f762bcb55249

jabber/caps: Reorganize for the purpose of making clang's analyzer happier
author Paul Aurich <paul@darkrain42.org>
date Wed, 11 May 2011 04:20:12 +0000
parents a8cc50c2279f
children 3caef255ad47 3828a61c44da
line wrap: on
line diff
--- a/libpurple/protocols/jabber/caps.c	Wed May 11 02:42:52 2011 +0000
+++ b/libpurple/protocols/jabber/caps.c	Wed May 11 04:20:12 2011 +0000
@@ -285,34 +285,36 @@
 					 * work properly, that bug needs to be fixed in
 					 * xmlnode_from_str, not the output version... */
 					value->forms = g_list_append(value->forms, xmlnode_copy(child));
-				} else if (g_str_equal(child->name, "ext") && key->hash != NULL) {
-					purple_debug_warning("jabber", "Ignoring exts when reading new-style caps\n");
 				} else if (g_str_equal(child->name, "ext")) {
-					/* TODO: Do we care about reading in the identities listed here? */
-					const char *identifier = xmlnode_get_attrib(child, "identifier");
-					xmlnode *node;
-					GList *features = NULL;
+					if (key->hash != NULL)
+						purple_debug_warning("jabber", "Ignoring exts when reading new-style caps\n");
+					else {
+						/* TODO: Do we care about reading in the identities listed here? */
+						const char *identifier = xmlnode_get_attrib(child, "identifier");
+						xmlnode *node;
+						GList *features = NULL;
 
-					if (!identifier)
-						continue;
-
-					for (node = child->child; node; node = node->next) {
-						if (node->type != XMLNODE_TYPE_TAG)
+						if (!identifier)
 							continue;
-						if (g_str_equal(node->name, "feature")) {
-							const char *var = xmlnode_get_attrib(node, "var");
-							if (!var)
+
+						for (node = child->child; node; node = node->next) {
+							if (node->type != XMLNODE_TYPE_TAG)
 								continue;
-							features = g_list_prepend(features, g_strdup(var));
+							if (g_str_equal(node->name, "feature")) {
+								const char *var = xmlnode_get_attrib(node, "var");
+								if (!var)
+									continue;
+								features = g_list_prepend(features, g_strdup(var));
+							}
 						}
+
+						if (features) {
+							g_hash_table_insert(exts->exts, g_strdup(identifier),
+							                    features);
+						} else
+							purple_debug_warning("jabber", "Caps ext %s had no features.\n",
+							                     identifier);
 					}
-
-					if (features) {
-						g_hash_table_insert(exts->exts, g_strdup(identifier),
-						                    features);
-					} else
-						purple_debug_warning("jabber", "Caps ext %s had no features.\n",
-						                     identifier);
 				}
 			}