Efreet: Fix caching of recursive directories
authorSebastian Dransfeld <sd@tango.flipp.net>
Tue, 30 Aug 2011 12:19:19 +0000 (12:19 +0000)
committerSebastian Dransfeld <sd@tango.flipp.net>
Tue, 30 Aug 2011 12:19:19 +0000 (12:19 +0000)
SVN revision: 62985

legacy/efreet/src/bin/efreet_desktop_cache_create.c
legacy/efreet/src/lib/efreet_cache.c

index 84630a0..bcc6bad 100644 (file)
@@ -36,6 +36,12 @@ static Eina_Hash *comment = NULL;
 static Eina_Hash *exec = NULL;
 
 static int
+strcmplen(const void *data1, const void *data2)
+{
+    return strncmp(data1, data2, eina_stringshare_strlen(data1));
+}
+
+static int
 cache_add(const char *path, const char *file_id, int priority __UNUSED__, int *changed)
 {
     Efreet_Desktop *desk;
@@ -200,7 +206,7 @@ main(int argc, char **argv)
     Efreet_Cache_Hash hash;
     Efreet_Cache_Version version;
     Eina_List *dirs = NULL;
-    Eina_List *scanned = NULL;
+    Eina_List *system = NULL;
     Efreet_Cache_Array_String *user_dirs = NULL;
     Eina_List *extra_dirs = NULL;
     Eina_List *store_dirs = NULL;
@@ -320,7 +326,7 @@ main(int argc, char **argv)
         char file_id[PATH_MAX] = { '\0' };
 
         if (!cache_scan(path, file_id, priority++, 1, &changed)) goto error;
-        scanned = eina_list_append(scanned, path);
+        system = eina_list_append(system, path);
     }
 
     if (user_dirs)
@@ -329,11 +335,10 @@ main(int argc, char **argv)
 
         for (j = 0; j < user_dirs->array_count; j++)
         {
-            if (eina_list_search_unsorted_list(scanned, EINA_COMPARE_CB(strcmp), user_dirs->array[j]))
+            if (eina_list_search_unsorted_list(system, strcmplen, user_dirs->array[j]))
                 continue;
             if (!ecore_file_is_dir(user_dirs->array[j])) continue;
             if (!cache_scan(user_dirs->array[j], NULL, priority, 0, &changed)) goto error;
-            scanned = eina_list_append(scanned, eina_stringshare_add(user_dirs->array[j]));
 
             store_dirs = eina_list_append(store_dirs, user_dirs->array[j]);
         }
@@ -346,7 +351,9 @@ main(int argc, char **argv)
 
         EINA_LIST_FOREACH(extra_dirs, l, path)
         {
-            if (eina_list_search_unsorted_list(scanned, EINA_COMPARE_CB(strcmp), path))
+            if (eina_list_search_unsorted_list(system, strcmplen, path))
+                continue;
+            if (eina_list_search_unsorted_list(store_dirs, EINA_COMPARE_CB(strcmp), path))
                 continue;
             if (!ecore_file_is_dir(path)) continue;
 
@@ -479,7 +486,7 @@ main(int argc, char **argv)
         close(tmpfd);
     }
 
-    EINA_LIST_FREE(scanned, dir)
+    EINA_LIST_FREE(system, dir)
         eina_stringshare_del(dir);
     eina_list_free(extra_dirs);
     eina_list_free(store_dirs);
@@ -500,7 +507,7 @@ efreet_error:
 ecore_error:
     eet_shutdown();
 eet_error:
-    EINA_LIST_FREE(scanned, dir)
+    EINA_LIST_FREE(system, dir)
         eina_stringshare_del(dir);
     eina_list_free(extra_dirs);
     eina_list_free(store_dirs);
index 4f3d6ce..424f469 100644 (file)
@@ -109,8 +109,6 @@ static void icon_cache_update_free(void *data, void *ev);
 
 static void *hash_array_string_add(void *hash, const char *key, void *data);
 
-static int strcmplen(const void *data1, const void *data2);
-
 EAPI int EFREET_EVENT_ICON_CACHE_UPDATE = 0;
 EAPI int EFREET_EVENT_DESKTOP_CACHE_UPDATE = 0;
 EAPI int EFREET_EVENT_DESKTOP_CACHE_BUILD = 0;
@@ -928,7 +926,7 @@ efreet_cache_desktop_add(Efreet_Desktop *desktop)
         }
         efreet_cache_array_string_free(arr);
     }
-    if (!eina_list_search_unsorted_list(desktop_dirs_add, strcmplen, dir))
+    if (!eina_list_search_unsorted_list(desktop_dirs_add, EINA_COMPARE_CB(strcmp), dir))
         desktop_dirs_add = eina_list_append(desktop_dirs_add, eina_stringshare_add(dir));
 
     efreet_cache_desktop_update();
@@ -1385,10 +1383,3 @@ hash_array_string_add(void *hash, const char *key, void *data)
     eina_hash_add(hash, key, data);
     return hash;
 }
-
-static int
-strcmplen(const void *data1, const void *data2)
-{
-    return strncmp(data1, data2, strlen(data1));
-}
-