aboutsummaryrefslogtreecommitdiffstats
path: root/legacy
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2010-07-02 17:23:05 +0000
committerCedric BAIL <cedric.bail@free.fr>2010-07-02 17:23:05 +0000
commitd4059c7107407493e25fe1e46e3a96410893dc9a (patch)
tree6e6ed6ab5d9bc05f61bcd6f3de433dea09836d25 /legacy
parent * edje: Add alias for part too. This should help designer to (diff)
downloadefl-d4059c7107407493e25fe1e46e3a96410893dc9a.tar.gz
* eina: rename ecore_file_ls_iterator to eina_file_ls.
SVN revision: 50002
Diffstat (limited to '')
-rw-r--r--legacy/ecore/src/lib/ecore_file/ecore_file.c81
-rw-r--r--legacy/ecore/src/lib/ecore_file/ecore_file_private.h11
-rw-r--r--legacy/eina/src/include/eina_file.h2
-rw-r--r--legacy/eina/src/lib/eina_file.c93
4 files changed, 95 insertions, 92 deletions
diff --git a/legacy/ecore/src/lib/ecore_file/ecore_file.c b/legacy/ecore/src/lib/ecore_file/ecore_file.c
index fd4faa9e27..065f8bab19 100644
--- a/legacy/ecore/src/lib/ecore_file/ecore_file.c
+++ b/legacy/ecore/src/lib/ecore_file/ecore_file.c
@@ -29,47 +29,6 @@
int _ecore_file_log_dom = -1;
static int _ecore_file_init_count = 0;
-static Eina_Bool
-_ecore_file_ls_iterator_next(Ecore_File_Iterator *it, void **data)
-{
- struct dirent *dp;
- char *name;
- size_t length;
-
- do
- {
- dp = readdir(it->dirp);
- if (!dp) return EINA_FALSE;
- }
- while (!strcmp(dp->d_name, ".")
- || !strcmp(dp->d_name, ".."));
-
- length = strlen(dp->d_name);
- name = alloca(length + 2 + it->length);
-
- memcpy(name, it->dir, it->length);
- memcpy(name + it->length, "/", 1);
- memcpy(name + it->length + 1, dp->d_name, length + 1);
-
- *data = (char*) eina_stringshare_add(name);
- return EINA_TRUE;
-}
-
-static char *
-_ecore_file_ls_iterator_container(Ecore_File_Iterator *it)
-{
- return it->dir;
-}
-
-static void
-_ecore_file_ls_iterator_free(Ecore_File_Iterator *it)
-{
- closedir(it->dirp);
-
- EINA_MAGIC_SET(&it->iterator, 0);
- free(it);
-}
-
/* externally accessible functions */
/**
* Initialize Ecore_File and the services it will use. Call this function
@@ -741,46 +700,6 @@ ecore_file_ls(const char *dir)
}
/**
- * Get an iterator to list the content of a directory. Give a chance to interrupt it
- * and make it completly asynchrone.
- * The iterator will walk over '.' and '..' without returning them.
- * @param dir The name of the directory to list
- * @return Return an Eina_Iterator that will walk over the files and directory in the pointed
- * directory. On failure it will return NULL.
- */
-EAPI Eina_Iterator *
-ecore_file_ls_iterator(const char *dir)
-{
- Ecore_File_Iterator *it;
- size_t length;
-
- if (!dir) return NULL;
-
- length = strlen(dir);
-
- it = malloc(sizeof (Ecore_File_Iterator) + length);
- if (!it) return NULL;
-
- EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
-
- it->dirp = opendir(dir);
- if (!it->dirp)
- {
- free(it);
- return NULL;
- }
-
- memcpy(it->dir, dir, length + 1);
- it->length = length;
-
- it->iterator.next = FUNC_ITERATOR_NEXT(_ecore_file_ls_iterator_next);
- it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_ecore_file_ls_iterator_container);
- it->iterator.free = FUNC_ITERATOR_FREE(_ecore_file_ls_iterator_free);
-
- return &it->iterator;
-}
-
-/**
* FIXME: To be documented.
*/
EAPI char *
diff --git a/legacy/ecore/src/lib/ecore_file/ecore_file_private.h b/legacy/ecore/src/lib/ecore_file/ecore_file_private.h
index 95cc1c7e09..11606df7d0 100644
--- a/legacy/ecore/src/lib/ecore_file/ecore_file_private.h
+++ b/legacy/ecore/src/lib/ecore_file/ecore_file_private.h
@@ -82,17 +82,6 @@ struct _Ecore_File_Monitor
Ecore_File *files;
};
-typedef struct _Ecore_File_Iterator Ecore_File_Iterator;
-struct _Ecore_File_Iterator
-{
- Eina_Iterator iterator;
-
- DIR *dirp;
- int length;
-
- char dir[1];
-};
-
#ifdef HAVE_INOTIFY
int ecore_file_monitor_inotify_init(void);
int ecore_file_monitor_inotify_shutdown(void);
diff --git a/legacy/eina/src/include/eina_file.h b/legacy/eina/src/include/eina_file.h
index 7011781178..432881ded7 100644
--- a/legacy/eina/src/include/eina_file.h
+++ b/legacy/eina/src/include/eina_file.h
@@ -21,6 +21,7 @@
#include "eina_types.h"
#include "eina_array.h"
+#include "eina_iterator.h"
/**
* @addtogroup Eina_Tools_Group Tools
@@ -52,6 +53,7 @@ typedef void (*Eina_File_Dir_List_Cb)(const char *name, const char *path, void *
EAPI Eina_Bool eina_file_dir_list(const char *dir, Eina_Bool recursive, Eina_File_Dir_List_Cb cb, void *data) EINA_ARG_NONNULL(1, 3);
EAPI Eina_Array *eina_file_split(char *path) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
+EAPI Eina_Iterator *eina_file_ls(const char *dir);
/**
* @}
diff --git a/legacy/eina/src/lib/eina_file.c b/legacy/eina/src/lib/eina_file.c
index f826c8b3b2..0b805ec414 100644
--- a/legacy/eina/src/lib/eina_file.c
+++ b/legacy/eina/src/lib/eina_file.c
@@ -67,6 +67,59 @@ void *alloca (size_t);
/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
#include "eina_safety_checks.h"
#include "eina_file.h"
+#include "eina_stringshare.h"
+
+typedef struct _Eina_File_Iterator Eina_File_Iterator;
+struct _Eina_File_Iterator
+{
+ Eina_Iterator iterator;
+
+ DIR *dirp;
+ int length;
+
+ char dir[1];
+};
+
+static Eina_Bool
+_eina_file_ls_iterator_next(Eina_File_Iterator *it, void **data)
+{
+ struct dirent *dp;
+ char *name;
+ size_t length;
+
+ do
+ {
+ dp = readdir(it->dirp);
+ if (!dp) return EINA_FALSE;
+ }
+ while (!strcmp(dp->d_name, ".")
+ || !strcmp(dp->d_name, ".."));
+
+ length = strlen(dp->d_name);
+ name = alloca(length + 2 + it->length);
+
+ memcpy(name, it->dir, it->length);
+ memcpy(name + it->length, "/", 1);
+ memcpy(name + it->length + 1, dp->d_name, length + 1);
+
+ *data = (char*) eina_stringshare_add(name);
+ return EINA_TRUE;
+}
+
+static char *
+_eina_file_ls_iterator_container(Eina_File_Iterator *it)
+{
+ return it->dir;
+}
+
+static void
+_eina_file_ls_iterator_free(Eina_File_Iterator *it)
+{
+ closedir(it->dirp);
+
+ EINA_MAGIC_SET(&it->iterator, 0);
+ free(it);
+}
/*============================================================================*
* Global *
@@ -269,5 +322,45 @@ eina_file_split(char *path)
}
/**
+ * Get an iterator to list the content of a directory. Give a chance to interrupt it
+ * and make it completly asynchrone.
+ * The iterator will walk over '.' and '..' without returning them.
+ * @param dir The name of the directory to list
+ * @return Return an Eina_Iterator that will walk over the files and directory in the pointed
+ * directory. On failure it will return NULL.
+ */
+EAPI Eina_Iterator *
+eina_file_ls(const char *dir)
+{
+ Eina_File_Iterator *it;
+ size_t length;
+
+ if (!dir) return NULL;
+
+ length = strlen(dir);
+
+ it = malloc(sizeof (Eina_File_Iterator) + length);
+ if (!it) return NULL;
+
+ EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
+
+ it->dirp = opendir(dir);
+ if (!it->dirp)
+ {
+ free(it);
+ return NULL;
+ }
+
+ memcpy(it->dir, dir, length + 1);
+ it->length = length;
+
+ it->iterator.next = FUNC_ITERATOR_NEXT(_eina_file_ls_iterator_next);
+ it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_eina_file_ls_iterator_container);
+ it->iterator.free = FUNC_ITERATOR_FREE(_eina_file_ls_iterator_free);
+
+ return &it->iterator;
+}
+
+/**
* @}
*/