jaehyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a05171d39ffcb945fc7e4f4862d8ac89a181f143
commit a05171d39ffcb945fc7e4f4862d8ac89a181f143 Author: Jaehyun Cho <[email protected]> Date: Tue Dec 8 11:01:11 2015 +0900 edje_cc: Fix parsing including file path in EDC on Windows. On Windows, including file path in EDC has not been parsed correctly because '\' has not been used for path separator. This commit fixes edje_cc complie to use '\' as path separator on Windows. --- src/bin/edje/edje_cc_parse.c | 4 ++++ src/bin/edje/edje_cc_sources.c | 30 ++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c index 5f405df..4fa97eb 100644 --- a/src/bin/edje/edje_cc_parse.c +++ b/src/bin/edje/edje_cc_parse.c @@ -925,6 +925,10 @@ compile(void) strncpy(inc, file_in, 4000); inc[4001] = 0; p = strrchr(inc, '/'); +#ifdef _WIN32 + char *p_backslash = strrchr(inc, '\\'); + if (p_backslash > p) p = p_backslash; +#endif if (!p) strcpy(inc, "./"); else *p = 0; fd = eina_file_mkstemp("edje_cc.edc-tmp-XXXXXX", &tmpn); diff --git a/src/bin/edje/edje_cc_sources.c b/src/bin/edje/edje_cc_sources.c index 734fbfe..47f7665 100644 --- a/src/bin/edje/edje_cc_sources.c +++ b/src/bin/edje/edje_cc_sources.c @@ -153,12 +153,23 @@ source_fetch_file(const char *fil, const char *filname) /* get the directory of the current file * if we haven't already done so */ - if ((!dir) && (strrchr(fil, '/'))) + if (!dir) { - dir = mem_strdup(fil); - slash = strrchr(dir, '/'); - *slash = '\0'; - dir_len = strlen(dir); + if (strrchr(fil, '/')) + { + dir = mem_strdup(fil); + slash = strrchr(dir, '/'); + } +#ifdef _WIN32 + if (strrchr(fil, '\\')) + { + if (!dir) dir = mem_strdup(fil); + char *backslash = strrchr(dir, '\\'); + if (backslash > slash) slash = backslash; + } +#endif + if (slash) *slash = '\0'; + if (dir) dir_len = strlen(dir); } l = pp - p + dir_len + 1; @@ -211,7 +222,14 @@ source_fetch(void) { snprintf(buf, sizeof (buf), "%s", ptr + 1); } - +#ifdef _WIN32 + char *ptr_backslash = strrchr(file_in, '\\'); + if (ptr_backslash) + { + if (ptr_backslash > ptr) + snprintf(buf, sizeof (buf), "%s", ptr_backslash + 1); + } +#endif source_fetch_file(file_in, buf[0] ? buf : file_in); } --
