From 9da725d028c73578264f430e64c008dc136f726b Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Sat, 4 Dec 2010 16:02:20 +0000 Subject: [PATCH] fix cache filenames move cache to XDG_CACHE_HOME and add hostname for shared homedirs SVN revision: 55263 --- .../src/bin/efreet_desktop_cache_create.c | 6 ++--- .../efreet/src/bin/efreet_icon_cache_create.c | 6 ++--- legacy/efreet/src/lib/efreet_base.c | 21 +++++++++++++++ legacy/efreet/src/lib/efreet_base.h | 1 + legacy/efreet/src/lib/efreet_cache.c | 26 +++++++++---------- legacy/efreet/src/lib/efreet_utils.c | 12 ++++----- 6 files changed, 47 insertions(+), 25 deletions(-) diff --git a/legacy/efreet/src/bin/efreet_desktop_cache_create.c b/legacy/efreet/src/bin/efreet_desktop_cache_create.c index 0844c338a3..07b2520205 100644 --- a/legacy/efreet/src/bin/efreet_desktop_cache_create.c +++ b/legacy/efreet/src/bin/efreet_desktop_cache_create.c @@ -269,11 +269,11 @@ main(int argc, char **argv) efreet_cache_update = 0; /* create homedir */ - snprintf(file, sizeof(file), "%s/.efreet", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet", efreet_cache_home_get()); if (!ecore_file_mkpath(file)) goto efreet_error; /* lock process, so that we only run one copy of this program */ - snprintf(file, sizeof(file), "%s/.efreet/desktop_data.lock", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/desktop_data.lock", efreet_cache_home_get()); lockfd = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (lockfd < 0) goto efreet_error; memset(&fl, 0, sizeof(struct flock)); @@ -442,7 +442,7 @@ main(int argc, char **argv) } /* touch update file */ - snprintf(file, sizeof(file), "%s/.efreet/desktop_data.update", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/desktop_data.update", efreet_cache_home_get()); tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if (tmpfd >= 0) { diff --git a/legacy/efreet/src/bin/efreet_icon_cache_create.c b/legacy/efreet/src/bin/efreet_icon_cache_create.c index 167c74ec53..572201cb51 100644 --- a/legacy/efreet/src/bin/efreet_icon_cache_create.c +++ b/legacy/efreet/src/bin/efreet_icon_cache_create.c @@ -312,7 +312,7 @@ cache_lock_file(void) struct flock fl; int lockfd; - snprintf(file, sizeof(file), "%s/.efreet/icon_data.lock", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/icon_data.lock", efreet_cache_home_get()); lockfd = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (lockfd < 0) return -1; @@ -377,7 +377,7 @@ main(int argc, char **argv) /* FIXME: should be in cache dir maybe */ /* create homedir */ - snprintf(file, sizeof(file), "%s/.efreet", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet", efreet_cache_home_get()); if (!ecore_file_mkpath(file)) return -1; /* lock process, so that we only run one copy of this program */ @@ -505,7 +505,7 @@ main(int argc, char **argv) eet_close(ef); /* touch update file */ - snprintf(file, sizeof(file), "%s/.efreet/icon_data.update", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/icon_data.update", efreet_cache_home_get()); tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if (tmpfd >= 0) { diff --git a/legacy/efreet/src/lib/efreet_base.c b/legacy/efreet/src/lib/efreet_base.c index 11d2ff0807..b8651ef7ec 100644 --- a/legacy/efreet/src/lib/efreet_base.c +++ b/legacy/efreet/src/lib/efreet_base.c @@ -23,6 +23,7 @@ void *alloca (size_t); #include #include #include +#include #include "Efreet.h" #include "efreet_private.h" @@ -42,6 +43,7 @@ static const char *xdg_config_home = NULL; static const char *xdg_cache_home = NULL; static Eina_List *xdg_data_dirs = NULL; static Eina_List *xdg_config_dirs = NULL; +static const char *hostname = NULL; /* define macros and variable for using the eina logging system */ #ifdef EFREET_MODULE_LOG_DOM @@ -90,6 +92,8 @@ efreet_base_shutdown(void) IF_FREE_LIST(xdg_data_dirs, eina_stringshare_del); IF_FREE_LIST(xdg_config_dirs, eina_stringshare_del); + IF_RELEASE(hostname); + eina_log_domain_unregister(_efreet_base_log_dom); } @@ -199,6 +203,23 @@ efreet_cache_home_get(void) return xdg_cache_home; } +/** + * @return Returns the current hostname + * @brief Returns the current hostname or empty string if not found + */ +EAPI const char * +efreet_hostname_get(void) +{ + char buf[256]; + + if (hostname) return hostname; + if (gethostname(buf, sizeof(buf)) < 0) + hostname = eina_stringshare_add(""); + else + hostname = eina_stringshare_add(buf); + return hostname; +} + /** * @internal * @param key: The environemnt key to lookup diff --git a/legacy/efreet/src/lib/efreet_base.h b/legacy/efreet/src/lib/efreet_base.h index b11fd8eff9..24c1518787 100644 --- a/legacy/efreet/src/lib/efreet_base.h +++ b/legacy/efreet/src/lib/efreet_base.h @@ -17,6 +17,7 @@ EAPI const char *efreet_config_home_get(void); EAPI Eina_List *efreet_config_dirs_get(void); EAPI const char *efreet_cache_home_get(void); +EAPI const char *efreet_hostname_get(void); /** * Efreet_Event_Cache_Update diff --git a/legacy/efreet/src/lib/efreet_cache.c b/legacy/efreet/src/lib/efreet_cache.c index 9e30abb270..d590d18555 100644 --- a/legacy/efreet/src/lib/efreet_cache.c +++ b/legacy/efreet/src/lib/efreet_cache.c @@ -101,7 +101,7 @@ efreet_cache_init(void) #endif EFREET_EVENT_DESKTOP_CACHE_UPDATE = ecore_event_type_new(); - snprintf(buf, sizeof(buf), "%s/.efreet", efreet_home_dir_get()); + snprintf(buf, sizeof(buf), "%s/efreet", efreet_cache_home_get()); if (!ecore_file_mkpath(buf)) goto error; if (efreet_cache_update) @@ -194,11 +194,11 @@ EAPI const char * efreet_icon_cache_file(void) { static char cache_file[PATH_MAX] = { '\0' }; - const char *home; + const char *cache; - home = efreet_home_dir_get(); + cache = efreet_cache_home_get(); - snprintf(cache_file, sizeof(cache_file), "%s/.efreet/icons.eet", home); + snprintf(cache_file, sizeof(cache_file), "%s/efreet/icons_%s.eet", cache, efreet_hostname_get()); return cache_file; } @@ -233,23 +233,23 @@ EAPI const char * efreet_desktop_cache_file(void) { char tmp[PATH_MAX] = { '\0' }; - const char *home, *lang, *country, *modifier; + const char *cache, *lang, *country, *modifier; if (desktop_cache_file) return desktop_cache_file; - home = efreet_home_dir_get(); + cache = efreet_cache_home_get(); lang = efreet_lang_get(); country = efreet_lang_country_get(); modifier = efreet_lang_modifier_get(); if (lang && country && modifier) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_%s_%s@%s.eet", home, lang, country, modifier); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_%s_%s_%s@%s.eet", cache, efreet_hostname_get(), lang, country, modifier); else if (lang && country) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_%s_%s.eet", home, lang, country); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_%s_%s_%s.eet", cache, efreet_hostname_get(), lang, country); else if (lang) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_%s.eet", home, lang); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_%s_%s.eet", cache, efreet_hostname_get(), lang); else - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop.eet", home); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_%s.eet", cache, efreet_hostname_get()); desktop_cache_file = eina_stringshare_add(tmp); return desktop_cache_file; @@ -265,7 +265,7 @@ efreet_desktop_cache_dirs(void) if (desktop_cache_dirs) return desktop_cache_dirs; - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_dirs.cache", efreet_home_dir_get()); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_dirs.cache", efreet_cache_home_get()); desktop_cache_dirs = eina_stringshare_add(tmp); return desktop_cache_dirs; @@ -768,7 +768,7 @@ desktop_cache_update_cache_job(void *data __UNUSED__) if (!efreet_desktop_write_cache_dirs_file()) return; - snprintf(file, sizeof(file), "%s/.efreet/desktop_exec.lock", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/desktop_exec.lock", efreet_cache_home_get()); desktop_cache_exe_lock = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (desktop_cache_exe_lock < 0) return; @@ -805,7 +805,7 @@ icon_cache_update_cache_job(void *data __UNUSED__) /* TODO: Retry update cache later */ if (icon_cache_exe_lock > 0) return; - snprintf(file, sizeof(file), "%s/.efreet/icon_exec.lock", efreet_home_dir_get()); + snprintf(file, sizeof(file), "%s/efreet/icon_exec.lock", efreet_cache_home_get()); icon_cache_exe_lock = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (icon_cache_exe_lock < 0) return; diff --git a/legacy/efreet/src/lib/efreet_utils.c b/legacy/efreet/src/lib/efreet_utils.c index 51b1a7c534..76d39c2188 100644 --- a/legacy/efreet/src/lib/efreet_utils.c +++ b/legacy/efreet/src/lib/efreet_utils.c @@ -96,23 +96,23 @@ EAPI const char * efreet_desktop_util_cache_file(void) { char tmp[PATH_MAX] = { '\0' }; - const char *home, *lang, *country, *modifier; + const char *cache_dir, *lang, *country, *modifier; if (cache_file) return cache_file; - home = efreet_home_dir_get(); + cache_dir = efreet_cache_home_get(); lang = efreet_lang_get(); country = efreet_lang_country_get(); modifier = efreet_lang_modifier_get(); if (lang && country && modifier) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_util_%s_%s@%s.eet", home, lang, country, modifier); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_util_%s_%s_%s@%s.eet", cache_dir, efreet_hostname_get(), lang, country, modifier); else if (lang && country) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_util_%s_%s.eet", home, lang, country); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_util_%s_%s_%s.eet", cache_dir, efreet_hostname_get(), lang, country); else if (lang) - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_util_%s.eet", home, lang); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_util_%s_%s.eet", cache_dir, efreet_hostname_get(), lang); else - snprintf(tmp, sizeof(tmp), "%s/.efreet/desktop_util.eet", home); + snprintf(tmp, sizeof(tmp), "%s/efreet/desktop_util_%s.eet", cache_dir, efreet_hostname_get()); cache_file = eina_stringshare_add(tmp); return cache_file;