libpriv: Pull in copy of gs_file_get_path_cached()
This is the same thing done in OSTree; we still have a lot of references to it. Maybe it should go in libglnx actually, since flatpak uses it too. Closes: #511 Approved by: jlebon
This commit is contained in:
parent
a347ff5f69
commit
90d52e3d5e
@ -627,3 +627,39 @@ rpmostree_pull_content_only (OstreeRepo *dest,
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G_LOCK_DEFINE_STATIC (pathname_cache);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rpmostree_file_get_path_cached:
|
||||||
|
*
|
||||||
|
* Like g_file_get_path(), but returns a constant copy so callers
|
||||||
|
* don't need to free the result.
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
rpmostree_file_get_path_cached (GFile *file)
|
||||||
|
{
|
||||||
|
const char *path;
|
||||||
|
static GQuark _file_path_quark = 0;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (_file_path_quark) == 0)
|
||||||
|
_file_path_quark = g_quark_from_static_string ("gsystem-file-path");
|
||||||
|
|
||||||
|
G_LOCK (pathname_cache);
|
||||||
|
|
||||||
|
path = g_object_get_qdata ((GObject*)file, _file_path_quark);
|
||||||
|
if (!path)
|
||||||
|
{
|
||||||
|
path = g_file_get_path (file);
|
||||||
|
if (path == NULL)
|
||||||
|
{
|
||||||
|
G_UNLOCK (pathname_cache);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
g_object_set_qdata_full ((GObject*)file, _file_path_quark, (char*)path, (GDestroyNotify)g_free);
|
||||||
|
}
|
||||||
|
|
||||||
|
G_UNLOCK (pathname_cache);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
@ -119,3 +119,12 @@ rpmostree_pull_content_only (OstreeRepo *dest,
|
|||||||
const char *src_commit,
|
const char *src_commit,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
const char *
|
||||||
|
rpmostree_file_get_path_cached (GFile *file);
|
||||||
|
|
||||||
|
static inline
|
||||||
|
const char *
|
||||||
|
gs_file_get_path_cached (GFile *file)
|
||||||
|
{
|
||||||
|
return rpmostree_file_get_path_cached (file);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user