[sysprof] flatpak: peek via host access
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] flatpak: peek via host access
- Date: Sat, 3 Aug 2019 01:56:52 +0000 (UTC)
commit 1ff88caa89a1a85dad0318ce7d6d5bdfd3478aad
Author: Christian Hergert <chergert redhat com>
Date: Fri Aug 2 18:52:18 2019 -0700
flatpak: peek via host access
src/libsysprof/sysprof-flatpak.c | 44 ++++++++++++++++++++++++++++------------
1 file changed, 31 insertions(+), 13 deletions(-)
---
diff --git a/src/libsysprof/sysprof-flatpak.c b/src/libsysprof/sysprof-flatpak.c
index 5f470e0..467b28c 100644
--- a/src/libsysprof/sysprof-flatpak.c
+++ b/src/libsysprof/sysprof-flatpak.c
@@ -26,30 +26,27 @@
#define ETC_INSTALLATIONS_D "/etc/flatpak/installations.d"
-gchar **
-get_installations (void)
+static void
+add_from_installations_d (GPtrArray *ret,
+ const gchar *path,
+ const gchar *prefix)
{
- GPtrArray *ret = g_ptr_array_new ();
g_autoptr(GDir) dir = NULL;
- /* We might be running from a container, so ignore XDG_DATA_HOME as
- * that will likely be different that what we care about the host.
- * TODO: Can we find a way to support non-standard XDG_DATA_HOME?
- */
- g_ptr_array_add (ret, g_build_filename (g_get_home_dir (), ".local", "share", "flatpak", NULL));
- g_ptr_array_add (ret, g_strdup ("/var/lib/flatpak"));
+ g_assert (ret != NULL);
+ g_assert (path != NULL);
/* Now look at /etc/flatpak/installations.d for keyfiles with Path= */
- if ((dir = g_dir_open (ETC_INSTALLATIONS_D, 0, NULL)))
+ if ((dir = g_dir_open (path, 0, NULL)))
{
const gchar *name;
while ((name = g_dir_read_name (dir)))
{
- g_autofree gchar *path = g_build_filename (ETC_INSTALLATIONS_D, name, NULL);
+ g_autofree gchar *key_path = g_build_filename (path, name, NULL);
g_autoptr(GKeyFile) kf = g_key_file_new ();
- if (g_key_file_load_from_file (kf, path, G_KEY_FILE_NONE, NULL))
+ if (g_key_file_load_from_file (kf, key_path, G_KEY_FILE_NONE, NULL))
{
g_auto(GStrv) groups = g_key_file_get_groups (kf, NULL);
@@ -60,12 +57,33 @@ get_installations (void)
gchar *val = g_key_file_get_string (kf, groups[i], "Path", NULL);
if (val)
- g_ptr_array_add (ret, g_steal_pointer (&val));
+ {
+ if (prefix)
+ g_ptr_array_add (ret, g_build_filename (prefix, val, NULL));
+ else
+ g_ptr_array_add (ret, g_steal_pointer (&val));
+ }
}
}
}
}
}
+}
+
+gchar **
+get_installations (void)
+{
+ GPtrArray *ret = g_ptr_array_new ();
+
+ /* We might be running from a container, so ignore XDG_DATA_HOME as
+ * that will likely be different that what we care about the host.
+ * TODO: Can we find a way to support non-standard XDG_DATA_HOME?
+ */
+ g_ptr_array_add (ret, g_build_filename (g_get_home_dir (), ".local", "share", "flatpak", NULL));
+ g_ptr_array_add (ret, g_strdup ("/var/lib/flatpak"));
+
+ add_from_installations_d (ret, ETC_INSTALLATIONS_D, NULL);
+ add_from_installations_d (ret, "/var/run/host" ETC_INSTALLATIONS_D, "/var/run/host");
g_ptr_array_add (ret, NULL);
return (gchar **)g_ptr_array_free (ret, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]