libpurple/plugins/ssl/ssl.c

branch
soc.2013.gobjectification.plugins
changeset 36501
a7a71bf77f83
parent 36367
891eea799578
child 36505
60c161851325
--- 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);

mercurial