--- a/libpurple/plugins/ssl/ssl.c Sun Aug 11 03:21:34 2013 +0530 +++ b/libpurple/plugins/ssl/ssl.c Sun Aug 11 03:46:44 2013 +0530 @@ -25,27 +25,30 @@ #include "sslconn.h" #include "version.h" -#define SSL_PLUGIN_ID "core-ssl" +#define SSL_PLUGIN_ID "core-ssl" +#define SSL_PLUGIN_DOMAIN (g_quark_from_static_string(SSL_PLUGIN_ID)) static PurplePlugin *ssl_plugin = NULL; static gboolean -probe_ssl_plugins(PurplePlugin *my_plugin) +probe_ssl_plugins(PurplePlugin *my_plugin, GError **error) { PurplePlugin *plugin; - GList *l; + GList *plugins, *l; ssl_plugin = NULL; - for (l = purple_plugins_get_all(); l != NULL; l = l->next) + plugins = purple_plugins_find_all(); + + for (l = plugins; l != NULL; l = l->next) { - plugin = (PurplePlugin *)l->data; + plugin = PURPLE_PLUGIN(l->data); if (plugin == my_plugin) continue; - if (plugin->info != NULL && plugin->info->id != NULL && - strncmp(plugin->info->id, "ssl-", 4) == 0) + if (strncmp(purple_plugin_info_get_id(purple_plugin_get_info(plugin)), + "ssl-", 4) == 0) { if (purple_plugin_is_loaded(plugin) || purple_plugin_load(plugin)) { @@ -56,17 +59,43 @@ } } - return (ssl_plugin != NULL); + g_list_free(plugins); + + if (ssl_plugin == NULL) { + g_set_error(error, SSL_PLUGIN_DOMAIN, 0, + "Could not find a plugin that implements SSL."); + return FALSE; + } else { + return TRUE; + } +} + +static PurplePluginInfo * +plugin_query(GError **error) +{ + return purple_plugin_info_new( + "id", SSL_PLUGIN_ID, + "name", N_("SSL"), + "version", DISPLAY_VERSION, + "category", N_("SSL"), + "summary", N_("Provides a wrapper around SSL support libraries."), + "description", N_("Provides a wrapper around SSL support libraries."), + "author", "Christian Hammond <chipx86@gnupdate.org>", + "website", PURPLE_WEBSITE, + "purple-abi", PURPLE_ABI_VERSION, + "flags", GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL, + NULL + ); } static gboolean -plugin_load(PurplePlugin *plugin) +plugin_load(PurplePlugin *plugin, GError **error) { - return probe_ssl_plugins(plugin); + return probe_ssl_plugins(plugin, error); } static gboolean -plugin_unload(PurplePlugin *plugin) +plugin_unload(PurplePlugin *plugin, GError **error) { if (ssl_plugin != NULL && g_list_find(purple_plugins_get_loaded(), ssl_plugin) != NULL) @@ -79,46 +108,4 @@ return TRUE; } -static PurplePluginInfo info = -{ - PURPLE_PLUGIN_MAGIC, - PURPLE_MAJOR_VERSION, - PURPLE_MINOR_VERSION, - PURPLE_PLUGIN_STANDARD, /**< type */ - NULL, /**< ui_requirement */ - PURPLE_PLUGIN_FLAG_INVISIBLE, /**< flags */ - NULL, /**< dependencies */ - PURPLE_PRIORITY_DEFAULT, /**< priority */ - - SSL_PLUGIN_ID, /**< id */ - N_("SSL"), /**< name */ - DISPLAY_VERSION, /**< version */ - /** summary */ - N_("Provides a wrapper around SSL support libraries."), - /** description */ - N_("Provides a wrapper around SSL support libraries."), - "Christian Hammond <chipx86@gnupdate.org>", - PURPLE_WEBSITE, /**< homepage */ - - plugin_load, /**< load */ - plugin_unload, /**< unload */ - NULL, /**< destroy */ - - NULL, /**< ui_info */ - NULL, /**< extra_info */ - NULL, - NULL, - - /* padding */ - NULL, - NULL, - NULL, - NULL -}; - -static void -init_plugin(PurplePlugin *plugin) -{ -} - -PURPLE_INIT_PLUGIN(ssl, init_plugin, info) +PURPLE_PLUGIN_INIT(ssl, plugin_query, plugin_load, plugin_unload);