diff options
author | Simon McVittie <smcv@collabora.com> | 2021-01-25 15:33:34 +0000 |
---|---|---|
committer | Alexander Larsson <alexander.larsson@gmail.com> | 2021-04-15 18:00:47 +0200 |
commit | 6a5bd592f494f9e7a84a8860618062917f2f04a8 (patch) | |
tree | 549637bf940fd833c2fd78078360a3e8b254a243 | |
parent | 712efd3156e62ac175544848898bbc2bd0430ae6 (diff) | |
download | flatpak-6a5bd592f494f9e7a84a8860618062917f2f04a8.tar.gz |
context: Factor out flatpak_context_get_exports_full()
This combines the functionality of flatpak_context_get_exports() and its
open-coded version in flatpak_context_append_bwrap_filesystem().
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r-- | common/flatpak-context-private.h | 7 | ||||
-rw-r--r-- | common/flatpak-context.c | 55 |
2 files changed, 48 insertions, 14 deletions
diff --git a/common/flatpak-context-private.h b/common/flatpak-context-private.h index 45879ac0..37c864c2 100644 --- a/common/flatpak-context-private.h +++ b/common/flatpak-context-private.h @@ -133,6 +133,13 @@ FlatpakContext *flatpak_context_load_for_deploy (FlatpakDeploy *deploy, FlatpakExports *flatpak_context_get_exports (FlatpakContext *context, const char *app_id); +FlatpakExports *flatpak_context_get_exports_full (FlatpakContext *context, + GFile *app_id_dir, + GPtrArray *extra_app_id_dirs, + gboolean do_create, + gboolean include_default_dirs, + GString *xdg_dirs_conf, + gboolean *home_access_out); void flatpak_context_append_bwrap_filesystem (FlatpakContext *context, FlatpakBwrap *bwrap, diff --git a/common/flatpak-context.c b/common/flatpak-context.c index abeda358..ca5928bf 100644 --- a/common/flatpak-context.c +++ b/common/flatpak-context.c @@ -2429,11 +2429,11 @@ FlatpakExports * flatpak_context_get_exports (FlatpakContext *context, const char *app_id) { - g_autoptr(FlatpakExports) exports = flatpak_exports_new (); g_autoptr(GFile) app_id_dir = flatpak_get_data_dir (app_id); - flatpak_context_export (context, exports, app_id_dir, NULL, FALSE, NULL, NULL); - return g_steal_pointer (&exports); + return flatpak_context_get_exports_full (context, + app_id_dir, NULL, + FALSE, FALSE, NULL, NULL); } FlatpakRunFlags @@ -2456,6 +2456,36 @@ flatpak_context_get_run_flags (FlatpakContext *context) return flags; } +FlatpakExports * +flatpak_context_get_exports_full (FlatpakContext *context, + GFile *app_id_dir, + GPtrArray *extra_app_id_dirs, + gboolean do_create, + gboolean include_default_dirs, + GString *xdg_dirs_conf, + gboolean *home_access_out) +{ + g_autoptr(FlatpakExports) exports = flatpak_exports_new (); + + flatpak_context_export (context, exports, + app_id_dir, extra_app_id_dirs, + do_create, xdg_dirs_conf, home_access_out); + + if (include_default_dirs) + { + g_autoptr(GFile) user_flatpak_dir = NULL; + + /* Hide the flatpak dir by default (unless explicitly made visible) */ + user_flatpak_dir = flatpak_get_user_base_dir_location (); + flatpak_exports_add_path_tmpfs (exports, flatpak_file_get_path_cached (user_flatpak_dir)); + + /* Ensure we always have a homedir */ + flatpak_exports_add_path_dir (exports, g_get_home_dir ()); + } + + return g_steal_pointer (&exports); +} + void flatpak_context_append_bwrap_filesystem (FlatpakContext *context, FlatpakBwrap *bwrap, @@ -2464,14 +2494,17 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context, GPtrArray *extra_app_id_dirs, FlatpakExports **exports_out) { - g_autoptr(FlatpakExports) exports = flatpak_exports_new (); + g_autoptr(FlatpakExports) exports = NULL; g_autoptr(GString) xdg_dirs_conf = g_string_new (""); - g_autoptr(GFile) user_flatpak_dir = NULL; gboolean home_access = FALSE; GHashTableIter iter; gpointer key, value; - flatpak_context_export (context, exports, app_id_dir, extra_app_id_dirs, TRUE, xdg_dirs_conf, &home_access); + exports = flatpak_context_get_exports_full (context, + app_id_dir, extra_app_id_dirs, + TRUE, TRUE, + xdg_dirs_conf, &home_access); + if (app_id_dir != NULL) flatpak_run_apply_env_appid (bwrap, app_id_dir); @@ -2508,14 +2541,8 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context, NULL); } - /* Hide the flatpak dir by default (unless explicitly made visible) */ - user_flatpak_dir = flatpak_get_user_base_dir_location (); - flatpak_exports_add_path_tmpfs (exports, flatpak_file_get_path_cached (user_flatpak_dir)); - - /* Ensure we always have a homedir */ - flatpak_exports_add_path_dir (exports, g_get_home_dir ()); - - /* This actually outputs the args for the hide/expose operations above */ + /* This actually outputs the args for the hide/expose operations + * in the exports */ flatpak_exports_append_bwrap_args (exports, bwrap); /* Special case subdirectories of the cache, config and data xdg |