forked from enlightenment/efl
Efreet: Fix caching of recursive directories
SVN revision: 62985
This commit is contained in:
parent
a4e32175bb
commit
dc78efed2b
|
@ -35,6 +35,12 @@ static Eina_Hash *generic_name = NULL;
|
|||
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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue