diff --git a/src/lib/eina/eina_file_common.c b/src/lib/eina/eina_file_common.c index d93d2ef7b7..9e7cd081d3 100644 --- a/src/lib/eina/eina_file_common.c +++ b/src/lib/eina/eina_file_common.c @@ -126,7 +126,7 @@ _eina_file_escape(char *path, size_t len) return NULL; #ifdef _WIN32 - EVIL_PATH_SEP_WIN32_TO_UNIX(path); + EINA_PATH_TO_UNIX(path); #endif while ((p = strchr(p, '/'))) diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 455d583b96..ddce2137ec 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -550,7 +550,7 @@ eina_file_cleanup(Eina_Tmpstr *path) if (!result) return NULL; - EVIL_PATH_SEP_WIN32_TO_UNIX(result); + EINA_PATH_TO_UNIX(result); return result; } diff --git a/src/lib/eina/eina_private.h b/src/lib/eina/eina_private.h index 9d4da033ce..0de9dd8f81 100644 --- a/src/lib/eina/eina_private.h +++ b/src/lib/eina/eina_private.h @@ -35,6 +35,23 @@ #include "eina_accessor.h" #include "eina_stringshare.h" +#ifdef _WIN32 + +# define EINA_PATH_SEP_SWAP(p, s1, s2) \ + do { \ + char *iter = p; \ + while (*iter) \ + { \ + if (*iter == s1) \ + *iter = s2; \ + iter++; \ + } \ + } while (0) + +# define EINA_PATH_TO_UNIX(p) EINA_PATH_SEP_SWAP(p, '\\', '/') +# define EINA_PATH_TO_WIN32(p) EINA_PATH_SEP_SWAP(p, '/', '\\') +#endif + #ifndef ABS # define ABS(x) ((x) < 0 ? -(x) : (x)) #endif diff --git a/src/lib/eina/eina_util.c b/src/lib/eina/eina_util.c index a003eb8fdb..036b85a382 100644 --- a/src/lib/eina/eina_util.c +++ b/src/lib/eina/eina_util.c @@ -91,6 +91,9 @@ eina_environment_home_get(void) } #endif home = strdup(home); +#ifdef _WIN32 + EINA_PATH_TO_UNIX(home); +#endif return home; } @@ -130,5 +133,8 @@ eina_environment_tmp_get(void) #endif tmp = strdup(tmp); +#ifdef _WIN32 + EINA_PATH_TO_UNIX(tmp); +#endif return tmp; } diff --git a/src/lib/eina/eina_vpath_xdg.c b/src/lib/eina/eina_vpath_xdg.c index d300a8da1f..f9cecc5b1f 100644 --- a/src/lib/eina/eina_vpath_xdg.c +++ b/src/lib/eina/eina_vpath_xdg.c @@ -42,6 +42,7 @@ eina_xdg_env_init(void) if (!s) s = home; \ } else s = home; \ FATAL_SNPRINTF(_meta, "vpath string '%s' truncated - fatal", "%s\\%s", s, (char *)_dir); \ + EINA_PATH_TO_UNIX(_meta); \ (&user)->_meta = _meta; # define ENV_SET(_env, _meta) \ @@ -50,7 +51,8 @@ eina_xdg_env_init(void) s = getenv(_env); \ if (!s) s = home; \ } else s = home; \ - FATAL_SNPRINTF(_meta, "vpath string '%s' truncated - fatal", "%s\\", s); \ + FATAL_SNPRINTF(_meta, "vpath string '%s' truncated - fatal", "%s", s); \ + EINA_PATH_TO_UNIX(_meta); \ (&user)->_meta = _meta; ENV_DIR_SET(NULL, "Desktop", desktop); @@ -68,7 +70,10 @@ eina_xdg_env_init(void) if (!(s = getenv("APPDATA"))) user.run = NULL; else - user.run = s; + { + EINA_PATH_TO_UNIX(s); + user.run = s; + } #else /* _WIN32 */ # if defined(HAVE_GETUID) && defined(HAVE_GETEUID) # define ENV_HOME_SET(_env, _dir, _meta) \ diff --git a/src/lib/evil/evil_stdio.h b/src/lib/evil/evil_stdio.h index 4a2ed57fd3..f948c674a6 100644 --- a/src/lib/evil/evil_stdio.h +++ b/src/lib/evil/evil_stdio.h @@ -12,21 +12,6 @@ * @{ */ -#define EVIL_PATH_SEP_SWAP(p, s1, s2) \ - do { \ - char *_evil_path_tmp; \ - _evil_path_tmp = p; \ - while (*_evil_path_tmp) \ - { \ - if (*_evil_path_tmp == s1) \ - *_evil_path_tmp = s2; \ - _evil_path_tmp++; \ - } \ - } while (0) - -#define EVIL_PATH_SEP_WIN32_TO_UNIX(p) EVIL_PATH_SEP_SWAP(p, '\\', '/') -#define EVIL_PATH_SEP_UNIX_TO_WIN32(p) EVIL_PATH_SEP_SWAP(p, '/', '\\') - /** * @brief Emulate the rename() function on Windows.