aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2018-01-27 15:17:17 +0100
committerJean-Philippe Andre <jp.andre@samsung.com>2018-01-30 16:52:24 +0900
commitef0f0a50b2912f442f14dc2ba3c071b7122faf6e (patch)
tree40b8f9b970f72167db45f0f7aed7c33a7f706a7d
parentWindows: remove symlink() usage in edje_decc and evil binaries (diff)
downloadefl-ef0f0a50b2912f442f14dc2ba3c071b7122faf6e.tar.gz
Ecore_File: remove symlinks support on Windows (library and test)
-rw-r--r--src/lib/ecore_file/Ecore_File.h14
-rw-r--r--src/lib/ecore_file/ecore_file.c18
-rw-r--r--src/tests/ecore/ecore_test_ecore_file.c3
3 files changed, 22 insertions, 13 deletions
diff --git a/src/lib/ecore_file/Ecore_File.h b/src/lib/ecore_file/Ecore_File.h
index 39f0f7ecae..50c85eaa7e 100644
--- a/src/lib/ecore_file/Ecore_File.h
+++ b/src/lib/ecore_file/Ecore_File.h
@@ -319,9 +319,10 @@ EAPI Eina_Bool ecore_file_mv (const char *src, const char *dst);
* @param dest The name of link.
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
*
- * This function create the symbolic link @p dest of @p src. This
- * function does not work on Windows. It returns @c EINA_TRUE on success,
- * @c EINA_FALSE otherwise.
+ * This function creates the symbolic link @p dest of @p src. It returns
+ * @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ *
+ * @note On windows, this function always returns @c EINA_FALSE.
*/
EAPI Eina_Bool ecore_file_symlink (const char *src, const char *dest);
@@ -426,9 +427,10 @@ EAPI Eina_Bool ecore_file_can_exec (const char *file);
* @return The path pointed by link or NULL.
*
* This function returns the path pointed by @p link as a newly
- * allocated string. This function does not work on Windows. On
- * failure, the function returns @c NULL. When not needed anymore, the
- * returned value must be freed.
+ * allocated string. On failure, the function returns @c NULL. When not
+ * needed anymore, the returned value must be freed.
+ *
+ * @note On windows, this function always returns @c NULL.
*/
EAPI char *ecore_file_readlink (const char *link);
diff --git a/src/lib/ecore_file/ecore_file.c b/src/lib/ecore_file/ecore_file.c
index 15d96edb6e..89b6f2b373 100644
--- a/src/lib/ecore_file/ecore_file.c
+++ b/src/lib/ecore_file/ecore_file.c
@@ -320,11 +320,6 @@ ecore_file_recursive_rm(const char *dir)
Eina_Bool is_dir;
#ifdef _WIN32
- char buf[PATH_MAX];
-
- if (readlink(dir, buf, sizeof(buf) - 1) > 0)
- return ecore_file_unlink(dir);
-
if (!_ecore_file_stat(dir, NULL, NULL, NULL, &is_dir, NULL))
return EINA_FALSE;
#else
@@ -545,9 +540,13 @@ FAIL:
EAPI Eina_Bool
ecore_file_symlink(const char *src, const char *dest)
{
- if (!symlink(src, dest)) return EINA_TRUE;
-
+#ifndef _WIN32
+ return !symlink(src, dest);
+#else
return EINA_FALSE;
+ (void)src;
+ (void)dest;
+#endif
}
EAPI char *
@@ -630,12 +629,17 @@ ecore_file_can_exec(const char *file)
EAPI char *
ecore_file_readlink(const char *link)
{
+#ifndef _WIN32
char buf[PATH_MAX];
int count;
if ((count = readlink(link, buf, sizeof(buf) - 1)) < 0) return NULL;
buf[count] = 0;
return strdup(buf);
+#else
+ return NULL;
+ (void)link;
+#endif
}
EAPI Eina_List *
diff --git a/src/tests/ecore/ecore_test_ecore_file.c b/src/tests/ecore/ecore_test_ecore_file.c
index b393e74199..b5f157f571 100644
--- a/src/tests/ecore/ecore_test_ecore_file.c
+++ b/src/tests/ecore/ecore_test_ecore_file.c
@@ -215,12 +215,15 @@ START_TEST(ecore_test_ecore_file_operations)
res = ecore_file_remove(dest_file);
fail_if(res != EINA_TRUE);
+ /* On Windows, symlink/readlink are not supported */
+#ifndef _WIN32
res = ecore_file_symlink(src_file, dest_file);
fail_if(res != EINA_TRUE);
ck_assert_str_eq(ecore_file_readlink(dest_file), src_file);
ck_assert_str_eq(ecore_file_realpath(dest_file), src_file);
res = ecore_file_unlink(dest_file);
fail_if(res != EINA_TRUE);
+#endif
dest_file = get_tmp_file();
fail_if(!dest_file);