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

Reply via email to