summaryrefslogtreecommitdiff
path: root/src/plugins/pglist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/pglist.c')
-rw-r--r--src/plugins/pglist.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c
index 85421e6..6d47f57 100644
--- a/src/plugins/pglist.c
+++ b/src/plugins/pglist.c
@@ -77,7 +77,7 @@ bool init_all_plugins(GObject *ref)
{
_list.ref = ref;
- browse_directory_for_plugins(&_list, PACKAGE_SOURCE_DIR "/src/plugins");
+ browse_directory_for_plugins(&_list, PACKAGE_SOURCE_DIR "/plugins");
return true;
@@ -200,3 +200,36 @@ GPluginModule *get_one_plugin_for_action(PluginAction action)
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : action = fonctionnalité recherchée. *
+* count = nombre de greffons trouvés. [OUT] *
+* *
+* Description : Founit less greffons offrant le service demandé. *
+* *
+* Retour : Liste de greffons correspondants à libérer de la mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPluginModule **get_all_plugins_for_action(PluginAction action, size_t *count)
+{
+ GPluginModule **result; /* Greffon à retourner */
+ size_t i; /* Boucle de parcours */
+
+ result = NULL;
+ *count = 0;
+
+ for (i = 0; i < _list.plugins_count; i++)
+ if (g_plugin_module_get_action(_list.plugins[i]) & action)
+ {
+ result = (GPluginModule **)realloc(result, ++(*count) * sizeof(GPluginModule *));
+ result[*count - 1] = _list.plugins[i];
+ }
+
+ return result;
+
+}