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); --
