add global version to cache files

SVN revision: 55145
This commit is contained in:
Sebastian Dransfeld 2010-12-02 08:34:07 +00:00
parent 0ccccf1934
commit e9763d92d4
6 changed files with 134 additions and 89 deletions

View File

@ -233,6 +233,7 @@ main(int argc, char **argv)
* during whilst this program runs. * during whilst this program runs.
* - Maybe linger for a while to reduce number of cache re-creates. * - Maybe linger for a while to reduce number of cache re-creates.
*/ */
Efreet_Cache_Version version;
Eina_List *dirs = NULL, *user_dirs = NULL; Eina_List *dirs = NULL, *user_dirs = NULL;
int priority = 0; int priority = 0;
char *dir = NULL; char *dir = NULL;
@ -404,6 +405,12 @@ main(int argc, char **argv)
} }
/* cleanup */ /* cleanup */
version.major = EFREET_DESKTOP_UTILS_CACHE_MAJOR;
version.minor = EFREET_DESKTOP_UTILS_CACHE_MINOR;
eet_data_write(util_ef, efreet_version_edd(), EFREET_CACHE_VERSION, &version, 1);
version.major = EFREET_DESKTOP_CACHE_MAJOR;
version.minor = EFREET_DESKTOP_CACHE_MINOR;
eet_data_write(ef, efreet_version_edd(), EFREET_CACHE_VERSION, &version, 1);
eet_close(util_ef); eet_close(util_ef);
eet_close(ef); eet_close(ef);

View File

@ -358,6 +358,7 @@ main(int argc, char **argv)
* - pass extra dirs to binary, and read them * - pass extra dirs to binary, and read them
* - make sure programs with different extra dirs all work together * - make sure programs with different extra dirs all work together
*/ */
Efreet_Cache_Version *version;
Efreet_Cache_Theme *cache; Efreet_Cache_Theme *cache;
Efreet_Icon_Theme *theme; Efreet_Icon_Theme *theme;
Eet_Data_Descriptor *edd; Eet_Data_Descriptor *edd;
@ -425,6 +426,25 @@ main(int argc, char **argv)
ef = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ_WRITE); ef = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ_WRITE);
if (!ef) goto on_error_efreet; if (!ef) goto on_error_efreet;
version = eet_data_read(ef, efreet_version_edd(), EFREET_CACHE_VERSION);
if (version &&
((version->major != EFREET_ICON_CACHE_MAJOR) ||
(version->minor != EFREET_ICON_CACHE_MINOR)))
{
// delete old cache
eet_close(ef);
if (unlink(efreet_icon_cache_file()) < 0)
{
if (errno != ENOENT) goto on_error_efreet;
}
ef = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ_WRITE);
if (!ef) goto on_error_efreet;
}
if (!version)
version = NEW(Efreet_Cache_Version, 1);
version->major = EFREET_ICON_CACHE_MAJOR;
version->minor = EFREET_ICON_CACHE_MINOR;
edd = efreet_icon_theme_edd(EINA_TRUE); edd = efreet_icon_theme_edd(EINA_TRUE);
@ -437,26 +457,12 @@ main(int argc, char **argv)
/* read icons from the eet file */ /* read icons from the eet file */
cache = eet_data_read(ef, edd, theme->name.internal); cache = eet_data_read(ef, edd, theme->name.internal);
/* Wype out in case of version change */
if (cache &&
(cache->version.major != EFREET_CACHE_MAJOR
|| cache->version.minor != EFREET_CACHE_MINOR))
{
eina_hash_free(cache->icons);
eina_hash_free(cache->dirs);
free(cache);
cache = NULL;
}
/* No existing cache before, so create it */ /* No existing cache before, so create it */
if (!cache) if (!cache)
{ {
cache = NEW(Efreet_Cache_Theme, 1); cache = NEW(Efreet_Cache_Theme, 1);
if (!cache) goto on_error_efreet; if (!cache) goto on_error_efreet;
cache->version.major = EFREET_CACHE_MAJOR;
cache->version.minor = EFREET_CACHE_MINOR;
changed = EINA_TRUE; changed = EINA_TRUE;
} }
@ -486,16 +492,7 @@ main(int argc, char **argv)
edd = efreet_icon_fallback_edd(EINA_TRUE); edd = efreet_icon_fallback_edd(EINA_TRUE);
/* read fallback icons from the eet file */ /* read fallback icons from the eet file */
cache = eet_data_read(ef, edd, "efreet/fallback"); cache = eet_data_read(ef, edd, EFREET_CACHE_ICON_FALLBACK);
if (cache &&
(cache->version.major != EFREET_CACHE_MAJOR
|| cache->version.minor != EFREET_CACHE_MINOR))
{
if (cache->icons) eina_hash_free(cache->icons);
if (cache->dirs) eina_hash_free(cache->dirs);
free(cache);
cache = NULL;
}
/* No existing fallback, create it */ /* No existing fallback, create it */
if (!cache) if (!cache)
@ -503,9 +500,6 @@ main(int argc, char **argv)
cache = NEW(Efreet_Cache_Theme, 1); cache = NEW(Efreet_Cache_Theme, 1);
if (!cache) goto on_error_efreet; if (!cache) goto on_error_efreet;
cache->version.major = EFREET_CACHE_MAJOR;
cache->version.minor = EFREET_CACHE_MINOR;
changed = EINA_TRUE; changed = EINA_TRUE;
} }
@ -520,7 +514,7 @@ main(int argc, char **argv)
{ {
fprintf(stderr, "generated: fallback %i (%i)\n", changed, eina_hash_population(cache->icons)); fprintf(stderr, "generated: fallback %i (%i)\n", changed, eina_hash_population(cache->icons));
if (changed) if (changed)
eet_data_write(ef, edd, "efreet/fallback", cache, 1); eet_data_write(ef, edd, EFREET_CACHE_ICON_FALLBACK, cache, 1);
} }
eina_hash_free(cache->icons); eina_hash_free(cache->icons);
@ -528,6 +522,7 @@ main(int argc, char **argv)
free(cache); free(cache);
/* save data */ /* save data */
eet_data_write(ef, efreet_version_edd(), EFREET_CACHE_VERSION, version, 1);
eet_close(ef); eet_close(ef);
/* touch update file */ /* touch update file */

