forked from enlightenment/efl
parent
f880806ff2
commit
6d10aea822
|
@ -35,7 +35,6 @@ static int _efreet_base_log_dom = -1;
|
||||||
static const char *efreet_dir_get(const char *key, const char *fallback);
|
static const char *efreet_dir_get(const char *key, const char *fallback);
|
||||||
static Eina_List *efreet_dirs_get(const char *key,
|
static Eina_List *efreet_dirs_get(const char *key,
|
||||||
const char *fallback);
|
const char *fallback);
|
||||||
static const char *efreet_path_clean(const char *path);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
|
@ -93,7 +92,7 @@ efreet_home_dir_get(void)
|
||||||
if (!efreet_home_dir || efreet_home_dir[0] == '\0')
|
if (!efreet_home_dir || efreet_home_dir[0] == '\0')
|
||||||
efreet_home_dir = "/tmp";
|
efreet_home_dir = "/tmp";
|
||||||
|
|
||||||
efreet_home_dir = efreet_path_clean(efreet_home_dir);
|
efreet_home_dir = eina_stringshare_add(efreet_home_dir);
|
||||||
|
|
||||||
return efreet_home_dir;
|
return efreet_home_dir;
|
||||||
}
|
}
|
||||||
|
@ -204,10 +203,10 @@ efreet_dir_get(const char *key, const char *fallback)
|
||||||
dir = malloc(sizeof(char) * len);
|
dir = malloc(sizeof(char) * len);
|
||||||
snprintf(dir, len, "%s%s", user, fallback);
|
snprintf(dir, len, "%s%s", user, fallback);
|
||||||
|
|
||||||
t = efreet_path_clean(dir);
|
t = eina_stringshare_add(dir);
|
||||||
FREE(dir);
|
FREE(dir);
|
||||||
}
|
}
|
||||||
else t = efreet_path_clean(dir);
|
else t = eina_stringshare_add(dir);
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
@ -240,37 +239,14 @@ efreet_dirs_get(const char *key, const char *fallback)
|
||||||
{
|
{
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s))
|
if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s))
|
||||||
dirs = eina_list_append(dirs, (void *)efreet_path_clean(s));
|
dirs = eina_list_append(dirs, (void *)eina_stringshare_add(s));
|
||||||
|
|
||||||
s = ++p;
|
s = ++p;
|
||||||
p = strchr(s, EFREET_PATH_SEP);
|
p = strchr(s, EFREET_PATH_SEP);
|
||||||
}
|
}
|
||||||
if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s))
|
if (!eina_list_search_unsorted(dirs, EINA_COMPARE_CB(strcmp), s))
|
||||||
dirs = eina_list_append(dirs, (void *)efreet_path_clean(s));
|
dirs = eina_list_append(dirs, (void *)eina_stringshare_add(s));
|
||||||
FREE(tmp);
|
FREE(tmp);
|
||||||
|
|
||||||
return dirs;
|
return dirs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
|
||||||
efreet_path_clean(const char *path)
|
|
||||||
{
|
|
||||||
char *p, *pp;
|
|
||||||
const char *ret;
|
|
||||||
|
|
||||||
if (!path) return eina_stringshare_add("");
|
|
||||||
if (!*path) return eina_stringshare_add("");
|
|
||||||
|
|
||||||
p = strdup(path);
|
|
||||||
if (!p) return eina_stringshare_add("");
|
|
||||||
for (pp = p; *pp; pp++)
|
|
||||||
{
|
|
||||||
if (*pp == '/' && *(pp + 1) == '/')
|
|
||||||
memmove(pp, pp + 1, strlen(pp + 1) + 1);
|
|
||||||
if (*pp == '/' && *(pp + 1) == '\0')
|
|
||||||
*pp = '\0';
|
|
||||||
}
|
|
||||||
ret = eina_stringshare_add(p);
|
|
||||||
free(p);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
|
@ -358,15 +358,18 @@ efreet_desktop_new(const char *file)
|
||||||
{
|
{
|
||||||
/* TODO: Need file monitor on file and events to notify change */
|
/* TODO: Need file monitor on file and events to notify change */
|
||||||
Efreet_Desktop *desktop = NULL;
|
Efreet_Desktop *desktop = NULL;
|
||||||
|
char *rp = NULL;
|
||||||
|
|
||||||
|
rp = ecore_file_realpath(file);
|
||||||
if (cache)
|
if (cache)
|
||||||
{
|
{
|
||||||
/* TODO: Check if the cached version is out of date */
|
/* TODO: Check if the cached version is out of date */
|
||||||
desktop = eet_data_read(cache, desktop_edd, file);
|
desktop = eet_data_read(cache, desktop_edd, rp);
|
||||||
if (desktop)
|
if (desktop)
|
||||||
{
|
{
|
||||||
desktop->ref = 1;
|
desktop->ref = 1;
|
||||||
desktop->eet = 1;
|
desktop->eet = 1;
|
||||||
|
free(rp);
|
||||||
return desktop;
|
return desktop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -375,22 +378,22 @@ efreet_desktop_new(const char *file)
|
||||||
* efreet_desktop_cache_create can add it to the cache
|
* efreet_desktop_cache_create can add it to the cache
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!ecore_file_exists(file)) return NULL;
|
if (!ecore_file_exists(rp)) goto error;
|
||||||
|
|
||||||
desktop = NEW(Efreet_Desktop, 1);
|
desktop = NEW(Efreet_Desktop, 1);
|
||||||
if (!desktop) return NULL;
|
if (!desktop) goto error;
|
||||||
|
|
||||||
desktop->orig_path = strdup(file);
|
desktop->orig_path = rp;
|
||||||
|
|
||||||
if (!efreet_desktop_read(desktop))
|
if (!efreet_desktop_read(desktop)) goto error;
|
||||||
{
|
|
||||||
efreet_desktop_free(desktop);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
desktop->ref = 1;
|
desktop->ref = 1;
|
||||||
|
|
||||||
return desktop;
|
return desktop;
|
||||||
|
error:
|
||||||
|
if (desktop) efreet_desktop_free(desktop);
|
||||||
|
if (rp) free(rp);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue