forked from enlightenment/efl
* ecore: return Eina_Bool instead of int when it make sense.
Patch from Nicolas Aguirre. SVN revision: 49611
This commit is contained in:
parent
ddb8c95fa9
commit
238b9836ca
|
@ -31,3 +31,4 @@ Mathieu Taillefumier <mathieu.taillefumier@free.fr>
|
||||||
Rui Miguel Silva Seabra <rms@1407.org>
|
Rui Miguel Silva Seabra <rms@1407.org>
|
||||||
Saumsung Electronics <tbd>
|
Saumsung Electronics <tbd>
|
||||||
Samsung SAIT <tbd>
|
Samsung SAIT <tbd>
|
||||||
|
Nicolas Aguirre <aguirre.nicolas@gmail.com>
|
||||||
|
|
|
@ -326,7 +326,7 @@ extern "C" {
|
||||||
|
|
||||||
EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), const void *data);
|
EAPI Ecore_Pipe *ecore_pipe_add(void (*handler) (void *data, void *buffer, unsigned int nbyte), const void *data);
|
||||||
EAPI void *ecore_pipe_del(Ecore_Pipe *p);
|
EAPI void *ecore_pipe_del(Ecore_Pipe *p);
|
||||||
EAPI int ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes);
|
EAPI Eina_Bool ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes);
|
||||||
EAPI void ecore_pipe_write_close(Ecore_Pipe *p);
|
EAPI void ecore_pipe_write_close(Ecore_Pipe *p);
|
||||||
EAPI void ecore_pipe_read_close(Ecore_Pipe *p);
|
EAPI void ecore_pipe_read_close(Ecore_Pipe *p);
|
||||||
|
|
||||||
|
|
|
@ -386,7 +386,7 @@ ecore_pipe_write_close(Ecore_Pipe *p)
|
||||||
* @return Returns EINA_TRUE on a successful write, EINA_FALSE on an error
|
* @return Returns EINA_TRUE on a successful write, EINA_FALSE on an error
|
||||||
* @ingroup Ecore_Pipe_Group
|
* @ingroup Ecore_Pipe_Group
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes)
|
ecore_pipe_write(Ecore_Pipe *p, const void *buffer, unsigned int nbytes)
|
||||||
{
|
{
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
|
@ -67,27 +67,27 @@ extern "C" {
|
||||||
EAPI int ecore_file_shutdown (void);
|
EAPI int ecore_file_shutdown (void);
|
||||||
EAPI long long ecore_file_mod_time (const char *file);
|
EAPI long long ecore_file_mod_time (const char *file);
|
||||||
EAPI long long ecore_file_size (const char *file);
|
EAPI long long ecore_file_size (const char *file);
|
||||||
EAPI int ecore_file_exists (const char *file);
|
EAPI Eina_Bool ecore_file_exists (const char *file);
|
||||||
EAPI int ecore_file_is_dir (const char *file);
|
EAPI Eina_Bool ecore_file_is_dir (const char *file);
|
||||||
EAPI int ecore_file_mkdir (const char *dir);
|
EAPI Eina_Bool ecore_file_mkdir (const char *dir);
|
||||||
EAPI int ecore_file_mkdirs (const char **dirs);
|
EAPI int ecore_file_mkdirs (const char **dirs);
|
||||||
EAPI int ecore_file_mksubdirs (const char *base, const char **subdirs);
|
EAPI int ecore_file_mksubdirs (const char *base, const char **subdirs);
|
||||||
EAPI int ecore_file_rmdir (const char *dir);
|
EAPI Eina_Bool ecore_file_rmdir (const char *dir);
|
||||||
EAPI int ecore_file_recursive_rm (const char *dir);
|
EAPI Eina_Bool ecore_file_recursive_rm (const char *dir);
|
||||||
EAPI int ecore_file_mkpath (const char *path);
|
EAPI Eina_Bool ecore_file_mkpath (const char *path);
|
||||||
EAPI int ecore_file_mkpaths (const char **paths);
|
EAPI int ecore_file_mkpaths (const char **paths);
|
||||||
EAPI int ecore_file_cp (const char *src, const char *dst);
|
EAPI Eina_Bool ecore_file_cp (const char *src, const char *dst);
|
||||||
EAPI int ecore_file_mv (const char *src, const char *dst);
|
EAPI Eina_Bool ecore_file_mv (const char *src, const char *dst);
|
||||||
EAPI int ecore_file_symlink (const char *src, const char *dest);
|
EAPI Eina_Bool ecore_file_symlink (const char *src, const char *dest);
|
||||||
EAPI char *ecore_file_realpath (const char *file);
|
EAPI char *ecore_file_realpath (const char *file);
|
||||||
EAPI int ecore_file_unlink (const char *file);
|
EAPI Eina_Bool ecore_file_unlink (const char *file);
|
||||||
EAPI int ecore_file_remove (const char *file);
|
EAPI Eina_Bool ecore_file_remove (const char *file);
|
||||||
EAPI const char *ecore_file_file_get (const char *path);
|
EAPI const char *ecore_file_file_get (const char *path);
|
||||||
EAPI char *ecore_file_dir_get (const char *path);
|
EAPI char *ecore_file_dir_get (const char *path);
|
||||||
|
|
||||||
EAPI int ecore_file_can_read (const char *file);
|
EAPI Eina_Bool ecore_file_can_read (const char *file);
|
||||||
EAPI int ecore_file_can_write (const char *file);
|
EAPI Eina_Bool ecore_file_can_write (const char *file);
|
||||||
EAPI int ecore_file_can_exec (const char *file);
|
EAPI Eina_Bool ecore_file_can_exec (const char *file);
|
||||||
EAPI char *ecore_file_readlink (const char *link);
|
EAPI char *ecore_file_readlink (const char *link);
|
||||||
EAPI Eina_List *ecore_file_ls (const char *dir);
|
EAPI Eina_List *ecore_file_ls (const char *dir);
|
||||||
EAPI char *ecore_file_app_exe_get (const char *app);
|
EAPI char *ecore_file_app_exe_get (const char *app);
|
||||||
|
|
|
@ -126,31 +126,31 @@ ecore_file_size(const char *file)
|
||||||
/**
|
/**
|
||||||
* Check if file exists
|
* Check if file exists
|
||||||
* @param file The name of the file
|
* @param file The name of the file
|
||||||
* @return 1 if file exists on local filesystem, 0 otherwise
|
* @return EINA_TRUE if file exists on local filesystem, EINA_FALSE otherwise
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_exists(const char *file)
|
ecore_file_exists(const char *file)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
/*Workaround so that "/" returns a true, otherwise we can't monitor "/" in ecore_file_monitor*/
|
/*Workaround so that "/" returns a true, otherwise we can't monitor "/" in ecore_file_monitor*/
|
||||||
if (stat(file, &st) < 0 && strcmp(file, "/")) return 0;
|
if (stat(file, &st) < 0 && strcmp(file, "/")) return EINA_FALSE;
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if file is a directory
|
* Check if file is a directory
|
||||||
* @param file The name of the file
|
* @param file The name of the file
|
||||||
* @return 1 if file exist and is a directory, 0 otherwise
|
* @return EINA_TRUE if file exist and is a directory, EINA_FALSE otherwise
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_is_dir(const char *file)
|
ecore_file_is_dir(const char *file)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
if (stat(file, &st) < 0) return 0;
|
if (stat(file, &st) < 0) return EINA_FALSE;
|
||||||
if (S_ISDIR(st.st_mode)) return 1;
|
if (S_ISDIR(st.st_mode)) return EINA_TRUE;
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
|
static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
|
||||||
|
@ -158,15 +158,15 @@ static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S
|
||||||
/**
|
/**
|
||||||
* Create a new directory
|
* Create a new directory
|
||||||
* @param dir The name of the directory to create
|
* @param dir The name of the directory to create
|
||||||
* @return 1 on successfull creation, 0 on failure
|
* @return EINA_TRUE on successfull creation, EINA_FALSE on failure
|
||||||
*
|
*
|
||||||
* The directory is created with the mode: S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH
|
* The directory is created with the mode: S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_mkdir(const char *dir)
|
ecore_file_mkdir(const char *dir)
|
||||||
{
|
{
|
||||||
if (mkdir(dir, default_mode) < 0) return 0;
|
if (mkdir(dir, default_mode) < 0) return EINA_FALSE;
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -285,47 +285,47 @@ ecore_file_mksubdirs(const char *base, const char **subdirs)
|
||||||
/**
|
/**
|
||||||
* Delete the given dir
|
* Delete the given dir
|
||||||
* @param dir The name of the directory to delete
|
* @param dir The name of the directory to delete
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_rmdir(const char *dir)
|
ecore_file_rmdir(const char *dir)
|
||||||
{
|
{
|
||||||
if (rmdir(dir) < 0) return 0;
|
if (rmdir(dir) < 0) return EINA_FALSE;
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the given file
|
* Delete the given file
|
||||||
* @param file The name of the file to delete
|
* @param file The name of the file to delete
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_unlink(const char *file)
|
ecore_file_unlink(const char *file)
|
||||||
{
|
{
|
||||||
if (unlink(file) < 0) return 0;
|
if (unlink(file) < 0) return EINA_FALSE;
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the given file or directory
|
* Remove the given file or directory
|
||||||
* @param file The name of the file or directory to delete
|
* @param file The name of the file or directory to delete
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_remove(const char *file)
|
ecore_file_remove(const char *file)
|
||||||
{
|
{
|
||||||
if (remove(file) < 0) return 0;
|
if (remove(file) < 0) return EINA_FALSE;
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a directory and all its contents
|
* Delete a directory and all its contents
|
||||||
* @param dir The name of the directory to delete
|
* @param dir The name of the directory to delete
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*
|
*
|
||||||
* If dir is a link only the link is removed
|
* If dir is a link only the link is removed
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_recursive_rm(const char *dir)
|
ecore_file_recursive_rm(const char *dir)
|
||||||
{
|
{
|
||||||
DIR *dirp;
|
DIR *dirp;
|
||||||
|
@ -341,7 +341,7 @@ ecore_file_recursive_rm(const char *dir)
|
||||||
if ((ret == 0) && (S_ISDIR(st.st_mode)))
|
if ((ret == 0) && (S_ISDIR(st.st_mode)))
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
if (stat(dir, &st) == -1) return 0;
|
if (stat(dir, &st) == -1) return EINA_FALSE;
|
||||||
dirp = opendir(dir);
|
dirp = opendir(dir);
|
||||||
if (dirp)
|
if (dirp)
|
||||||
{
|
{
|
||||||
|
@ -357,16 +357,19 @@ ecore_file_recursive_rm(const char *dir)
|
||||||
closedir(dirp);
|
closedir(dirp);
|
||||||
}
|
}
|
||||||
if (!ecore_file_rmdir(dir)) ret = 0;
|
if (!ecore_file_rmdir(dir)) ret = 0;
|
||||||
return ret;
|
if (ret)
|
||||||
|
return EINA_TRUE;
|
||||||
|
else
|
||||||
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ret == -1) return 0;
|
if (ret == -1) return EINA_FALSE;
|
||||||
return ecore_file_unlink(dir);
|
return ecore_file_unlink(dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int
|
static inline Eina_Bool
|
||||||
_ecore_file_mkpath_if_not_exists(const char *path)
|
_ecore_file_mkpath_if_not_exists(const char *path)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
@ -374,35 +377,35 @@ _ecore_file_mkpath_if_not_exists(const char *path)
|
||||||
if (stat(path, &st) < 0)
|
if (stat(path, &st) < 0)
|
||||||
return ecore_file_mkdir(path);
|
return ecore_file_mkdir(path);
|
||||||
else if (!S_ISDIR(st.st_mode))
|
else if (!S_ISDIR(st.st_mode))
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
else
|
else
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a complete path
|
* Create a complete path
|
||||||
* @param path The path to create
|
* @param path The path to create
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*
|
*
|
||||||
* @see ecore_file_mkpaths() and ecore_file_mkdir()
|
* @see ecore_file_mkpaths() and ecore_file_mkdir()
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_mkpath(const char *path)
|
ecore_file_mkpath(const char *path)
|
||||||
{
|
{
|
||||||
char ss[PATH_MAX];
|
char ss[PATH_MAX];
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (ecore_file_is_dir(path))
|
if (ecore_file_is_dir(path))
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
|
|
||||||
for (i = 0; path[i] != '\0'; ss[i] = path[i], i++)
|
for (i = 0; path[i] != '\0'; ss[i] = path[i], i++)
|
||||||
{
|
{
|
||||||
if (i == sizeof(ss) - 1) return 0;
|
if (i == sizeof(ss) - 1) return EINA_FALSE;
|
||||||
if ((path[i] == '/') && (i > 0))
|
if ((path[i] == '/') && (i > 0))
|
||||||
{
|
{
|
||||||
ss[i] = '\0';
|
ss[i] = '\0';
|
||||||
if (!_ecore_file_mkpath_if_not_exists(ss))
|
if (!_ecore_file_mkpath_if_not_exists(ss))
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ss[i] = '\0';
|
ss[i] = '\0';
|
||||||
|
@ -434,31 +437,31 @@ ecore_file_mkpaths(const char **paths)
|
||||||
* Copy a file
|
* Copy a file
|
||||||
* @param src The name of the source file
|
* @param src The name of the source file
|
||||||
* @param dst The name of the destination file
|
* @param dst The name of the destination file
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_cp(const char *src, const char *dst)
|
ecore_file_cp(const char *src, const char *dst)
|
||||||
{
|
{
|
||||||
FILE *f1, *f2;
|
FILE *f1, *f2;
|
||||||
char buf[16384];
|
char buf[16384];
|
||||||
char realpath1[PATH_MAX], realpath2[PATH_MAX];
|
char realpath1[PATH_MAX], realpath2[PATH_MAX];
|
||||||
size_t num;
|
size_t num;
|
||||||
int ret = 1;
|
Eina_Bool ret = EINA_TRUE;
|
||||||
|
|
||||||
if (!realpath(src, realpath1)) return 0;
|
if (!realpath(src, realpath1)) return EINA_FALSE;
|
||||||
if (realpath(dst, realpath2) && !strcmp(realpath1, realpath2)) return 0;
|
if (realpath(dst, realpath2) && !strcmp(realpath1, realpath2)) return EINA_FALSE;
|
||||||
|
|
||||||
f1 = fopen(src, "rb");
|
f1 = fopen(src, "rb");
|
||||||
if (!f1) return 0;
|
if (!f1) return EINA_FALSE;
|
||||||
f2 = fopen(dst, "wb");
|
f2 = fopen(dst, "wb");
|
||||||
if (!f2)
|
if (!f2)
|
||||||
{
|
{
|
||||||
fclose(f1);
|
fclose(f1);
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
while ((num = fread(buf, 1, sizeof(buf), f1)) > 0)
|
while ((num = fread(buf, 1, sizeof(buf), f1)) > 0)
|
||||||
{
|
{
|
||||||
if (fwrite(buf, 1, num, f2) != num) ret = 0;
|
if (fwrite(buf, 1, num, f2) != num) ret = EINA_FALSE;
|
||||||
}
|
}
|
||||||
fclose(f1);
|
fclose(f1);
|
||||||
fclose(f2);
|
fclose(f2);
|
||||||
|
@ -469,9 +472,9 @@ ecore_file_cp(const char *src, const char *dst)
|
||||||
* Move a file
|
* Move a file
|
||||||
* @param src The name of the source file
|
* @param src The name of the source file
|
||||||
* @param dst The name of the destination file
|
* @param dst The name of the destination file
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_mv(const char *src, const char *dst)
|
ecore_file_mv(const char *src, const char *dst)
|
||||||
{
|
{
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
|
@ -533,24 +536,24 @@ ecore_file_mv(const char *src, const char *dst)
|
||||||
}
|
}
|
||||||
|
|
||||||
PASS:
|
PASS:
|
||||||
return 1;
|
return EINA_TRUE;
|
||||||
|
|
||||||
FAIL:
|
FAIL:
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a symbolic link
|
* Create a symbolic link
|
||||||
* @param src The name of the file to link
|
* @param src The name of the file to link
|
||||||
* @param dest The name of link
|
* @param dest The name of link
|
||||||
* @return 1 on success, 0 on failure
|
* @return EINA_TRUE on success, EINA_FALSE on failure
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_symlink(const char *src, const char *dest)
|
ecore_file_symlink(const char *src, const char *dest)
|
||||||
{
|
{
|
||||||
if (!symlink(src, dest)) return 1;
|
if (!symlink(src, dest)) return EINA_TRUE;
|
||||||
|
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -611,40 +614,40 @@ ecore_file_dir_get(const char *file)
|
||||||
/**
|
/**
|
||||||
* Check if file can be read
|
* Check if file can be read
|
||||||
* @param file The name of the file
|
* @param file The name of the file
|
||||||
* @return 1 if the file is readable, 0 otherwise
|
* @return EINA_TRUE if the file is readable, EINA_FALSE otherwise
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_can_read(const char *file)
|
ecore_file_can_read(const char *file)
|
||||||
{
|
{
|
||||||
if (!file) return 0;
|
if (!file) return EINA_FALSE;
|
||||||
if (!access(file, R_OK)) return 1;
|
if (!access(file, R_OK)) return EINA_TRUE;
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if file can be written
|
* Check if file can be written
|
||||||
* @param file The name of the file
|
* @param file The name of the file
|
||||||
* @return 1 if the file is writable, 0 otherwise
|
* @return EINA_TRUE if the file is writable, EINA_FALSE otherwise
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_can_write(const char *file)
|
ecore_file_can_write(const char *file)
|
||||||
{
|
{
|
||||||
if (!file) return 0;
|
if (!file) return EINA_FALSE;
|
||||||
if (!access(file, W_OK)) return 1;
|
if (!access(file, W_OK)) return EINA_TRUE;
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if file can be executed
|
* Check if file can be executed
|
||||||
* @param file The name of the file
|
* @param file The name of the file
|
||||||
* @return 1 if the file can be executed, 0 otherwise
|
* @return EINA_TRUE if the file can be executed, EINA_FALSE otherwise
|
||||||
*/
|
*/
|
||||||
EAPI int
|
EAPI Eina_Bool
|
||||||
ecore_file_can_exec(const char *file)
|
ecore_file_can_exec(const char *file)
|
||||||
{
|
{
|
||||||
if (!file) return 0;
|
if (!file) return EINA_FALSE;
|
||||||
if (!access(file, X_OK)) return 1;
|
if (!access(file, X_OK)) return EINA_TRUE;
|
||||||
return 0;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue