thanatermesis pushed a commit to branch efl-1.8.

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

commit 03218976919bf51d5ba9a562ed3b73a538b95271
Author: Sebastian Dransfeld <[email protected]>
Date:   Wed Jun 11 11:00:30 2014 +0200

    efreet: improve handling of merged menus
    
    If the menu is of the format ${XDG_MENU_PREFIX}applications.menu, we
    want to merge applications-merged/, not
    ${XDG_MENU_PREFIX}applications-merged
    (cherry picked from commit 9415f8a7ef24e051a5ebf812324fe0f659cf89ea)
    
    Signed-off-by: Thanatermesis <[email protected]>
---
 src/lib/efreet/efreet_menu.c | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/src/lib/efreet/efreet_menu.c b/src/lib/efreet/efreet_menu.c
index b0e2746..730f153 100644
--- a/src/lib/efreet/efreet_menu.c
+++ b/src/lib/efreet/efreet_menu.c
@@ -1550,7 +1550,8 @@ static int
 efreet_menu_handle_default_merge_dirs(Efreet_Menu_Internal *parent, Efreet_Xml 
*xml)
 {
     Eina_List *dirs;
-    char path[PATH_MAX], *p, *pp;
+    char path[PATH_MAX], *p = NULL;
+    const char *pp;
 #ifndef STRICT_SPEC
     char parent_path[PATH_MAX];
 #endif
@@ -1569,14 +1570,31 @@ 
efreet_menu_handle_default_merge_dirs(Efreet_Menu_Internal *parent, Efreet_Xml *
     }
     else
     {
-        char *s;
         size_t len;
 
-        len = strlen(parent->file.name) + 1;
-        p = alloca(len);
-        memcpy(p, parent->file.name, len);
-        s = strrchr(p, '.');
-        if (s) *s = '\0';
+        len = strlen(efreet_menu_prefix);
+        if (!strncmp(parent->file.name, efreet_menu_prefix, len))
+        {
+            pp = parent->file.name;
+            pp += len;
+            if (!strcmp(pp, "applications.menu"))
+            {
+                p = alloca(sizeof("applications"));
+                memcpy(p, "applications", sizeof("applications"));
+            }
+        }
+
+        if (!p)
+        {
+            char *s;
+            size_t len;
+
+            len = strlen(parent->file.name) + 1;
+            p = alloca(len);
+            memcpy(p, parent->file.name, len);
+            s = strrchr(p, '.');
+            if (s) *s = '\0';
+        }
     }
     snprintf(path, sizeof(path), "menus/%s-merged", p);
 

-- 


Reply via email to