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 *desktop = NULL;
|
||||
char rp[PATH_MAX];
|
||||
|
||||
if (!file) return NULL;
|
||||
if (!realpath(file, rp)) return NULL;
|
||||
if (cache)
|
||||
{
|
||||
char rp[PATH_MAX];
|
||||
if (!realpath(file, rp)) return NULL;
|
||||
|
||||
/* TODO: Check if the cached version is out of date */
|
||||
desktop = eet_data_read(cache, desktop_edd, rp);
|
||||
if (desktop)
|
||||
|
@ -443,24 +444,40 @@ efreet_desktop_new(const char *file)
|
|||
return desktop;
|
||||
}
|
||||
}
|
||||
/* TODO:
|
||||
* Add .desktop file path to a cache file, so that
|
||||
* efreet_desktop_cache_create can add it to the cache
|
||||
*/
|
||||
return efreet_desktop_uncached_new(file);
|
||||
}
|
||||
|
||||
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);
|
||||
if (!desktop) goto error;
|
||||
if (!desktop) return NULL;
|
||||
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;
|
||||
|
||||
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 Efreet_Desktop *efreet_desktop_empty_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);
|
||||
#define efreet_desktop_unref(desktop) efreet_desktop_free((desktop))
|
||||
|
||||
|
|
Loading…
Reference in New Issue