View File

@ -33,6 +33,7 @@ static int _efreet_cache_log_dom = -1;
* Data for cache files * Data for cache files
*/ */
#ifdef ICON_CACHE #ifdef ICON_CACHE
static Eet_Data_Descriptor *cache_version_edd = NULL;
static Eet_Data_Descriptor *directory_edd = NULL; static Eet_Data_Descriptor *directory_edd = NULL;
static Eet_Data_Descriptor *cache_theme_edd = NULL; static Eet_Data_Descriptor *cache_theme_edd = NULL;
static Eet_Data_Descriptor *cache_fallback_edd = NULL; static Eet_Data_Descriptor *cache_fallback_edd = NULL;
@ -142,12 +143,10 @@ efreet_cache_shutdown(void)
if (theme_name) eina_stringshare_del(theme_name); if (theme_name) eina_stringshare_del(theme_name);
theme_name = NULL; theme_name = NULL;
if (cache) eet_close(cache); cache = efreet_cache_close(cache);
cache = NULL;
#endif #endif
if (desktop_cache) eet_close(desktop_cache); desktop_cache = efreet_cache_close(desktop_cache);
desktop_cache = NULL;
IF_RELEASE(desktop_cache_file); IF_RELEASE(desktop_cache_file);
IF_RELEASE(desktop_cache_dirs); IF_RELEASE(desktop_cache_dirs);
@ -257,6 +256,7 @@ Edd = NULL;
static void static void
efreet_cache_edd_shutdown(void) efreet_cache_edd_shutdown(void)
{ {
EDD_SHUTDOWN(cache_version_edd);
EDD_SHUTDOWN(desktop_edd); EDD_SHUTDOWN(desktop_edd);
#ifdef ICON_CACHE #ifdef ICON_CACHE
EDD_SHUTDOWN(cache_fallback_edd); EDD_SHUTDOWN(cache_fallback_edd);
@ -326,6 +326,28 @@ efreet_icon_directory_edd(void)
return directory_edd; return directory_edd;
} }
/*
* Needs EAPI because of helper binaries
*/
EAPI Eet_Data_Descriptor *
efreet_version_edd(void)
{
Eet_Data_Descriptor_Class eddc;
if (cache_version_edd) return cache_version_edd;
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Efreet_Cache_Version);
cache_version_edd = eet_data_descriptor_file_new(&eddc);
if (!cache_version_edd) return NULL;
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_version_edd, Efreet_Cache_Version,
"minor", minor, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_version_edd, Efreet_Cache_Version,
"major", major, EET_T_UCHAR);
return cache_version_edd;
}
/* /*
* Needs EAPI because of helper binaries * Needs EAPI because of helper binaries
*/ */
@ -369,10 +391,6 @@ efreet_icon_theme_edd(Eina_Bool include_dirs)
cache_theme_edd = eet_data_descriptor_file_new(&eddc); cache_theme_edd = eet_data_descriptor_file_new(&eddc);
if (!cache_theme_edd) return NULL; if (!cache_theme_edd) return NULL;
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_theme_edd, Efreet_Cache_Theme,
"version.minor", version.minor, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_theme_edd, Efreet_Cache_Theme,
"version.major", version.major, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_HASH(cache_theme_edd, Efreet_Cache_Theme, EET_DATA_DESCRIPTOR_ADD_HASH(cache_theme_edd, Efreet_Cache_Theme,
"icons", icons, icon_edd); "icons", icons, icon_edd);
@ -419,10 +437,6 @@ efreet_icon_fallback_edd(Eina_Bool include_dirs)
cache_fallback_edd = eet_data_descriptor_file_new(&eddc); cache_fallback_edd = eet_data_descriptor_file_new(&eddc);
if (!cache_fallback_edd) return NULL; if (!cache_fallback_edd) return NULL;
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_fallback_edd, Efreet_Cache_Theme,
"version.minor", version.minor, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(cache_fallback_edd, Efreet_Cache_Theme,
"version.major", version.major, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_HASH(cache_fallback_edd, Efreet_Cache_Theme, EET_DATA_DESCRIPTOR_ADD_HASH(cache_fallback_edd, Efreet_Cache_Theme,
"icons", icons, icon_fallback_edd); "icons", icons, icon_fallback_edd);
@ -507,8 +521,7 @@ efreet_cache_icon_fallback_free(Efreet_Cache_Fallback_Icon *icon)
Efreet_Cache_Icon * Efreet_Cache_Icon *
efreet_cache_icon_find(Efreet_Icon_Theme *theme, const char *icon) efreet_cache_icon_find(Efreet_Icon_Theme *theme, const char *icon)
{ {
if (!cache) cache = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ); if (!efreet_cache_check(&cache, efreet_icon_cache_file(), EFREET_ICON_CACHE_MAJOR)) return NULL;
if (!cache) return NULL;
if (theme_name && strcmp(theme_name, theme->name.internal)) if (theme_name && strcmp(theme_name, theme->name.internal))
{ {
@ -529,7 +542,7 @@ efreet_cache_icon_find(Efreet_Icon_Theme *theme, const char *icon)
theme_name = eina_stringshare_add(theme->name.internal); theme_name = eina_stringshare_add(theme->name.internal);
} }
if (!theme_cache || theme_cache->version.major != EFREET_CACHE_MAJOR) return NULL; if (!theme_cache) return NULL;
return eina_hash_find(theme_cache->icons, icon); return eina_hash_find(theme_cache->icons, icon);
} }
@ -537,18 +550,17 @@ efreet_cache_icon_find(Efreet_Icon_Theme *theme, const char *icon)
Efreet_Cache_Fallback_Icon * Efreet_Cache_Fallback_Icon *
efreet_cache_icon_fallback_find(const char *icon) efreet_cache_icon_fallback_find(const char *icon)
{ {
if (!cache) cache = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ); if (!efreet_cache_check(&cache, efreet_icon_cache_file(), EFREET_ICON_CACHE_MAJOR)) return NULL;
if (!cache) return NULL;
if (!fallback_cache) if (!fallback_cache)
{ {
INFO("loading fallback cache"); INFO("loading fallback cache");
fallback_cache = eet_data_read(cache, efreet_icon_fallback_edd(EINA_FALSE), "efreet/fallback"); fallback_cache = eet_data_read(cache, efreet_icon_fallback_edd(EINA_FALSE), EFREET_CACHE_ICON_FALLBACK);
if (fallback_cache && !fallback_cache->icons) if (fallback_cache && !fallback_cache->icons)
fallback_cache->icons = eina_hash_string_superfast_new((Eina_Free_Cb) efreet_cache_icon_fallback_free); fallback_cache->icons = eina_hash_string_superfast_new((Eina_Free_Cb) efreet_cache_icon_fallback_free);
} }
if (!fallback_cache || fallback_cache->version.major != EFREET_CACHE_MAJOR) return NULL; if (!fallback_cache) return NULL;
return eina_hash_find(fallback_cache->icons, icon); return eina_hash_find(fallback_cache->icons, icon);
} }
@ -562,10 +574,7 @@ efreet_cache_desktop_find(const char *file)
if (!realpath(file, rp)) return NULL; if (!realpath(file, rp)) return NULL;
if (!desktop_cache) if (!efreet_cache_check(&desktop_cache, efreet_desktop_cache_file(), EFREET_DESKTOP_CACHE_MAJOR)) return NULL;
desktop_cache = eet_open(efreet_desktop_cache_file(), EET_FILE_MODE_READ);
if (!desktop_cache)
return NULL;
desktop = eet_data_read(desktop_cache, efreet_desktop_edd(), rp); desktop = eet_data_read(desktop_cache, efreet_desktop_edd(), rp);
if (!desktop) return NULL; if (!desktop) return NULL;
@ -621,6 +630,40 @@ efreet_cache_desktop_free(Efreet_Desktop *desktop)
} }
} }
Eina_Bool
efreet_cache_check(Eet_File **ef, const char *path, int major)
{
Efreet_Cache_Version *version;
if (*ef == NON_EXISTING) return EINA_FALSE;
if (!*ef)
*ef = eet_open(path, EET_FILE_MODE_READ);
if (!*ef)
{
*ef = NON_EXISTING;
return EINA_FALSE;
}
version = eet_data_read(*ef, efreet_version_edd(), EFREET_CACHE_VERSION);
if ((!version) || (version->major != major))
{
IF_FREE(version);
eet_close(*ef);
*ef = NON_EXISTING;
return EINA_FALSE;
}
free(version);
return EINA_TRUE;
}
void *
efreet_cache_close(Eet_File *ef)
{
if (ef && ef != NON_EXISTING)
eet_close(ef);
return NULL;
}
static Eina_Bool static Eina_Bool
cache_exe_cb(void *data __UNUSED__, int type __UNUSED__, void *event) cache_exe_cb(void *data __UNUSED__, int type __UNUSED__, void *event)
{ {
@ -698,8 +741,7 @@ cache_update_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
fallback_cache = _efreet_cache_free(fallback_cache); fallback_cache = _efreet_cache_free(fallback_cache);
} }
if (cache) eet_close(cache); cache = efreet_cache_close(cache);
cache = NULL;
ev = NEW(Efreet_Event_Cache_Update, 1); ev = NEW(Efreet_Event_Cache_Update, 1);
if (!ev) return; if (!ev) return;
@ -821,7 +863,7 @@ desktop_cache_update_free(void *data, void *ev)
*/ */
if (dangling == 0) if (dangling == 0)
{ {
if (d->ef) eet_close(d->ef); efreet_cache_close(d->ef);
} }
else else
{ {

View File

@ -1,6 +1,15 @@
#ifndef EFREET_CACHE_PRIVATE_H #ifndef EFREET_CACHE_PRIVATE_H
#define EFREET_CACHE_PRIVATE_H #define EFREET_CACHE_PRIVATE_H
#define EFREET_CACHE_VERSION "efreet//version"
#ifdef ICON_CACHE
#define EFREET_CACHE_ICON_FALLBACK "efreet//fallback"
#endif
Eina_Bool efreet_cache_check(Eet_File **ef, const char *path, int major);
void *efreet_cache_close(Eet_File *ef);
EAPI Eet_Data_Descriptor *efreet_version_edd(void);
EAPI Eet_Data_Descriptor *efreet_desktop_edd(void); EAPI Eet_Data_Descriptor *efreet_desktop_edd(void);
#ifdef ICON_CACHE #ifdef ICON_CACHE
EAPI Eet_Data_Descriptor *efreet_icon_theme_edd(Eina_Bool include_dirs); EAPI Eet_Data_Descriptor *efreet_icon_theme_edd(Eina_Bool include_dirs);

View File

@ -116,22 +116,28 @@ extern int _efreet_log_dom_global;
extern Eina_Hash *efreet_desktop_cache; extern Eina_Hash *efreet_desktop_cache;
#ifdef ICON_CACHE #ifdef ICON_CACHE
#define EFREET_CACHE_MAJOR 0 #define EFREET_ICON_CACHE_MAJOR 0
#define EFREET_CACHE_MINOR 3 #define EFREET_ICON_CACHE_MINOR 4
#define EFREET_DESKTOP_CACHE_MAJOR 0
#define EFREET_DESKTOP_CACHE_MINOR 1
#define EFREET_DESKTOP_UTILS_CACHE_MAJOR 0
#define EFREET_DESKTOP_UTILS_CACHE_MINOR 1
typedef struct _Efreet_Cache_Icon_Element Efreet_Cache_Icon_Element; typedef struct _Efreet_Cache_Version Efreet_Cache_Version;
typedef struct _Efreet_Cache_Fallback_Icon Efreet_Cache_Fallback_Icon;
typedef struct _Efreet_Cache_Icon Efreet_Cache_Icon;
typedef struct _Efreet_Cache_Theme Efreet_Cache_Theme; typedef struct _Efreet_Cache_Theme Efreet_Cache_Theme;
typedef struct _Efreet_Cache_Directory Efreet_Cache_Directory; typedef struct _Efreet_Cache_Directory Efreet_Cache_Directory;
typedef struct _Efreet_Cache_Icon Efreet_Cache_Icon;
typedef struct _Efreet_Cache_Icon_Element Efreet_Cache_Icon_Element;
typedef struct _Efreet_Cache_Fallback_Icon Efreet_Cache_Fallback_Icon;
struct _Efreet_Cache_Version
{
unsigned char major;
unsigned char minor;
};
struct _Efreet_Cache_Theme struct _Efreet_Cache_Theme
{ {
struct {
unsigned char major;
unsigned char minor;
} version;
Eina_Hash *icons; Eina_Hash *icons;
Eina_Hash *dirs; Eina_Hash *dirs;
}; };

View File

@ -2,6 +2,8 @@
# include <config.h> # include <config.h>
#endif #endif
/* TODO: move eet file handling to eet_cache.c */
#undef alloca #undef alloca
#ifdef HAVE_ALLOCA_H #ifdef HAVE_ALLOCA_H
# include <alloca.h> # include <alloca.h>
@ -32,6 +34,7 @@ void *alloca (size_t);
#include "Efreet.h" #include "Efreet.h"
#include "efreet_private.h" #include "efreet_private.h"
#include "efreet_cache_private.h"
/* define macros and variable for using the eina logging system */ /* define macros and variable for using the eina logging system */
@ -51,8 +54,6 @@ static Efreet_Desktop *efreet_util_cache_find(const char *search, const char *wh
static Eina_List *efreet_util_cache_list(const char *search, const char *what); static Eina_List *efreet_util_cache_list(const char *search, const char *what);
static Eina_List *efreet_util_cache_glob_list(const char *search, const char *what); static Eina_List *efreet_util_cache_glob_list(const char *search, const char *what);
static Eina_Bool cache_check(void);
static Eina_Hash *file_id_by_desktop_path = NULL; static Eina_Hash *file_id_by_desktop_path = NULL;
static const char *cache_file = NULL; static const char *cache_file = NULL;
static Eet_File *cache = NULL; static Eet_File *cache = NULL;
@ -83,7 +84,7 @@ efreet_util_shutdown(void)
eina_log_domain_unregister(_efreet_utils_log_dom); eina_log_domain_unregister(_efreet_utils_log_dom);
IF_FREE_HASH(file_id_by_desktop_path); IF_FREE_HASH(file_id_by_desktop_path);
if (cache) eet_close(cache); cache = efreet_cache_close(cache);
IF_RELEASE(cache_file); IF_RELEASE(cache_file);
return init; return init;
} }
@ -238,7 +239,7 @@ efreet_util_desktop_exec_find(const char *exec)
int num, i; int num, i;
Efreet_Desktop *ret = NULL; Efreet_Desktop *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
if (!exec) return NULL; if (!exec) return NULL;
keys = eet_list(cache, "*::e", &num); keys = eet_list(cache, "*::e", &num);
@ -331,7 +332,7 @@ efreet_util_desktop_exec_glob_list(const char *glob)
int num, i; int num, i;
Eina_List *ret = NULL; Eina_List *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
if (!glob) return NULL; if (!glob) return NULL;
keys = eet_list(cache, "*::e", &num); keys = eet_list(cache, "*::e", &num);
@ -408,7 +409,7 @@ efreet_util_desktop_categories_list(void)
int num, i; int num, i;
Eina_List *ret = NULL; Eina_List *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
keys = eet_list(cache, "*::ca", &num); keys = eet_list(cache, "*::ca", &num);
if (!keys) return NULL; if (!keys) return NULL;
for (i = 0; i < num; i++) for (i = 0; i < num; i++)
@ -506,7 +507,7 @@ efreet_util_cache_find(const char *search, const char *what1, const char *what2)
int num, i; int num, i;
Efreet_Desktop *ret = NULL; Efreet_Desktop *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
if ((!what1) && (!what2)) return NULL; if ((!what1) && (!what2)) return NULL;
keys = eet_list(cache, search, &num); keys = eet_list(cache, search, &num);
@ -540,7 +541,7 @@ efreet_util_cache_list(const char *search, const char *what)
int num, i; int num, i;
Eina_List *ret = NULL; Eina_List *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
if (!what) return NULL; if (!what) return NULL;
keys = eet_list(cache, search, &num); keys = eet_list(cache, search, &num);
@ -575,7 +576,7 @@ efreet_util_cache_glob_list(const char *search, const char *what)
int num, i; int num, i;
Eina_List *ret = NULL; Eina_List *ret = NULL;
if (!cache_check()) return NULL; if (!efreet_cache_check(&cache, efreet_desktop_util_cache_file(), EFREET_DESKTOP_UTILS_CACHE_MAJOR)) return NULL;
if (!what) return NULL; if (!what) return NULL;
keys = eet_list(cache, search, &num); keys = eet_list(cache, search, &num);
@ -606,20 +607,5 @@ efreet_util_cache_glob_list(const char *search, const char *what)
void void
efreet_util_desktop_cache_reload(void) efreet_util_desktop_cache_reload(void)
{ {
if (cache && cache != NON_EXISTING) eet_close(cache); cache = efreet_cache_close(cache);
cache = NULL;
}
static Eina_Bool
cache_check(void)
{
if (cache == NON_EXISTING) return EINA_FALSE;
if (!cache)
cache = eet_open(efreet_desktop_util_cache_file(), EET_FILE_MODE_READ);
if (!cache)
{
cache = NON_EXISTING;
return EINA_FALSE;
}
return EINA_TRUE;
} }