* eina_module: Add eina_module_find. Thanks to Fabiano Fidêncio <fidencio@profusion.mobi>.

SVN revision: 43847
This commit is contained in:
Cedric BAIL 2009-11-20 20:46:24 +00:00
parent 1d16f186fb
commit ffb0bf8830
3 changed files with 33 additions and 0 deletions

View File

@ -12,3 +12,4 @@ Albin "Lutin" Tonnerre <albin.tonnerre@gmail.com>
Andre Dieb <andre.dieb@gmail.com>
Raphael Kubo da Costa <kubo@profusion.mobi>
Gustavo Chaves <glima@profusion.mobi>
Fabiano Fidêncio <fidencio@profusion.mobi>

View File

@ -70,6 +70,7 @@ EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsi
EAPI void eina_module_list_load(Eina_Array *list) EINA_ARG_NONNULL(1);
EAPI void eina_module_list_unload(Eina_Array *list) EINA_ARG_NONNULL(1);
EAPI void eina_module_list_flush(Eina_Array *list) EINA_ARG_NONNULL(1);
EAPI Eina_Module * eina_module_find(Eina_Array *array, char *module) EINA_ARG_NONNULL(1, 2);
/**
* @}

View File

@ -546,6 +546,37 @@ EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsi
return list_get_cb_data.array;
}
/**
* @brief Find an module in array.
*
* @param array The array to find the module.
* @param module The name of module to be searched;
*
* This function finds an @p module in an @p array;
* If the element is found return the module else NULL.
*/
EAPI Eina_Module *
eina_module_find(Eina_Array *array, char *module)
{
unsigned int i;
Eina_Array_Iterator iterator;
Eina_Module *m;
EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
{
const char *file_m;
ssize_t len;
file_m = basename(eina_module_file_get(m));
len = strlen(file_m);
len -= sizeof(MODULE_EXTENSION) - 1;
if (len <= 0) continue;
if (!strncmp(module, file_m, len)) return m;
}
return NULL;
}
/**
* Load every module on the list of modules
* @param array The array of modules to load