Enlightenment CVS committal Author : rephorm Project : e17 Module : libs/efreet
Dir : e17/libs/efreet/src/lib Modified Files: efreet_utils.c efreet_utils.h Log Message: add efreet_util_menus_find() =================================================================== RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- efreet_utils.c 13 Apr 2007 16:29:29 -0000 1.33 +++ efreet_utils.c 15 Apr 2007 06:16:54 -0000 1.34 @@ -71,6 +71,7 @@ static void efreet_util_monitor_cb(void *data, Ecore_File_Monitor *monitor, Ecore_File_Event event, const char *path); static void efreet_util_monitor_free(void *data); +static void efreet_util_menus_find_helper(Ecore_List *menus, const char *config_dir); static Ecore_Hash *desktop_by_file_id = NULL; static Ecore_Hash *file_id_by_desktop_path = NULL; @@ -895,3 +896,49 @@ free(em); } +/** + * Returns a list of .menu files found in the various config dirs. + * @return An ecore list of menu file paths (const char *). This must be freed with ecore_list_destroy(). + */ +Ecore_List * +efreet_util_menus_find() +{ + Ecore_List *menus, *dirs; + const char *dir; + + menus = ecore_list_new(); + ecore_list_set_free_cb(menus, ECORE_FREE_CB(free)); + + efreet_util_menus_find_helper(menus, efreet_config_home_get()); + + dirs = efreet_config_dirs_get(); + ecore_list_goto_first(dirs); + while ((dir = ecore_list_next(dirs))) + efreet_util_menus_find_helper(menus, dir); + + return menus; +} + +static void +efreet_util_menus_find_helper(Ecore_List *menus, const char *config_dir) +{ + DIR *files = NULL; + struct dirent *file = NULL; + char dbuf[PATH_MAX], fbuf[PATH_MAX]; + + snprintf(dbuf, sizeof(dbuf), "%s/menus", config_dir); + files = opendir(dbuf); + if (!files) return; + while ((file = readdir(files))) { + const char *exten; + exten = strrchr(file->d_name, '.'); + if (!exten) continue; + if (strcmp(".menu", exten)) continue; + + snprintf(fbuf, PATH_MAX, "%s/%s", dbuf, file->d_name); + if (ecore_file_is_dir(fbuf)) continue; + + ecore_list_append(menus, strdup(fbuf)); + } + closedir(files); +} =================================================================== RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- efreet_utils.h 9 Apr 2007 12:16:09 -0000 1.18 +++ efreet_utils.h 15 Apr 2007 06:16:54 -0000 1.19 @@ -38,6 +38,7 @@ Ecore_List *efreet_util_desktop_generic_name_glob_list(const char *glob); Ecore_List *efreet_util_desktop_comment_glob_list(const char *glob); +Ecore_List *efreet_util_menus_find(); extern int EFREET_EVENT_DESKTOP_LIST_CHANGE; extern int EFREET_EVENT_DESKTOP_CHANGE; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs