diff -r a7a71bf77f83 -r dfce617913fe libpurple/plugins/keyrings/internalkeyring.c --- a/libpurple/plugins/keyrings/internalkeyring.c Sun Aug 11 03:46:44 2013 +0530 +++ b/libpurple/plugins/keyrings/internalkeyring.c Sun Aug 11 04:56:32 2013 +0530 @@ -40,6 +40,7 @@ "storage behaviour for libpurple.") #define INTKEYRING_AUTHOR "Tomek Wasilczyk (tomkiewicz@cpw.pidgin.im)" #define INTKEYRING_ID PURPLE_DEFAULT_KEYRING +#define INTKEYRING_DOMAIN (g_quark_from_static_string(INTKEYRING_ID)) #define INTKEYRING_VERIFY_STR "[verification-string]" #define INTKEYRING_PBKDF2_ITERATIONS 10000 @@ -954,9 +955,39 @@ return TRUE; } +static PurplePluginInfo * +plugin_query(GError **error) +{ + return purple_plugin_info_new( + "id", INTKEYRING_ID, + "name", INTKEYRING_NAME, + "version", DISPLAY_VERSION, + "category", N_("Keyring"), + "summary", "Internal Keyring Plugin", + "description", INTKEYRING_DESCRIPTION, + "author", INTKEYRING_AUTHOR, + "website", PURPLE_WEBSITE, + "purple-abi", PURPLE_ABI_VERSION, + "flags", GPLUGIN_PLUGIN_INFO_FLAGS_INTERNAL, + NULL + ); +} + static gboolean -intkeyring_load(PurplePlugin *plugin) +plugin_load(PurplePlugin *plugin, GError **error) { + purple_prefs_add_none("/plugins/keyrings"); + purple_prefs_add_none("/plugins/keyrings/internal"); + purple_prefs_add_bool(INTKEYRING_PREFS "encrypt_passwords", FALSE); + purple_prefs_add_string(INTKEYRING_PREFS "encryption_method", + INTKEYRING_ENCRYPTION_METHOD); + purple_prefs_add_int(INTKEYRING_PREFS "pbkdf2_desired_iterations", + INTKEYRING_PBKDF2_ITERATIONS); + purple_prefs_add_int(INTKEYRING_PREFS "pbkdf2_iterations", + INTKEYRING_PBKDF2_ITERATIONS); + purple_prefs_add_string(INTKEYRING_PREFS "pbkdf2_salt", ""); + purple_prefs_add_string(INTKEYRING_PREFS "key_verifier", ""); + keyring_handler = purple_keyring_new(); purple_keyring_set_name(keyring_handler, _(INTKEYRING_NAME)); @@ -982,9 +1013,11 @@ } static gboolean -intkeyring_unload(PurplePlugin *plugin) +plugin_unload(PurplePlugin *plugin, GError **error) { if (purple_keyring_get_inuse() == keyring_handler) { + g_set_error(error, INTKEYRING_DOMAIN, 0, "The keyring is currently " + "in use."); purple_debug_warning("keyring-internal", "keyring in use, cannot unload\n"); return FALSE; @@ -1006,47 +1039,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 */ - INTKEYRING_ID, /* id */ - INTKEYRING_NAME, /* name */ - DISPLAY_VERSION, /* version */ - "Internal Keyring Plugin", /* summary */ - INTKEYRING_DESCRIPTION, /* description */ - INTKEYRING_AUTHOR, /* author */ - PURPLE_WEBSITE, /* homepage */ - intkeyring_load, /* load */ - intkeyring_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_prefs_add_none("/plugins/keyrings"); - purple_prefs_add_none("/plugins/keyrings/internal"); - purple_prefs_add_bool(INTKEYRING_PREFS "encrypt_passwords", FALSE); - purple_prefs_add_string(INTKEYRING_PREFS "encryption_method", - INTKEYRING_ENCRYPTION_METHOD); - purple_prefs_add_int(INTKEYRING_PREFS "pbkdf2_desired_iterations", - INTKEYRING_PBKDF2_ITERATIONS); - purple_prefs_add_int(INTKEYRING_PREFS "pbkdf2_iterations", - INTKEYRING_PBKDF2_ITERATIONS); - purple_prefs_add_string(INTKEYRING_PREFS "pbkdf2_salt", ""); - purple_prefs_add_string(INTKEYRING_PREFS "key_verifier", ""); -} - -PURPLE_INIT_PLUGIN(internal_keyring, init_plugin, plugininfo) +PURPLE_PLUGIN_INIT(gnome_keyring, plugin_query, plugin_load, plugin_unload);