--- 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);