From: cedric Date: Sun, 20 Nov 2011 15:14:48 +0000 (+0000) Subject: ecore: use Eina_File for cleaner more portable code. X-Git-Tag: accepted/2.0/20130306.224007~113^2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e1807a201b2d7998d6d3a074bde2ae35745f4808;p=profile%2Fivi%2Fecore.git ecore: use Eina_File for cleaner more portable code. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@65451 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/ecore_file/ecore_file.c b/src/lib/ecore_file/ecore_file.c index e34fe21..85b7e7c 100644 --- a/src/lib/ecore_file/ecore_file.c +++ b/src/lib/ecore_file/ecore_file.c @@ -390,9 +390,8 @@ ecore_file_remove(const char *file) EAPI Eina_Bool ecore_file_recursive_rm(const char *dir) { - DIR *dirp; - struct dirent *dp; - char path[PATH_MAX], buf[PATH_MAX]; + Eina_Iterator *it; + char buf[PATH_MAX]; struct stat st; int ret; @@ -402,22 +401,19 @@ ecore_file_recursive_rm(const char *dir) ret = stat(dir, &st); if ((ret == 0) && (S_ISDIR(st.st_mode))) { + Eina_File_Direct_Info *info; + ret = 1; - if (stat(dir, &st) == -1) return EINA_FALSE; - dirp = opendir(dir); - if (dirp) + if (stat(dir, &st) == -1) return EINA_FALSE; /* WOOT: WHY ARE WE CALLING STAT TWO TIMES ??? */ + + it = eina_file_direct_ls(dir); + EINA_ITERATOR_FOREACH(it, info) { - while ((dp = readdir(dirp))) - { - if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, ".."))) - { - snprintf(path, PATH_MAX, "%s/%s", dir, dp->d_name); - if (!ecore_file_recursive_rm(path)) - ret = 0; - } - } - closedir(dirp); + if (!ecore_file_recursive_rm(info->path)) + ret = 0; } + eina_iterator_free(it); + if (!ecore_file_rmdir(dir)) ret = 0; if (ret) return EINA_TRUE; @@ -815,23 +811,19 @@ ecore_file_readlink(const char *lnk) EAPI Eina_List * ecore_file_ls(const char *dir) { - char *f; - DIR *dirp; - struct dirent *dp; + Eina_File_Direct_Info *info; + Eina_Iterator *ls; Eina_List *list = NULL; - dirp = opendir(dir); - if (!dirp) return NULL; - - while ((dp = readdir(dirp))) + ls = eina_file_direct_ls(dir); + EINA_ITERATOR_FOREACH(ls, info) { - if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, ".."))) - { - f = strdup(dp->d_name); - list = eina_list_append(list, f); - } + char *f; + + f = strdup(info->path + info->name_start); + list = eina_list_append(list, f); } - closedir(dirp); + eina_iterator_free(ls); list = eina_list_sort(list, eina_list_count(list), EINA_COMPARE_CB(strcoll)); @@ -1089,22 +1081,19 @@ ecore_file_strip_ext(const char *path) EAPI int ecore_file_dir_is_empty(const char *dir) { - DIR *dirp; - struct dirent *dp; + Eina_File_Direct_Info *info; + Eina_Iterator *it; - dirp = opendir(dir); - if (!dirp) return -1; + it = eina_file_direct_ls(dir); + if (!it) return -1; - while ((dp = readdir(dirp))) + EINA_ITERATOR_FOREACH(it, info) { - if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, ".."))) - { - closedir(dirp); - return 0; - } + eina_iterator_free(it); + return 0; } - closedir(dirp); + eina_iterator_free(it); return 1; } diff --git a/src/lib/ecore_file/ecore_file_private.h b/src/lib/ecore_file/ecore_file_private.h index 60bbe5c..a388380 100644 --- a/src/lib/ecore_file/ecore_file_private.h +++ b/src/lib/ecore_file/ecore_file_private.h @@ -19,7 +19,6 @@ #include #include -#include #include "Ecore.h" #include "ecore_private.h"