diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c index 5f405dfc7f..4fa97eb2cb 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 734fbfe711..47f76653d8 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); }