diff options
Diffstat (limited to 'src/plugins/pglist.c')
-rw-r--r-- | src/plugins/pglist.c | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c index 18a2f3f..bbd2d36 100644 --- a/src/plugins/pglist.c +++ b/src/plugins/pglist.c @@ -499,7 +499,7 @@ void load_remaning_plugins(void) * Paramètres : name = désignation du greffon recherché. * * index = indice du greffon trouvé. [OUT] * * * -* Description : Founit le greffon répondant à un nom donné. * +* Description : Fournit le greffon répondant à un nom donné. * * * * Retour : Instance du greffon trouvé ou NULL si aucun. * * * @@ -548,10 +548,45 @@ GPluginModule *get_plugin_by_name(const char *name, size_t *index) /****************************************************************************** * * +* Paramètres : count = nombre de greffons trouvés. [OUT] * +* * +* Description : Fournit la liste de l'ensemble des greffons. * +* * +* Retour : Liste de tous les greffons chargés. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GPluginModule **get_all_plugins(size_t *count) +{ + GPluginModule **result; /* Liste à retourner */ + size_t i; /* Boucle de parcours */ + + g_rw_lock_reader_lock(&_pg_lock); + + result = malloc(_pg_count * sizeof(GPluginModule *)); + *count = _pg_count; + + for (i = 0; i < _pg_count; i++) + { + result[i] = _pg_list[i]; + g_object_ref(G_OBJECT(_pg_list[i])); + } + + g_rw_lock_reader_unlock(&_pg_lock); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : action = fonctionnalité recherchée. * * count = nombre de greffons trouvés. [OUT] * * * -* Description : Founit les greffons offrant le service demandé. * +* Description : Fournit les greffons offrant le service demandé. * * * * Retour : Liste de greffons correspondants issue d'un tri interne. * * * @@ -562,8 +597,8 @@ GPluginModule *get_plugin_by_name(const char *name, size_t *index) GPluginModule **get_all_plugins_for_action(PluginAction action, size_t *count) { GPluginModule **result; /* Liste à retourner */ - const plugin_interface *pg_iface; /* Informations à consulter */ size_t i; /* Boucle de parcours #1 */ + const plugin_interface *pg_iface; /* Informations à consulter */ size_t j; /* Boucle de parcours #2 */ result = NULL; @@ -579,7 +614,7 @@ GPluginModule **get_all_plugins_for_action(PluginAction action, size_t *count) { if (pg_iface->actions[j] == action) { - result = (GPluginModule **)realloc(result, ++(*count) * sizeof(GPluginModule *)); + result = realloc(result, ++(*count) * sizeof(GPluginModule *)); result[*count - 1] = _pg_list[i]; g_object_ref(G_OBJECT(_pg_list[i])); |