libpurple/protocols/jabber/caps.c

branch
soc.2013.gobjectification
changeset 34935
686fa55b0deb
parent 34567
ea5103f66b0e
child 35188
a1592c87b972
child 36692
324db2a53c4c
--- a/libpurple/protocols/jabber/caps.c	Fri Sep 06 21:31:42 2013 +0530
+++ b/libpurple/protocols/jabber/caps.c	Sat Sep 07 00:10:19 2013 +0530
@@ -119,7 +119,7 @@
 	free_string_glist(info->features);
 
 	while (info->forms) {
-		xmlnode_free(info->forms->data);
+		purple_xmlnode_free(info->forms->data);
 		info->forms = g_list_delete_link(info->forms, info->forms);
 	}
 
@@ -153,49 +153,49 @@
 {
 	const char *identifier = key;
 	const GList *features = value, *node;
-	xmlnode *client = user_data, *ext, *feature;
+	PurpleXmlNode *client = user_data, *ext, *feature;
 
-	ext = xmlnode_new_child(client, "ext");
-	xmlnode_set_attrib(ext, "identifier", identifier);
+	ext = purple_xmlnode_new_child(client, "ext");
+	purple_xmlnode_set_attrib(ext, "identifier", identifier);
 
 	for (node = features; node; node = node->next) {
-		feature = xmlnode_new_child(ext, "feature");
-		xmlnode_set_attrib(feature, "var", (const gchar *)node->data);
+		feature = purple_xmlnode_new_child(ext, "feature");
+		purple_xmlnode_set_attrib(feature, "var", (const gchar *)node->data);
 	}
 }
 
 static void jabber_caps_store_client(gpointer key, gpointer value, gpointer user_data) {
 	const JabberCapsTuple *tuple = key;
 	const JabberCapsClientInfo *props = value;
-	xmlnode *root = user_data;
-	xmlnode *client = xmlnode_new_child(root, "client");
+	PurpleXmlNode *root = user_data;
+	PurpleXmlNode *client = purple_xmlnode_new_child(root, "client");
 	GList *iter;
 
-	xmlnode_set_attrib(client, "node", tuple->node);
-	xmlnode_set_attrib(client, "ver", tuple->ver);
+	purple_xmlnode_set_attrib(client, "node", tuple->node);
+	purple_xmlnode_set_attrib(client, "ver", tuple->ver);
 	if (tuple->hash)
-		xmlnode_set_attrib(client, "hash", tuple->hash);
+		purple_xmlnode_set_attrib(client, "hash", tuple->hash);
 	for(iter = props->identities; iter; iter = g_list_next(iter)) {
 		JabberIdentity *id = iter->data;
-		xmlnode *identity = xmlnode_new_child(client, "identity");
-		xmlnode_set_attrib(identity, "category", id->category);
-		xmlnode_set_attrib(identity, "type", id->type);
+		PurpleXmlNode *identity = purple_xmlnode_new_child(client, "identity");
+		purple_xmlnode_set_attrib(identity, "category", id->category);
+		purple_xmlnode_set_attrib(identity, "type", id->type);
 		if (id->name)
-			xmlnode_set_attrib(identity, "name", id->name);
+			purple_xmlnode_set_attrib(identity, "name", id->name);
 		if (id->lang)
-			xmlnode_set_attrib(identity, "lang", id->lang);
+			purple_xmlnode_set_attrib(identity, "lang", id->lang);
 	}
 
 	for(iter = props->features; iter; iter = g_list_next(iter)) {
 		const char *feat = iter->data;
-		xmlnode *feature = xmlnode_new_child(client, "feature");
-		xmlnode_set_attrib(feature, "var", feat);
+		PurpleXmlNode *feature = purple_xmlnode_new_child(client, "feature");
+		purple_xmlnode_set_attrib(feature, "var", feat);
 	}
 
 	for(iter = props->forms; iter; iter = g_list_next(iter)) {
 		/* FIXME: See #7814 */
-		xmlnode *xdata = iter->data;
-		xmlnode_insert_child(client, xmlnode_copy(xdata));
+		PurpleXmlNode *xdata = iter->data;
+		purple_xmlnode_insert_child(client, purple_xmlnode_copy(xdata));
 	}
 
 	/* TODO: Ideally, only save this once-per-node... */
@@ -208,10 +208,10 @@
 {
 	char *str;
 	int length = 0;
-	xmlnode *root = xmlnode_new("capabilities");
+	PurpleXmlNode *root = purple_xmlnode_new("capabilities");
 	g_hash_table_foreach(capstable, jabber_caps_store_client, root);
-	str = xmlnode_to_formatted_str(root, &length);
-	xmlnode_free(root);
+	str = purple_xmlnode_to_formatted_str(root, &length);
+	purple_xmlnode_free(root);
 	purple_util_write_data_to_file(JABBER_CAPS_FILENAME, str, length);
 	g_free(str);
 
@@ -229,46 +229,46 @@
 static void
 jabber_caps_load(void)
 {
-	xmlnode *capsdata = purple_util_read_xml_from_file(JABBER_CAPS_FILENAME, "XMPP capabilities cache");
-	xmlnode *client;
+	PurpleXmlNode *capsdata = purple_util_read_xml_from_file(JABBER_CAPS_FILENAME, "XMPP capabilities cache");
+	PurpleXmlNode *client;
 
 	if(!capsdata)
 		return;
 
 	if (!g_str_equal(capsdata->name, "capabilities")) {
-		xmlnode_free(capsdata);
+		purple_xmlnode_free(capsdata);
 		return;
 	}
 
 	for (client = capsdata->child; client; client = client->next) {
-		if (client->type != XMLNODE_TYPE_TAG)
+		if (client->type != PURPLE_XMLNODE_TYPE_TAG)
 			continue;
 		if (g_str_equal(client->name, "client")) {
 			JabberCapsClientInfo *value = g_new0(JabberCapsClientInfo, 1);
 			JabberCapsTuple *key = (JabberCapsTuple*)&value->tuple;
-			xmlnode *child;
+			PurpleXmlNode *child;
 			JabberCapsNodeExts *exts = NULL;
-			key->node = g_strdup(xmlnode_get_attrib(client,"node"));
-			key->ver  = g_strdup(xmlnode_get_attrib(client,"ver"));
-			key->hash = g_strdup(xmlnode_get_attrib(client,"hash"));
+			key->node = g_strdup(purple_xmlnode_get_attrib(client,"node"));
+			key->ver  = g_strdup(purple_xmlnode_get_attrib(client,"ver"));
+			key->hash = g_strdup(purple_xmlnode_get_attrib(client,"hash"));
 
 			/* v1.3 capabilities */
 			if (key->hash == NULL)
 				exts = jabber_caps_find_exts_by_node(key->node);
 
 			for (child = client->child; child; child = child->next) {
-				if (child->type != XMLNODE_TYPE_TAG)
+				if (child->type != PURPLE_XMLNODE_TYPE_TAG)
 					continue;
 				if (g_str_equal(child->name, "feature")) {
-					const char *var = xmlnode_get_attrib(child, "var");
+					const char *var = purple_xmlnode_get_attrib(child, "var");
 					if(!var)
 						continue;
 					value->features = g_list_append(value->features,g_strdup(var));
 				} else if (g_str_equal(child->name, "identity")) {
-					const char *category = xmlnode_get_attrib(child, "category");
-					const char *type = xmlnode_get_attrib(child, "type");
-					const char *name = xmlnode_get_attrib(child, "name");
-					const char *lang = xmlnode_get_attrib(child, "lang");
+					const char *category = purple_xmlnode_get_attrib(child, "category");
+					const char *type = purple_xmlnode_get_attrib(child, "type");
+					const char *name = purple_xmlnode_get_attrib(child, "name");
+					const char *lang = purple_xmlnode_get_attrib(child, "lang");
 					JabberIdentity *id;
 
 					if (!category || !type)
@@ -285,25 +285,25 @@
 					/* TODO: See #7814 -- this might cause problems if anyone
 					 * ever actually specifies forms. In fact, for this to
 					 * 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));
+					 * purple_xmlnode_from_str, not the output version... */
+					value->forms = g_list_append(value->forms, purple_xmlnode_copy(child));
 				} else if (g_str_equal(child->name, "ext")) {
 					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;
+						const char *identifier = purple_xmlnode_get_attrib(child, "identifier");
+						PurpleXmlNode *node;
 						GList *features = NULL;
 
 						if (!identifier)
 							continue;
 
 						for (node = child->child; node; node = node->next) {
-							if (node->type != XMLNODE_TYPE_TAG)
+							if (node->type != PURPLE_XMLNODE_TYPE_TAG)
 								continue;
 							if (g_str_equal(node->name, "feature")) {
-								const char *var = xmlnode_get_attrib(node, "var");
+								const char *var = purple_xmlnode_get_attrib(node, "var");
 								if (!var)
 									continue;
 								features = g_list_prepend(features, g_strdup(var));
@@ -325,7 +325,7 @@
 
 		}
 	}
-	xmlnode_free(capsdata);
+	purple_xmlnode_free(capsdata);
 }
 
 void jabber_caps_init(void)
@@ -436,9 +436,9 @@
 
 static void
 jabber_caps_client_iqcb(JabberStream *js, const char *from, JabberIqType type,
-                        const char *id, xmlnode *packet, gpointer data)
+                        const char *id, PurpleXmlNode *packet, gpointer data)
 {
-	xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
+	PurpleXmlNode *query = purple_xmlnode_get_child_with_namespace(packet, "query",
 		NS_DISCO_INFO);
 	jabber_caps_cbplususerdata *userdata = data;
 	JabberCapsClientInfo *info = NULL, *value;
@@ -473,7 +473,7 @@
 		if (!hash || !g_str_equal(hash, userdata->ver)) {
 			purple_debug_warning("jabber", "Could not validate caps info from "
 			                     "%s. Expected %s, got %s\n",
-			                     xmlnode_get_attrib(packet, "from"),
+			                     purple_xmlnode_get_attrib(packet, "from"),
 			                     userdata->ver, hash ? hash : "(null)");
 
 			userdata->cb(NULL, NULL, userdata->cb_data);
@@ -530,11 +530,11 @@
 
 static void
 jabber_caps_ext_iqcb(JabberStream *js, const char *from, JabberIqType type,
-                     const char *id, xmlnode *packet, gpointer data)
+                     const char *id, PurpleXmlNode *packet, gpointer data)
 {
-	xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
+	PurpleXmlNode *query = purple_xmlnode_get_child_with_namespace(packet, "query",
 		NS_DISCO_INFO);
-	xmlnode *child;
+	PurpleXmlNode *child;
 	ext_iq_data *userdata = data;
 	GList *features = NULL;
 	JabberCapsNodeExts *node_exts;
@@ -576,9 +576,9 @@
 	 */
 	--userdata->data->extOutstanding;
 
-	for (child = xmlnode_get_child(query, "feature"); child;
-	        child = xmlnode_get_next_twin(child)) {
-		const char *var = xmlnode_get_attrib(child, "var");
+	for (child = purple_xmlnode_get_child(query, "feature"); child;
+	        child = purple_xmlnode_get_next_twin(child)) {
+		const char *var = purple_xmlnode_get_attrib(child, "var");
 		if (var)
 			features = g_list_prepend(features, g_strdup(var));
 	}
@@ -637,16 +637,16 @@
 		/* If we don't have the basic information about the client, we need
 		 * to fetch it. */
 		JabberIq *iq;
-		xmlnode *query;
+		PurpleXmlNode *query;
 		char *nodever;
 
 		iq = jabber_iq_new_query(js, JABBER_IQ_GET, NS_DISCO_INFO);
-		query = xmlnode_get_child_with_namespace(iq->node, "query",
+		query = purple_xmlnode_get_child_with_namespace(iq->node, "query",
 					NS_DISCO_INFO);
 		nodever = g_strdup_printf("%s#%s", node, ver);
-		xmlnode_set_attrib(query, "node", nodever);
+		purple_xmlnode_set_attrib(query, "node", nodever);
 		g_free(nodever);
-		xmlnode_set_attrib(iq->node, "to", who);
+		purple_xmlnode_set_attrib(iq->node, "to", who);
 
 		cbplususerdata_ref(userdata);
 
@@ -673,7 +673,7 @@
 			/* Look it up if we don't already know what it means */
 			if (!g_hash_table_lookup(node_exts->exts, exts[i])) {
 				JabberIq *iq;
-				xmlnode *query;
+				PurpleXmlNode *query;
 				char *nodeext;
 				ext_iq_data *cbdata = g_new(ext_iq_data, 1);
 
@@ -681,12 +681,12 @@
 				cbdata->data = cbplususerdata_ref(userdata);
 
 				iq = jabber_iq_new_query(js, JABBER_IQ_GET, NS_DISCO_INFO);
-				query = xmlnode_get_child_with_namespace(iq->node, "query",
+				query = purple_xmlnode_get_child_with_namespace(iq->node, "query",
 				            NS_DISCO_INFO);
 				nodeext = g_strdup_printf("%s#%s", node, exts[i]);
-				xmlnode_set_attrib(query, "node", nodeext);
+				purple_xmlnode_set_attrib(query, "node", nodeext);
 				g_free(nodeext);
-				xmlnode_set_attrib(iq->node, "to", who);
+				purple_xmlnode_set_attrib(iq->node, "to", who);
 
 				jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, cbdata);
 				jabber_iq_send(iq);
@@ -713,8 +713,8 @@
 static gint
 jabber_xdata_compare(gconstpointer a, gconstpointer b)
 {
-	const xmlnode *aformtypefield = a;
-	const xmlnode *bformtypefield = b;
+	const PurpleXmlNode *aformtypefield = a;
+	const PurpleXmlNode *bformtypefield = b;
 	char *aformtype;
 	char *bformtype;
 	int result;
@@ -728,9 +728,9 @@
 	return result;
 }
 
-JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query)
+JabberCapsClientInfo *jabber_caps_parse_client_info(PurpleXmlNode *query)
 {
-	xmlnode *child;
+	PurpleXmlNode *child;
 	JabberCapsClientInfo *info;
 
 	if (!query || !g_str_equal(query->name, "query") ||
@@ -740,14 +740,14 @@
 	info = g_new0(JabberCapsClientInfo, 1);
 
 	for(child = query->child; child; child = child->next) {
-		if (child->type != XMLNODE_TYPE_TAG)
+		if (child->type != PURPLE_XMLNODE_TYPE_TAG)
 			continue;
 		if (g_str_equal(child->name, "identity")) {
 			/* parse identity */
-			const char *category = xmlnode_get_attrib(child, "category");
-			const char *type = xmlnode_get_attrib(child, "type");
-			const char *name = xmlnode_get_attrib(child, "name");
-			const char *lang = xmlnode_get_attrib(child, "lang");
+			const char *category = purple_xmlnode_get_attrib(child, "category");
+			const char *type = purple_xmlnode_get_attrib(child, "type");
+			const char *name = purple_xmlnode_get_attrib(child, "name");
+			const char *lang = purple_xmlnode_get_attrib(child, "lang");
 			JabberIdentity *id;
 
 			if (!category || !type)
@@ -762,13 +762,13 @@
 			info->identities = g_list_append(info->identities, id);
 		} else if (g_str_equal(child->name, "feature")) {
 			/* parse feature */
-			const char *var = xmlnode_get_attrib(child, "var");
+			const char *var = purple_xmlnode_get_attrib(child, "var");
 			if (var)
 				info->features = g_list_prepend(info->features, g_strdup(var));
 		} else if (g_str_equal(child->name, "x")) {
 			if (purple_strequal(child->xmlns, "jabber:x:data")) {
 				/* x-data form */
-				xmlnode *dataform = xmlnode_copy(child);
+				PurpleXmlNode *dataform = purple_xmlnode_copy(child);
 				info->forms = g_list_append(info->forms, dataform);
 			}
 		}
@@ -784,21 +784,21 @@
 	return strcmp(ac->var, bc->var);
 }
 
-static GList* jabber_caps_xdata_get_fields(const xmlnode *x)
+static GList* jabber_caps_xdata_get_fields(const PurpleXmlNode *x)
 {
 	GList *fields = NULL;
-	xmlnode *field;
+	PurpleXmlNode *field;
 
 	if (!x)
 		return NULL;
 
-	for (field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
-		xmlnode *value;
+	for (field = purple_xmlnode_get_child(x, "field"); field; field = purple_xmlnode_get_next_twin(field)) {
+		PurpleXmlNode *value;
 		JabberDataFormField *xdatafield = g_new0(JabberDataFormField, 1);
-		xdatafield->var = g_strdup(xmlnode_get_attrib(field, "var"));
+		xdatafield->var = g_strdup(purple_xmlnode_get_attrib(field, "var"));
 
-		for (value = xmlnode_get_child(field, "value"); value; value = xmlnode_get_next_twin(value)) {
-			gchar *val = xmlnode_get_data(value);
+		for (value = purple_xmlnode_get_child(field, "value"); value; value = purple_xmlnode_get_next_twin(value)) {
+			gchar *val = purple_xmlnode_get_data(value);
 			xdatafield->values = g_list_prepend(xdatafield->values, val);
 		}
 
@@ -876,7 +876,7 @@
 
 	/* concat x-data forms to the verification string */
 	for(node = info->forms; node; node = node->next) {
-		xmlnode *data = (xmlnode *)node->data;
+		PurpleXmlNode *data = (PurpleXmlNode *)node->data;
 		gchar *formtype = jabber_x_data_get_formtype(data);
 		GList *fields = jabber_caps_xdata_get_fields(data);
 

mercurial