forked from enlightenment/efl
*API CHANGE*
- Use Ecore_Path_Group instead of the group id - remove the name SVN revision: 32410
This commit is contained in:
parent
b8c6905eb0
commit
a64803dea8
|
@ -285,37 +285,37 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
typedef struct _ecore_path_group Ecore_Path_Group;
|
typedef struct _ecore_path_group Ecore_Path_Group;
|
||||||
|
# define ECORE_PATH_GROUP(group) ((Ecore_Path_Group *)(group))
|
||||||
|
|
||||||
struct _ecore_path_group
|
struct _ecore_path_group
|
||||||
{
|
{
|
||||||
int id;
|
|
||||||
char *name;
|
|
||||||
Ecore_List *paths;
|
Ecore_List *paths;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new path group
|
* Create a new path group
|
||||||
*/
|
*/
|
||||||
EAPI int ecore_path_group_new(const char *group_name);
|
EAPI Ecore_Path_Group *ecore_path_group_new(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Destroy a previous path group
|
* Destroy a previous path group
|
||||||
*/
|
*/
|
||||||
EAPI void ecore_path_group_del(int group_id);
|
EAPI void ecore_path_group_del(Ecore_Path_Group *group);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a directory to be searched for files
|
* Add a directory to be searched for files
|
||||||
*/
|
*/
|
||||||
EAPI void ecore_path_group_add(int group_id, const char *path);
|
EAPI void ecore_path_group_add(Ecore_Path_Group *group, const char *path);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove a directory to be searched for files
|
* Remove a directory to be searched for files
|
||||||
*/
|
*/
|
||||||
EAPI void ecore_path_group_remove(int group_id, const char *path);
|
EAPI void ecore_path_group_remove(Ecore_Path_Group *group, const char *path);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the absolute path if it exists in the group of paths
|
* Find the absolute path if it exists in the group of paths
|
||||||
*/
|
*/
|
||||||
EAPI char * ecore_path_group_find(int group_id, const char *name);
|
EAPI char * ecore_path_group_find(Ecore_Path_Group *group, const char *name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get a list of all the available files in a path set
|
* Get a list of all the available files in a path set
|
||||||
|
@ -332,7 +332,7 @@ extern "C" {
|
||||||
/*
|
/*
|
||||||
* Load the specified plugin
|
* Load the specified plugin
|
||||||
*/
|
*/
|
||||||
EAPI Ecore_Plugin *ecore_plugin_load(int group_id, const char *plugin, const char *version);
|
EAPI Ecore_Plugin *ecore_plugin_load(Ecore_Path_Group *group, const char *plugin, const char *version);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unload the specified plugin
|
* Unload the specified plugin
|
||||||
|
@ -344,7 +344,7 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
EAPI void *ecore_plugin_symbol_get(Ecore_Plugin * plugin, const char *symbol_name);
|
EAPI void *ecore_plugin_symbol_get(Ecore_Plugin * plugin, const char *symbol_name);
|
||||||
|
|
||||||
EAPI Ecore_List *ecore_plugin_available_get(int group_id);
|
EAPI Ecore_List *ecore_plugin_available_get(Ecore_Path_Group *group);
|
||||||
|
|
||||||
|
|
||||||
typedef struct _ecore_heap Ecore_Sheap;
|
typedef struct _ecore_heap Ecore_Sheap;
|
||||||
|
|
|
@ -5,11 +5,6 @@
|
||||||
#include "Ecore_Data.h"
|
#include "Ecore_Data.h"
|
||||||
#include "Ecore_Str.h"
|
#include "Ecore_Str.h"
|
||||||
|
|
||||||
static Ecore_List *group_list = NULL;
|
|
||||||
|
|
||||||
Ecore_Path_Group *__ecore_path_group_find(const char *name);
|
|
||||||
Ecore_Path_Group *__ecore_path_group_find_id(int id);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Ecore_Path_Group Path Group Functions
|
* @defgroup Ecore_Path_Group Path Group Functions
|
||||||
*
|
*
|
||||||
|
@ -24,118 +19,69 @@ Ecore_Path_Group *__ecore_path_group_find_id(int id);
|
||||||
* @return @c 0 on error, the integer id of the new group on success.
|
* @return @c 0 on error, the integer id of the new group on success.
|
||||||
* @ingroup Ecore_Path_Group
|
* @ingroup Ecore_Path_Group
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Ecore_Path_Group *
|
||||||
ecore_path_group_new(const char *group_name)
|
ecore_path_group_new(void)
|
||||||
{
|
{
|
||||||
int lastid;
|
|
||||||
Ecore_Path_Group *group;
|
Ecore_Path_Group *group;
|
||||||
|
|
||||||
CHECK_PARAM_POINTER_RETURN("group_name", group_name, -1);
|
|
||||||
|
|
||||||
if (!group_list)
|
|
||||||
{
|
|
||||||
group_list = ecore_list_new();
|
|
||||||
if (!group_list) return 0;
|
|
||||||
lastid = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Ecore_Path_Group *last;
|
|
||||||
|
|
||||||
group = __ecore_path_group_find(group_name);
|
|
||||||
if (group)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
last = ecore_list_last_goto(group_list);
|
|
||||||
lastid = last->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
group = (Ecore_Path_Group *)malloc(sizeof(Ecore_Path_Group));
|
group = (Ecore_Path_Group *)malloc(sizeof(Ecore_Path_Group));
|
||||||
memset(group, 0, sizeof(Ecore_Path_Group));
|
memset(group, 0, sizeof(Ecore_Path_Group));
|
||||||
|
|
||||||
group->name = strdup(group_name);
|
return group;
|
||||||
group->id = lastid + 1;
|
|
||||||
|
|
||||||
ecore_list_append(group_list, group);
|
|
||||||
|
|
||||||
return group->id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroys a previously created path group
|
* Destroys a previously created path group
|
||||||
* @param group_id The unique identifier for the group.
|
* @param group The group to delete.
|
||||||
* @ingroup Ecore_Path_Group
|
* @ingroup Ecore_Path_Group
|
||||||
*/
|
*/
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_path_group_del(int group_id)
|
ecore_path_group_del(Ecore_Path_Group *group)
|
||||||
{
|
{
|
||||||
Ecore_Path_Group *group;
|
CHECK_PARAM_POINTER("group", group);
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
|
||||||
|
|
||||||
if (!group)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (group->paths)
|
if (group->paths)
|
||||||
{
|
ecore_list_destroy(group->paths);
|
||||||
ecore_list_for_each(group->paths, ECORE_FOR_EACH(free), NULL);
|
|
||||||
ecore_list_destroy(group->paths);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ecore_list_goto(group_list, group))
|
|
||||||
ecore_list_remove(group_list);
|
|
||||||
|
|
||||||
if (ecore_list_empty_is(group_list))
|
|
||||||
{
|
|
||||||
ecore_list_destroy(group_list);
|
|
||||||
group_list = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(group->name);
|
|
||||||
free(group);
|
free(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a directory to be searched for files.
|
* Adds a directory to be searched for files.
|
||||||
* @param group_id The unique identifier for the group to add the path.
|
* @param group The group to add the path.
|
||||||
* @param path The new path to be added to the group.
|
* @param path The new path to be added to the group.
|
||||||
* @ingroup Ecore_Path_Group
|
* @ingroup Ecore_Path_Group
|
||||||
*/
|
*/
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_path_group_add(int group_id, const char *path)
|
ecore_path_group_add(Ecore_Path_Group *group, const char *path)
|
||||||
{
|
{
|
||||||
Ecore_Path_Group *group;
|
CHECK_PARAM_POINTER("group", group);
|
||||||
|
|
||||||
CHECK_PARAM_POINTER("path", path);
|
CHECK_PARAM_POINTER("path", path);
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
|
||||||
|
|
||||||
if (!group)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!group->paths)
|
if (!group->paths)
|
||||||
group->paths = ecore_list_new();
|
{
|
||||||
|
group->paths = ecore_list_new();
|
||||||
|
ecore_list_free_cb_set(group->paths, free);
|
||||||
|
}
|
||||||
|
|
||||||
ecore_list_append(group->paths, strdup(path));
|
ecore_list_append(group->paths, strdup(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the given directory from the given group.
|
* Removes the given directory from the given group.
|
||||||
* @param group_id The identifier for the given group.
|
* @param group The group to remove the path from.
|
||||||
* @param path The path of the directory to be removed.
|
* @param path The path of the directory to be removed.
|
||||||
* @ingroup Ecore_Path_Group
|
* @ingroup Ecore_Path_Group
|
||||||
*/
|
*/
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_path_group_remove(int group_id, const char *path)
|
ecore_path_group_remove(Ecore_Path_Group *group, const char *path)
|
||||||
{
|
{
|
||||||
char *found;
|
char *found;
|
||||||
Ecore_Path_Group *group;
|
|
||||||
|
|
||||||
|
CHECK_PARAM_POINTER("group", group);
|
||||||
CHECK_PARAM_POINTER("path", path);
|
CHECK_PARAM_POINTER("path", path);
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
if (!group->paths)
|
||||||
|
|
||||||
if (!group || !group->paths)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -150,33 +96,29 @@ ecore_path_group_remove(int group_id, const char *path)
|
||||||
* If the path is found, remove and free it
|
* If the path is found, remove and free it
|
||||||
*/
|
*/
|
||||||
if (found)
|
if (found)
|
||||||
{
|
ecore_list_remove_destroy(group->paths);
|
||||||
ecore_list_remove(group->paths);
|
|
||||||
free(found);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a file in a group of paths.
|
* Finds a file in a group of paths.
|
||||||
* @param group_id The path group id to search.
|
* @param group The group to search.
|
||||||
* @param name The name of the file to find.
|
* @param name The name of the file to find.
|
||||||
* @return A pointer to a newly allocated path location of the found file
|
* @return A pointer to a newly allocated path location of the found file
|
||||||
* on success. @c NULL on failure.
|
* on success. @c NULL on failure.
|
||||||
* @ingroup Ecore_Path_Group
|
* @ingroup Ecore_Path_Group
|
||||||
*/
|
*/
|
||||||
EAPI char *
|
EAPI char *
|
||||||
ecore_path_group_find(int group_id, const char *name)
|
ecore_path_group_find(Ecore_Path_Group *group, const char *name)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
char *p;
|
char *p;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
Ecore_Path_Group *group;
|
|
||||||
|
|
||||||
|
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
|
||||||
CHECK_PARAM_POINTER_RETURN("name", name, NULL);
|
CHECK_PARAM_POINTER_RETURN("name", name, NULL);
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
if (!group->paths)
|
||||||
if (!group)
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -209,10 +151,10 @@ EAPI Ecore_List *
|
||||||
ecore_path_group_available(int group_id)
|
ecore_path_group_available(int group_id)
|
||||||
{
|
{
|
||||||
Ecore_List *avail = NULL;
|
Ecore_List *avail = NULL;
|
||||||
Ecore_Path_Group *group;
|
Ecore_Path_Group *group = NULL;
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
//group = __ecore_path_group_find_id(group_id);
|
||||||
|
|
||||||
if (!group || !group->paths || ecore_list_empty_is(group->paths))
|
if (!group || !group->paths || ecore_list_empty_is(group->paths))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -284,16 +226,15 @@ ecore_path_group_available(int group_id)
|
||||||
* @ingroup Ecore_Plugin
|
* @ingroup Ecore_Plugin
|
||||||
*/
|
*/
|
||||||
EAPI Ecore_List *
|
EAPI Ecore_List *
|
||||||
ecore_plugin_available_get(int group_id)
|
ecore_plugin_available_get(Ecore_Path_Group *group)
|
||||||
{
|
{
|
||||||
Ecore_List *avail = NULL;
|
Ecore_List *avail = NULL;
|
||||||
Ecore_Hash *plugins = NULL;
|
Ecore_Hash *plugins = NULL;
|
||||||
Ecore_Path_Group *group;
|
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
group = __ecore_path_group_find_id(group_id);
|
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
|
||||||
|
|
||||||
if (!group || !group->paths || ecore_list_empty_is(group->paths))
|
if (!group->paths || ecore_list_empty_is(group->paths))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ecore_list_first_goto(group->paths);
|
ecore_list_first_goto(group->paths);
|
||||||
|
@ -360,38 +301,4 @@ ecore_plugin_available_get(int group_id)
|
||||||
|
|
||||||
return avail;
|
return avail;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* Find the specified group name
|
|
||||||
*/
|
|
||||||
Ecore_Path_Group *
|
|
||||||
__ecore_path_group_find(const char *name)
|
|
||||||
{
|
|
||||||
Ecore_Path_Group *group;
|
|
||||||
|
|
||||||
CHECK_PARAM_POINTER_RETURN("name", name, NULL);
|
|
||||||
|
|
||||||
ecore_list_first_goto(group_list);
|
|
||||||
|
|
||||||
while ((group = ecore_list_next(group_list)) != NULL)
|
|
||||||
if (!strcmp(group->name, name))
|
|
||||||
return group;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Find the specified group id
|
|
||||||
*/
|
|
||||||
Ecore_Path_Group *
|
|
||||||
__ecore_path_group_find_id(int id)
|
|
||||||
{
|
|
||||||
Ecore_Path_Group *group;
|
|
||||||
|
|
||||||
ecore_list_first_goto(group_list);
|
|
||||||
|
|
||||||
while ((group = ecore_list_next(group_list)) != NULL)
|
|
||||||
if (group->id == id)
|
|
||||||
return group;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ static Ecore_List *loaded_plugins = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the specified plugin from the specified path group.
|
* Loads the specified plugin from the specified path group.
|
||||||
* @param group_id The path group to search for the plugin to load
|
* @param group The path group to search for the plugin to load
|
||||||
* @param plugin_name The name of the plugin to load.
|
* @param plugin_name The name of the plugin to load.
|
||||||
* @param version The interface version of the plugin. With version
|
* @param version The interface version of the plugin. With version
|
||||||
* equal to NULL the default will be loaded.
|
* equal to NULL the default will be loaded.
|
||||||
|
@ -108,7 +108,7 @@ static Ecore_List *loaded_plugins = NULL;
|
||||||
* @ingroup Ecore_Plugin
|
* @ingroup Ecore_Plugin
|
||||||
*/
|
*/
|
||||||
EAPI Ecore_Plugin *
|
EAPI Ecore_Plugin *
|
||||||
ecore_plugin_load(int group_id, const char *plugin_name, const char *version)
|
ecore_plugin_load(Ecore_Path_Group *group, const char *plugin_name, const char *version)
|
||||||
{
|
{
|
||||||
char *path;
|
char *path;
|
||||||
char temp[PATH_MAX];
|
char temp[PATH_MAX];
|
||||||
|
@ -130,14 +130,14 @@ ecore_plugin_load(int group_id, const char *plugin_name, const char *version)
|
||||||
snprintf(temp, sizeof(temp), "%s-%s.dll", plugin_name, version);
|
snprintf(temp, sizeof(temp), "%s-%s.dll", plugin_name, version);
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
path = ecore_path_group_find(group_id, temp);
|
path = ecore_path_group_find(group, temp);
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
if (!path && version)
|
if (!path && version)
|
||||||
{
|
{
|
||||||
/* if this file doesn't exist try a different order */
|
/* if this file doesn't exist try a different order */
|
||||||
snprintf(temp, sizeof(temp), "%s.%s.so", plugin_name, version);
|
snprintf(temp, sizeof(temp), "%s.%s.so", plugin_name, version);
|
||||||
path = ecore_path_group_find(group_id, temp);
|
path = ecore_path_group_find(group, temp);
|
||||||
}
|
}
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue