forked from enlightenment/efl
ecore: use Eina_File for cleaner more portable code.
SVN revision: 65451
This commit is contained in:
parent
2b51e449e7
commit
5c17799c25
|
@ -390,9 +390,8 @@ ecore_file_remove(const char *file)
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
ecore_file_recursive_rm(const char *dir)
|
ecore_file_recursive_rm(const char *dir)
|
||||||
{
|
{
|
||||||
DIR *dirp;
|
Eina_Iterator *it;
|
||||||
struct dirent *dp;
|
char buf[PATH_MAX];
|
||||||
char path[PATH_MAX], buf[PATH_MAX];
|
|
||||||
struct stat st;
|
struct stat st;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -402,22 +401,19 @@ ecore_file_recursive_rm(const char *dir)
|
||||||
ret = stat(dir, &st);
|
ret = stat(dir, &st);
|
||||||
if ((ret == 0) && (S_ISDIR(st.st_mode)))
|
if ((ret == 0) && (S_ISDIR(st.st_mode)))
|
||||||
{
|
{
|
||||||
|
Eina_File_Direct_Info *info;
|
||||||
|
|
||||||
ret = 1;
|
ret = 1;
|
||||||
if (stat(dir, &st) == -1) return EINA_FALSE;
|
if (stat(dir, &st) == -1) return EINA_FALSE; /* WOOT: WHY ARE WE CALLING STAT TWO TIMES ??? */
|
||||||
dirp = opendir(dir);
|
|
||||||
if (dirp)
|
it = eina_file_direct_ls(dir);
|
||||||
|
EINA_ITERATOR_FOREACH(it, info)
|
||||||
{
|
{
|
||||||
while ((dp = readdir(dirp)))
|
if (!ecore_file_recursive_rm(info->path))
|
||||||
{
|
ret = 0;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
if (!ecore_file_rmdir(dir)) ret = 0;
|
if (!ecore_file_rmdir(dir)) ret = 0;
|
||||||
if (ret)
|
if (ret)
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
@ -815,23 +811,19 @@ ecore_file_readlink(const char *lnk)
|
||||||
EAPI Eina_List *
|
EAPI Eina_List *
|
||||||
ecore_file_ls(const char *dir)
|
ecore_file_ls(const char *dir)
|
||||||
{
|
{
|
||||||
char *f;
|
Eina_File_Direct_Info *info;
|
||||||
DIR *dirp;
|
Eina_Iterator *ls;
|
||||||
struct dirent *dp;
|
|
||||||
Eina_List *list = NULL;
|
Eina_List *list = NULL;
|
||||||
|
|
||||||
dirp = opendir(dir);
|
ls = eina_file_direct_ls(dir);
|
||||||
if (!dirp) return NULL;
|
EINA_ITERATOR_FOREACH(ls, info)
|
||||||
|
|
||||||
while ((dp = readdir(dirp)))
|
|
||||||
{
|
{
|
||||||
if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
|
char *f;
|
||||||
{
|
|
||||||
f = strdup(dp->d_name);
|
f = strdup(info->path + info->name_start);
|
||||||
list = eina_list_append(list, f);
|
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));
|
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
|
EAPI int
|
||||||
ecore_file_dir_is_empty(const char *dir)
|
ecore_file_dir_is_empty(const char *dir)
|
||||||
{
|
{
|
||||||
DIR *dirp;
|
Eina_File_Direct_Info *info;
|
||||||
struct dirent *dp;
|
Eina_Iterator *it;
|
||||||
|
|
||||||
dirp = opendir(dir);
|
it = eina_file_direct_ls(dir);
|
||||||
if (!dirp) return -1;
|
if (!it) return -1;
|
||||||
|
|
||||||
while ((dp = readdir(dirp)))
|
EINA_ITERATOR_FOREACH(it, info)
|
||||||
{
|
{
|
||||||
if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
|
eina_iterator_free(it);
|
||||||
{
|
return 0;
|
||||||
closedir(dirp);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dirp);
|
eina_iterator_free(it);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <dirent.h>
|
|
||||||
|
|
||||||
#include "Ecore.h"
|
#include "Ecore.h"
|
||||||
#include "ecore_private.h"
|
#include "ecore_private.h"
|
||||||
|
|
Loading…
Reference in New Issue