jaehwan pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=f2c943d6344565ac73d64c4de471902c80109cd2

commit f2c943d6344565ac73d64c4de471902c80109cd2
Author: Jaehwan Kim <[email protected]>
Date:   Thu Dec 8 14:39:01 2016 +0900

    project_manager: add backslash in the edje_pick command line.
    
    Some group has a '&' in the style name like "on&off".
---
 src/bin/common/string_common.c             | 24 ++++++++++++++++++++++++
 src/bin/common/string_common.h             |  3 +++
 src/bin/project_manager/project_manager2.c |  5 ++++-
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/src/bin/common/string_common.c b/src/bin/common/string_common.c
index 5fd8cf4..a11e825 100644
--- a/src/bin/common/string_common.c
+++ b/src/bin/common/string_common.c
@@ -98,6 +98,30 @@ string_rstr(const char *str1, const char *str2)
    return NULL;
 }
 
+char *
+string_backslash_insert(const char *str, char src)
+{
+   assert(str != NULL);
+   char dst[256];
+   int i = 0;
+
+   while (*str != '\0')
+     {
+        if (*str != src)
+          dst[i] = *str;
+        else
+          {
+             dst[i++] = '\\';
+             dst[i] = src;
+          }
+        str++;
+        i++;
+     }
+   dst[i] = '\0';
+
+   return strdup(dst);
+}
+
 /**
  * ref http://docs.enlightenment.org/auto/edje/group__Edje__Object__Part.html
  */
diff --git a/src/bin/common/string_common.h b/src/bin/common/string_common.h
index 1cf6751..d4cb837 100644
--- a/src/bin/common/string_common.h
+++ b/src/bin/common/string_common.h
@@ -66,6 +66,9 @@ string_cat(const char *str1, const char *str2);
 const char *
 string_rstr(const char *str1, const char *str2);
 
+char *
+string_backslash_insert(const char *str, char src);
+
 const char *
 part_type_text_get(Edje_Part_Type part_type);
 
diff --git a/src/bin/project_manager/project_manager2.c 
b/src/bin/project_manager/project_manager2.c
index d13d8b2..90b1eef 100644
--- a/src/bin/project_manager/project_manager2.c
+++ b/src/bin/project_manager/project_manager2.c
@@ -820,6 +820,7 @@ _project_import_edj(Project_Process_Data *ppd)
    Evas_Object *obj = NULL;
    Eina_Strbuf *strbuf;
    char buf[PATH_MAX];
+   char *str;
    unsigned int count;
 
    //Eina_Stringshare *msg = eina_stringshare_printf(_("Start import '%s' file 
as new project"), ptd->edj);
@@ -892,8 +893,10 @@ _project_import_edj(Project_Process_Data *ppd)
         ppd->edj = eina_stringshare_ref(edj_out);
         ppd->source_edj = eina_stringshare_ref(edj_in);
 
-        ecore_exe_pipe_run(eina_strbuf_string_get(strbuf), FLAGS, NULL);
+        str = string_backslash_insert(eina_strbuf_string_get(strbuf), '&');
+        ecore_exe_pipe_run(str, FLAGS, NULL);
         eina_strbuf_free(strbuf);
+        free(str);
 
         ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_exe_output_handler, ppd);
         ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_edje_pick_finish_handler, ppd);

-- 


Reply via email to