diff options
author | Marcus Lundblad <malu@pidgin.im> | 2010-08-31 18:28:10 +0000 |
---|---|---|
committer | Marcus Lundblad <malu@pidgin.im> | 2010-08-31 18:28:10 +0000 |
commit | 5fc609e8fed5539079413d29fa6c23167e9cc718 (patch) | |
tree | 09fe88b7b9c8ad75a3980b876ca970adc0d458f3 /libpurple/protocols/jabber/xdata.c | |
parent | 24f0a2f2edff9c48f57dd3607ad17b709470a1ff (diff) | |
parent | d96df2d0de45a2b4b0dc5e0dfddb2e13b3c8bb44 (diff) | |
download | pidgin-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.c | 26 |
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; +} |