Mercurial > pidgin
diff libpurple/protocols/jabber/jabber.c @ 17836:95affacf6f82
Added the ability to define extensions to caps
author | Andreas Monitzer <pidgin@monitzer.com> |
---|---|
date | Wed, 06 Jun 2007 01:19:49 +0000 |
parents | 6ab1089e2101 |
children | 0370da969e8a |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Wed Jun 06 00:04:29 2007 +0000 +++ b/libpurple/protocols/jabber/jabber.c Wed Jun 06 01:19:49 2007 +0000 @@ -1024,6 +1024,12 @@ #endif if(js->serverFQDN) g_free(js->serverFQDN); + while(js->features) { + g_free(((JabberFeature*)js->features->data)->shortname); + g_free(((JabberFeature*)js->features->data)->namespace); + g_free(js->features->data); + js->features = g_list_delete_link(js->features, js->features); + } g_free(js->server_name); g_free(js->gmail_last_time); g_free(js->gmail_last_tid); @@ -1093,6 +1099,32 @@ js->idle = idle ? time(NULL) - idle : idle; } +void jabber_add_feature(JabberStream *js, const char *shortname, const char *namespace) { + JabberFeature *feat = g_new0(JabberFeature,1); + feat->shortname = g_strdup(shortname); + feat->namespace = g_strdup(namespace); + + /* try to remove just in case it already exists in the list */ + jabber_remove_feature(js, shortname); + + js->features = g_list_append(js->features, feat); +} + +void jabber_remove_feature(JabberStream *js, const char *shortname) { + GList *feature; + for(feature = js->features; feature; feature = feature->next) { + JabberFeature *feat = (JabberFeature*)feature->data; + if(!strcmp(feat->shortname, shortname)) { + g_free(feat->shortname); + g_free(feat->namespace); + + g_free(feature->data); + feature = g_list_delete_link(feature, feature); + break; + } + } +} + const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b) { return "jabber";