forked from enlightenment/efl
Add func to read a .desktop file from disk
SVN revision: 47250
This commit is contained in:
parent
a4c63dd80d
commit
ef2cb7ab02
|
@ -428,12 +428,13 @@ EAPI Efreet_Desktop *
|
||||||
efreet_desktop_new(const char *file)
|
efreet_desktop_new(const char *file)
|
||||||
{
|
{
|
||||||
Efreet_Desktop *desktop = NULL;
|
Efreet_Desktop *desktop = NULL;
|
||||||
char rp[PATH_MAX];
|
|
||||||
|
|
||||||
if (!file) return NULL;
|
if (!file) return NULL;
|
||||||
if (!realpath(file, rp)) return NULL;
|
|
||||||
if (cache)
|
if (cache)
|
||||||
{
|
{
|
||||||
|
char rp[PATH_MAX];
|
||||||
|
if (!realpath(file, rp)) return NULL;
|
||||||
|
|
||||||
/* 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, rp);
|
desktop = eet_data_read(cache, desktop_edd, rp);
|
||||||
if (desktop)
|
if (desktop)
|
||||||
|
@ -443,24 +444,40 @@ efreet_desktop_new(const char *file)
|
||||||
return desktop;
|
return desktop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* TODO:
|
return efreet_desktop_uncached_new(file);
|
||||||
* Add .desktop file path to a cache file, so that
|
}
|
||||||
* efreet_desktop_cache_create can add it to the cache
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!ecore_file_exists(rp)) goto error;
|
/**
|
||||||
|
* @param file: The file to create the Efreet_Desktop from
|
||||||
|
* @return Returns a new Efreet_Desktop on success, NULL on failure
|
||||||
|
* @brief Creates a new Efreet_Desktop structure initialized from the
|
||||||
|
* contents of @a file or NULL on failure
|
||||||
|
*
|
||||||
|
* By using efreet_desktop_uncached_new the Efreet_Desktop structure will be
|
||||||
|
* read from disk, and not from any cache.
|
||||||
|
*/
|
||||||
|
EAPI Efreet_Desktop *
|
||||||
|
efreet_desktop_uncached_new(const char *file)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop = NULL;
|
||||||
|
char rp[PATH_MAX];
|
||||||
|
|
||||||
|
if (!file) return NULL;
|
||||||
|
if (!realpath(file, rp)) return NULL;
|
||||||
|
if (!ecore_file_exists(rp)) return NULL;
|
||||||
|
|
||||||
desktop = NEW(Efreet_Desktop, 1);
|
desktop = NEW(Efreet_Desktop, 1);
|
||||||
if (!desktop) goto error;
|
if (!desktop) return NULL;
|
||||||
desktop->orig_path = strdup(rp);
|
desktop->orig_path = strdup(rp);
|
||||||
if (!efreet_desktop_read(desktop)) goto error;
|
if (!efreet_desktop_read(desktop))
|
||||||
|
{
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
desktop->ref = 1;
|
desktop->ref = 1;
|
||||||
|
|
||||||
return desktop;
|
return desktop;
|
||||||
error:
|
|
||||||
if (desktop) efreet_desktop_free(desktop);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -96,6 +96,7 @@ EAPI Efreet_Desktop *efreet_desktop_get(const char *file);
|
||||||
EAPI int efreet_desktop_ref(Efreet_Desktop *desktop);
|
EAPI int efreet_desktop_ref(Efreet_Desktop *desktop);
|
||||||
EAPI Efreet_Desktop *efreet_desktop_empty_new(const char *file);
|
EAPI Efreet_Desktop *efreet_desktop_empty_new(const char *file);
|
||||||
EAPI Efreet_Desktop *efreet_desktop_new(const char *file);
|
EAPI Efreet_Desktop *efreet_desktop_new(const char *file);
|
||||||
|
EAPI Efreet_Desktop *efreet_desktop_uncached_new(const char *file);
|
||||||
EAPI void efreet_desktop_free(Efreet_Desktop *desktop);
|
EAPI void efreet_desktop_free(Efreet_Desktop *desktop);
|
||||||
#define efreet_desktop_unref(desktop) efreet_desktop_free((desktop))
|
#define efreet_desktop_unref(desktop) efreet_desktop_free((desktop))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue