--- 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);