efreet: clean up ugly internal_get function

CID: #1039186
This commit is contained in:
Sebastian Dransfeld 2013-08-07 11:45:30 +02:00
parent 75dd06bcb1
commit 2e4fb25922
1 changed files with 60 additions and 63 deletions

View File

@ -175,8 +175,6 @@ static Eina_Hash *efreet_menu_filter_cbs = NULL;
static Eina_Hash *efreet_menu_move_cbs = NULL;
static Eina_Hash *efreet_menu_layout_cbs = NULL;
static Efreet_Menu *efreet_menu_internal_get(Efreet_Menu_Cb func, void *data);
static Efreet_Menu_Internal *efreet_menu_by_name_find(Efreet_Menu_Internal *internal,
const char *name,
Efreet_Menu_Internal **parent);
@ -527,13 +525,71 @@ efreet_menu_file_set(const char *file)
EAPI void
efreet_menu_async_get(Efreet_Menu_Cb func, const void *data)
{
efreet_menu_internal_get(func, (void*)data);
char menu[PATH_MAX];
const char *dir;
Eina_List *config_dirs, *l;
if (!func) return;
#ifndef STRICT_SPEC
/* prefer user set menu */
if (efreet_menu_file)
{
if (ecore_file_exists(efreet_menu_file))
efreet_menu_async_parse(efreet_menu_file, func, data);
}
#endif
/* check the users config directory first */
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
efreet_config_home_get(), efreet_menu_prefix);
if (ecore_file_exists(menu))
efreet_menu_async_parse(menu, func, data);
/* fallback to the XDG_CONFIG_DIRS */
config_dirs = efreet_config_dirs_get();
EINA_LIST_FOREACH(config_dirs, l, dir)
{
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
dir, efreet_menu_prefix);
if (ecore_file_exists(menu))
efreet_menu_async_parse(menu, func, data);
}
}
EAPI Efreet_Menu *
efreet_menu_get(void)
{
return efreet_menu_internal_get(NULL, NULL);
char menu[PATH_MAX];
const char *dir;
Eina_List *config_dirs, *l;
#ifndef STRICT_SPEC
/* prefer user set menu */
if (efreet_menu_file)
{
if (ecore_file_exists(efreet_menu_file))
return efreet_menu_parse(efreet_menu_file);
}
#endif
/* check the users config directory first */
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
efreet_config_home_get(), efreet_menu_prefix);
if (ecore_file_exists(menu))
return efreet_menu_parse(menu);
/* fallback to the XDG_CONFIG_DIRS */
config_dirs = efreet_config_dirs_get();
EINA_LIST_FOREACH(config_dirs, l, dir)
{
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
dir, efreet_menu_prefix);
if (ecore_file_exists(menu))
return efreet_menu_parse(menu);
}
return NULL;
}
EAPI void
@ -730,65 +786,6 @@ efreet_menu_dump(Efreet_Menu *menu, const char *indent)
}
}
static Efreet_Menu *
efreet_menu_internal_get(Efreet_Menu_Cb func, void *data)
{
char menu[PATH_MAX];
const char *dir;
Eina_List *config_dirs, *l;
#ifndef STRICT_SPEC
/* prefer user set menu */
if (efreet_menu_file)
{
if (ecore_file_exists(efreet_menu_file))
{
if (func)
{
efreet_menu_async_parse(efreet_menu_file, func, data);
return NULL;
}
else
return efreet_menu_parse(efreet_menu_file);
}
}
#endif
/* check the users config directory first */
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
efreet_config_home_get(), efreet_menu_prefix);
if (ecore_file_exists(menu))
{
if (func)
{
efreet_menu_async_parse(menu, func, data);
return NULL;
}
else
return efreet_menu_parse(menu);
}
/* fallback to the XDG_CONFIG_DIRS */
config_dirs = efreet_config_dirs_get();
EINA_LIST_FOREACH(config_dirs, l, dir)
{
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
dir, efreet_menu_prefix);
if (ecore_file_exists(menu))
{
if (func)
{
efreet_menu_async_parse(menu, func, data);
return NULL;
}
else
return efreet_menu_parse(menu);
}
}
return NULL;
}
/**
* @internal
* @return Returns a new Efreet_Menu_Internal struct