jaehyun pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a05171d39ffcb945fc7e4f4862d8ac89a181f143

commit a05171d39ffcb945fc7e4f4862d8ac89a181f143
Author: Jaehyun Cho <jae_hyun....@samsung.com>
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);
 }
 

-- 


Reply via email to