[Pkg-e-commits] [SCM] Core abstraction layer for enlightenment DR 0.17 branch, upstream-vcs, updated. fbccf3b6cae3945e0db311041de91f346fccbae1
pfritz
pfritz at alioth.debian.org
Mon Jun 9 12:34:29 UTC 2008
The following commit has been merged in the upstream-vcs branch:
commit d09765724b44a816dc83adc728aa5997bc0bc144
Author: pfritz <pfritz>
Date: Fri May 30 10:18:04 2008 +0000
move ecore_plugin_available_get() to ecore_plugin.c
diff --git a/src/lib/ecore/ecore_path.c b/src/lib/ecore/ecore_path.c
index 27c37eb..a0391bc 100644
--- a/src/lib/ecore/ecore_path.c
+++ b/src/lib/ecore/ecore_path.c
@@ -211,84 +211,3 @@ ecore_path_group_available(Ecore_Path_Group *group)
return avail;
}
-/**
- * Retrieves a list of all available plugins in the given path.
- * @param group_id The identifier for the given path.
- * @return A pointer to a newly allocated list of all plugins found in the
- * paths identified by @p group_id. @c NULL otherwise.
- * @ingroup Ecore_Plugin
- */
-EAPI Ecore_List *
-ecore_plugin_available_get(Ecore_Path_Group *group)
-{
- Ecore_List *avail = NULL;
- Ecore_Hash *plugins = NULL;
- char *path;
-
- CHECK_PARAM_POINTER_RETURN("group", group, NULL);
-
- if (!group->paths || ecore_list_empty_is(group->paths))
- return NULL;
-
- ecore_list_first_goto(group->paths);
- plugins = ecore_hash_new(ecore_str_hash, ecore_str_compare);
- ecore_hash_free_key_cb_set(plugins, free);
-
- while ((path = ecore_list_next(group->paths)) != NULL)
- {
- DIR *dir;
- struct stat st;
- struct dirent *d;
-
- if (stat(path, &st) < 0)
- continue;
-
- if (!S_ISDIR(st.st_mode))
- continue;
-
- dir = opendir(path);
-
- if (!dir)
- continue;
-
- while ((d = readdir(dir)) != NULL)
- {
- char ppath[PATH_MAX];
- char *ext;
-
- if (*d->d_name == '.')
- continue;
-
- if (!ecore_str_has_suffix(d->d_name, SHARED_LIB_SUFFIX))
- continue;
-
- snprintf(ppath, PATH_MAX, "%s/%s", path, d->d_name);
-
- stat(ppath, &st);
-
- if (!S_ISREG(st.st_mode))
- continue;
-
- ecore_strlcpy(ppath, d->d_name, sizeof(ppath));
- ext = strrchr(ppath, '.');
- *ext = '\0';
-
- if (!ecore_hash_get(plugins, ppath))
- {
- char *key;
-
- key = strdup(ppath);
- ecore_hash_set(plugins, key, key);
- }
- }
- closedir(dir);
- }
-
- ecore_hash_free_key_cb_set(plugins, NULL);
- avail = ecore_hash_keys(plugins);
- ecore_list_free_cb_set(avail, free);
- ecore_hash_destroy(plugins);
-
- return avail;
-}
-
diff --git a/src/lib/ecore/ecore_plugin.c b/src/lib/ecore/ecore_plugin.c
index 5ecd40f..0364622 100644
--- a/src/lib/ecore/ecore_plugin.c
+++ b/src/lib/ecore/ecore_plugin.c
@@ -150,3 +150,85 @@ ecore_plugin_symbol_get(Ecore_Plugin *plugin, const char *symbol_name)
return ret;
}
+
+/**
+ * Retrieves a list of all available plugins in the given path.
+ * @param group_id The identifier for the given path.
+ * @return A pointer to a newly allocated list of all plugins found in the
+ * paths identified by @p group_id. @c NULL otherwise.
+ * @ingroup Ecore_Plugin
+ */
+EAPI Ecore_List *
+ecore_plugin_available_get(Ecore_Path_Group *group)
+{
+ Ecore_List *avail = NULL;
+ Ecore_Hash *plugins = NULL;
+ char *path;
+
+ CHECK_PARAM_POINTER_RETURN("group", group, NULL);
+
+ if (!group->paths || ecore_list_empty_is(group->paths))
+ return NULL;
+
+ ecore_list_first_goto(group->paths);
+ plugins = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(plugins, free);
+
+ while ((path = ecore_list_next(group->paths)) != NULL)
+ {
+ DIR *dir;
+ struct stat st;
+ struct dirent *d;
+
+ if (stat(path, &st) < 0)
+ continue;
+
+ if (!S_ISDIR(st.st_mode))
+ continue;
+
+ dir = opendir(path);
+
+ if (!dir)
+ continue;
+
+ while ((d = readdir(dir)) != NULL)
+ {
+ char ppath[PATH_MAX];
+ char *ext;
+
+ if (*d->d_name == '.')
+ continue;
+
+ if (!ecore_str_has_suffix(d->d_name, SHARED_LIB_SUFFIX))
+ continue;
+
+ snprintf(ppath, PATH_MAX, "%s/%s", path, d->d_name);
+
+ stat(ppath, &st);
+
+ if (!S_ISREG(st.st_mode))
+ continue;
+
+ ecore_strlcpy(ppath, d->d_name, sizeof(ppath));
+ ext = strrchr(ppath, '.');
+ *ext = '\0';
+
+ if (!ecore_hash_get(plugins, ppath))
+ {
+ char *key;
+
+ key = strdup(ppath);
+ ecore_hash_set(plugins, key, key);
+ }
+ }
+ closedir(dir);
+ }
+
+ ecore_hash_free_key_cb_set(plugins, NULL);
+ avail = ecore_hash_keys(plugins);
+ ecore_list_free_cb_set(avail, free);
+ ecore_hash_destroy(plugins);
+
+ return avail;
+}
+
--
Core abstraction layer for enlightenment DR 0.17
More information about the Pkg-e-commits
mailing list