summaryrefslogtreecommitdiff
path: root/libpurple/protocols/jabber/xdata.c
diff options
context:
space:
mode:
authorMarcus Lundblad <malu@pidgin.im>2010-08-31 18:28:10 +0000
committerMarcus Lundblad <malu@pidgin.im>2010-08-31 18:28:10 +0000
commit5fc609e8fed5539079413d29fa6c23167e9cc718 (patch)
tree09fe88b7b9c8ad75a3980b876ca970adc0d458f3 /libpurple/protocols/jabber/xdata.c
parent24f0a2f2edff9c48f57dd3607ad17b709470a1ff (diff)
parentd96df2d0de45a2b4b0dc5e0dfddb2e13b3c8bb44 (diff)
downloadpidgin-cpw.malu.xmpp.google_refactor.tar.gz
propagate from branch 'im.pidgin.pidgin' (head f9599fe0199c86262cea569a5dfb4081df23691d)cpw.malu.xmpp.google_refactor
to branch 'im.pidgin.cpw.malu.xmpp.google_refactor' (head 93935229617363d8fdaf50a9a350c93f0987f66c)
Diffstat (limited to 'libpurple/protocols/jabber/xdata.c')
-rw-r--r--libpurple/protocols/jabber/xdata.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/libpurple/protocols/jabber/xdata.c b/libpurple/protocols/jabber/xdata.c
index 64ca60586e..e681694396 100644
--- a/libpurple/protocols/jabber/xdata.c
+++ b/libpurple/protocols/jabber/xdata.c
@@ -411,4 +411,30 @@ void *jabber_x_data_request_with_actions(JabberStream *js, xmlnode *packet, GLis
return handle;
}
+gchar *
+jabber_x_data_get_formtype(const xmlnode *form)
+{
+ xmlnode *field;
+
+ g_return_val_if_fail(form != NULL, NULL);
+
+ for (field = xmlnode_get_child((xmlnode *)form, "field"); field;
+ field = xmlnode_get_next_twin(field)) {
+ const char *var = xmlnode_get_attrib(field, "var");
+ if (purple_strequal(var, "FORM_TYPE")) {
+ xmlnode *value = xmlnode_get_child(field, "value");
+ if (value)
+ return xmlnode_get_data(value);
+ else
+ /* An interesting corner case... Looking for a second
+ * FORM_TYPE would be more considerate, but I'm in favor
+ * of not helping broken clients.
+ */
+ return NULL;
+ }
+ }
+
+ /* Erm, none found :( */
+ return NULL;
+}