diff --git a/src/bin/e_fdo_menu_to_order.c b/src/bin/e_fdo_menu_to_order.c
index 6b858a40f..24d6919e5 100644
--- a/src/bin/e_fdo_menu_to_order.c
+++ b/src/bin/e_fdo_menu_to_order.c
@@ -9,118 +9,64 @@ struct order_data
Ecore_Sheap *sheap;
};
-static int _e_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree, int element, int level);
-static void _e_menu_dump_each_hash_node(void *value, void *user_data);
+static void _e_fdo_menu_to_order_make_apps(char *name, char *path, Ecore_Hash *apps);
+static void _e_fdo_menu_to_order_dump_each_hash_node(void *value, void *user_data);
static void _e_fdo_menu_to_order_add_sheap(Ecore_Sheap *sheap, const char *order_path, const char *file);
EAPI void
e_fdo_menu_to_order(void)
{
- int i;
- char *menu_file;
-
- /* Find the main menu file. */
- menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus,
- "applications.menu", -1, NULL, NULL);
- if (!menu_file)
- {
- /* Try various quirks of various systems. */
- menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus,
- "debian-menu.menu", -1, NULL, NULL);
- /* FIXME: If all else fails, run debians funky menu generator shit. */
- }
+ char dir[PATH_MAX];
- if (menu_file)
- {
- char *path;
-
- path = ecore_file_get_dir(menu_file);
- if (path)
- {
- Ecore_Desktop_Tree *menus;
-
- /* convert the xml into menus */
- menus = ecore_desktop_menu_get(menu_file);
- if (menus)
- {
- char dir[PATH_MAX];
-
- /* Nuke the old menus. */
- snprintf(dir, sizeof(dir), "%s/.e/e/applications/menu/all/", ecore_desktop_home_get());
- ecore_file_recursive_rm(dir);
- /* create the .desktop and order files from the menu */
- ecore_desktop_tree_foreach(menus, 0, _e_menu_make_apps, path);
-// FIXME: Can't free this just yet, causes major memory corruption.
-// ecore_desktop_tree_del(menus);
- }
- free(path);
-
- }
- free(menu_file);
- }
-}
-
-static int
-_e_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree, int element, int level)
-{
- if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
- {
- if (strncmp((char *)tree->elements[element].element, "