--- a/libpurple/plugins.c Sat Aug 03 21:42:55 2013 +0530 +++ b/libpurple/plugins.c Sat Aug 03 22:08:33 2013 +0530 @@ -69,24 +69,21 @@ gboolean purple_plugin_load(PurplePlugin *plugin) { - PurplePluginInfo *info; GError *error = NULL; g_return_val_if_fail(plugin != NULL, FALSE); - info = purple_plugin_get_info(plugin); - if (purple_plugin_is_loaded(plugin)) return TRUE; - if (!info) { + if (!purple_plugin_get_info(plugin)) { purple_debug_error("plugins", "Failed to load plugin %s: Plugin does not return a PluginInfo", purple_plugin_get_filename(plugin)); return FALSE; } - if (!purple_plugin_info_is_loadable(info)) + if (!purple_plugin_is_loadable(plugin)) return FALSE; if (!gplugin_plugin_manager_load_plugin(plugin, &error)) { @@ -167,6 +164,15 @@ } void +purple_plugin_disable(PurplePlugin *plugin) +{ + g_return_if_fail(plugin != NULL); + + if (!g_list_find(plugins_to_disable, plugin)) + plugins_to_disable = g_list_prepend(plugins_to_disable, plugin); +} + +void purple_plugin_add_action(PurplePlugin *plugin, const char* label, PurplePluginActionCallback callback) { @@ -187,13 +193,59 @@ priv->actions = g_list_append(priv->actions, action); } -void -purple_plugin_disable(PurplePlugin *plugin) +GList * +purple_plugin_get_actions(const PurplePlugin *plugin) +{ + PurplePluginInfo *info; + PurplePluginInfoPrivate *priv; + + g_return_val_if_fail(plugin != NULL, NULL); + + info = purple_plugin_get_info(plugin); + priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); + + g_return_val_if_fail(priv != NULL, NULL); + + return priv->actions; +} + +gboolean +purple_plugin_is_loadable(const PurplePlugin *plugin) { - g_return_if_fail(plugin != NULL); + PurplePluginInfo *info; + PurplePluginInfoPrivate *priv; + + g_return_val_if_fail(plugin != NULL, FALSE); + + info = purple_plugin_get_info(plugin); + priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); + + g_return_val_if_fail(priv != NULL, FALSE); + + return priv->loadable; +} - if (!g_list_find(plugins_to_disable, plugin)) - plugins_to_disable = g_list_prepend(plugins_to_disable, plugin); +gchar * +purple_plugin_get_error(const PurplePlugin *plugin) +{ + PurplePluginInfo *info; + PurplePluginInfoPrivate *priv; + + g_return_val_if_fail(plugin != NULL, NULL); + + info = purple_plugin_get_info(plugin); + priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); + + g_return_val_if_fail(priv != NULL, NULL); + + return priv->error; +} + +GSList * +purple_plugin_get_dependent_plugins(const PurplePlugin *plugin) +{ +#warning TODO: Implement this when GPlugin can return dependent plugins. + return NULL; } /************************************************************************** @@ -461,36 +513,6 @@ return gplugin_plugin_info_get_abi_version(GPLUGIN_PLUGIN_INFO(info)); } -GList * -purple_plugin_info_get_actions(const PurplePluginInfo *info) -{ - PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); - - g_return_val_if_fail(priv != NULL, NULL); - - return priv->actions; -} - -gboolean -purple_plugin_info_is_loadable(const PurplePluginInfo *info) -{ - PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); - - g_return_val_if_fail(priv != NULL, FALSE); - - return priv->loadable; -} - -gchar * -purple_plugin_info_get_error(const PurplePluginInfo *info) -{ - PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); - - g_return_val_if_fail(priv != NULL, NULL); - - return priv->error; -} - GSList * purple_plugin_info_get_dependencies(const PurplePluginInfo *info) { @@ -499,13 +521,6 @@ return gplugin_plugin_info_get_dependencies(GPLUGIN_PLUGIN_INFO(info)); } -GSList * -purple_plugin_info_get_dependent_plugins(const PurplePluginInfo *info) -{ -#warning TODO: Implement this when GPlugin can return dependent plugins. - return NULL; -} - void purple_plugin_info_set_pref_frame_callback(PurplePluginInfo *info, PurplePluginPrefFrameCallback callback)