libpurple/plugins/keyrings/gnomekeyring.c

branch
soc.2013.gobjectification.plugins
changeset 36502
dfce617913fe
parent 36459
b52f5391d12d
child 36505
60c161851325
--- a/libpurple/plugins/keyrings/gnomekeyring.c	Sun Aug 11 03:46:44 2013 +0530
+++ b/libpurple/plugins/keyrings/gnomekeyring.c	Sun Aug 11 04:56:32 2013 +0530
@@ -39,6 +39,7 @@
 	"GNOME Keyring.")
 #define GNOMEKEYRING_AUTHOR      "Tomek Wasilczyk (tomkiewicz@cpw.pidgin.im)"
 #define GNOMEKEYRING_ID          "keyring-gnomekeyring"
+#define GNOMEKEYRING_DOMAIN      (g_quark_from_static_string(GNOMEKEYRING_ID))
 
 static PurpleKeyring *keyring_handler = NULL;
 static GList *request_queue = NULL;
@@ -377,10 +378,30 @@
 	gnomekeyring_cancel();
 }
 
+static PurplePluginInfo *
+plugin_query(GError **error)
+{
+	return purple_plugin_info_new(
+		"id",           GNOMEKEYRING_ID,
+		"name",         GNOMEKEYRING_NAME,
+		"version",      DISPLAY_VERSION,
+		"category",     N_("Keyring"),
+		"summary",      "GNOME Keyring Plugin",
+		"description",  GNOMEKEYRING_DESCRIPTION,
+		"author",       GNOMEKEYRING_AUTHOR,
+		"website",      PURPLE_WEBSITE,
+		"purple-abi",   PURPLE_ABI_VERSION,
+		"flags",        GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL,
+		NULL
+	);
+}
+
 static gboolean
-gnomekeyring_load(PurplePlugin *plugin)
+plugin_load(PurplePlugin *plugin, GError **error)
 {
 	if (!gnome_keyring_is_available()) {
+		g_set_error(error, GNOMEKEYRING_DOMAIN, 0, "GNOME Keyring service is "
+			"disabled.");
 		purple_debug_info("keyring-gnome", "GNOME Keyring service is "
 			"disabled\n");
 		return FALSE;
@@ -402,9 +423,11 @@
 }
 
 static gboolean
-gnomekeyring_unload(PurplePlugin *plugin)
+plugin_unload(PurplePlugin *plugin, GError **error)
 {
 	if (purple_keyring_get_inuse() == keyring_handler) {
+		g_set_error(error, GNOMEKEYRING_DOMAIN, 0, "The keyring is currently "
+			"in use.");
 		purple_debug_warning("keyring-gnome",
 			"keyring in use, cannot unload\n");
 		return FALSE;
@@ -419,36 +442,4 @@
 	return TRUE;
 }
 
-PurplePluginInfo plugininfo =
-{
-	PURPLE_PLUGIN_MAGIC,		/* magic */
-	PURPLE_MAJOR_VERSION,		/* major_version */
-	PURPLE_MINOR_VERSION,		/* minor_version */
-	PURPLE_PLUGIN_STANDARD,		/* type */
-	NULL,				/* ui_requirement */
-	PURPLE_PLUGIN_FLAG_INVISIBLE,	/* flags */
-	NULL,				/* dependencies */
-	PURPLE_PRIORITY_DEFAULT,	/* priority */
-	GNOMEKEYRING_ID,		/* id */
-	GNOMEKEYRING_NAME,		/* name */
-	DISPLAY_VERSION,		/* version */
-	"GNOME Keyring Plugin",		/* summary */
-	GNOMEKEYRING_DESCRIPTION,	/* description */
-	GNOMEKEYRING_AUTHOR,		/* author */
-	PURPLE_WEBSITE,			/* homepage */
-	gnomekeyring_load,		/* load */
-	gnomekeyring_unload,		/* unload */
-	NULL,				/* destroy */
-	NULL,				/* ui_info */
-	NULL,				/* extra_info */
-	NULL,				/* prefs_info */
-	NULL,				/* actions */
-	NULL, NULL, NULL, NULL		/* padding */
-};
-
-static void
-init_plugin(PurplePlugin *plugin)
-{
-}
-
-PURPLE_INIT_PLUGIN(gnome_keyring, init_plugin, plugininfo)
+PURPLE_PLUGIN_INIT(gnome_keyring, plugin_query, plugin_load, plugin_unload);

mercurial