diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-07-12 11:30:30 -0400 |
---|---|---|
committer | Philip Withnall <withnall@endlessm.com> | 2019-07-15 13:48:47 +0100 |
commit | 69dcbc83d8bc8315b38b46609afef7c0e44105e8 (patch) | |
tree | cb604d62493f73aa559a2f07fe97f97169a5a7c4 | |
parent | cffe8efd0a367cb08c651533ee07e049f3765edc (diff) | |
download | glib-69dcbc83d8bc8315b38b46609afef7c0e44105e8.tar.gz |
portal: Add a getter for dconf access
Add method to find whether the sandbox provides
access to dconf. This will be used to tweak
the priorities for the keyfile settings backend.
-rw-r--r-- | gio/gportalsupport.c | 18 | ||||
-rw-r--r-- | gio/gportalsupport.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/gio/gportalsupport.c b/gio/gportalsupport.c index 2f1e82517..b0a94b360 100644 --- a/gio/gportalsupport.c +++ b/gio/gportalsupport.c @@ -23,6 +23,7 @@ static gboolean flatpak_info_read; static gboolean use_portal; static gboolean network_available; +static gboolean dconf_access; static void read_flatpak_info (void) @@ -40,11 +41,13 @@ read_flatpak_info (void) use_portal = TRUE; network_available = FALSE; + dconf_access = FALSE; keyfile = g_key_file_new (); if (g_key_file_load_from_file (keyfile, path, G_KEY_FILE_NONE, NULL)) { char **shared = NULL; + char *dconf_policy = NULL; shared = g_key_file_get_string_list (keyfile, "Context", "shared", NULL, NULL); if (shared) @@ -52,6 +55,14 @@ read_flatpak_info (void) network_available = g_strv_contains ((const char * const *)shared, "network"); g_strfreev (shared); } + + dconf_policy = g_key_file_get_string (keyfile, "Session Bus Policy", "ca.desrt.dconf", NULL); + if (dconf_policy) + { + if (strcmp (dconf_policy, "talk") == 0) + dconf_access = TRUE; + g_free (dconf_policy); + } } g_key_file_unref (keyfile); @@ -64,6 +75,7 @@ read_flatpak_info (void) if (var && var[0] == '1') use_portal = TRUE; network_available = TRUE; + dconf_access = TRUE; } } @@ -81,3 +93,9 @@ glib_network_available_in_sandbox (void) return network_available; } +gboolean +glib_has_dconf_access_in_sandbox (void) +{ + read_flatpak_info (); + return dconf_access; +} diff --git a/gio/gportalsupport.h b/gio/gportalsupport.h index a331f45d3..746f1fd6b 100644 --- a/gio/gportalsupport.h +++ b/gio/gportalsupport.h @@ -24,6 +24,7 @@ G_BEGIN_DECLS gboolean glib_should_use_portal (void); gboolean glib_network_available_in_sandbox (void); +gboolean glib_has_dconf_access_in_sandbox (void); G_END_DECLS |