diff options
author | Simon McVittie <smcv@collabora.com> | 2021-01-25 15:51:53 +0000 |
---|---|---|
committer | Alexander Larsson <alexander.larsson@gmail.com> | 2021-04-15 18:00:47 +0200 |
commit | 574ff50cf4e06747fa6494afeb8270645922c088 (patch) | |
tree | 61219af60d25301598f32b4cb24e97711f7953a9 | |
parent | 5d50b77c37b021219cd9c5262bef166e42018f79 (diff) | |
download | flatpak-574ff50cf4e06747fa6494afeb8270645922c088.tar.gz |
common: Separate creation of FlatpakExports from append_bwrap_filesystem
A subsequent commit will need to look at the FlatpakExports before
we are ready to append their arguments to the FlatpakBwrap.
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r-- | common/flatpak-context-private.h | 5 | ||||
-rw-r--r-- | common/flatpak-context.c | 16 | ||||
-rw-r--r-- | common/flatpak-run.c | 10 | ||||
-rw-r--r-- | tests/test-exports.c | 28 |
4 files changed, 35 insertions, 24 deletions
diff --git a/common/flatpak-context-private.h b/common/flatpak-context-private.h index 420393b4..1a35793a 100644 --- a/common/flatpak-context-private.h +++ b/common/flatpak-context-private.h @@ -145,8 +145,9 @@ void flatpak_context_append_bwrap_filesystem (FlatpakContext *context, FlatpakBwrap *bwrap, const char *app_id, GFile *app_id_dir, - GPtrArray *extra_app_id_dirs, - FlatpakExports **exports_out); + FlatpakExports *exports, + const char *xdg_dirs_conf, + gboolean home_access); G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlatpakContext, flatpak_context_free) diff --git a/common/flatpak-context.c b/common/flatpak-context.c index 66a6d0ae..bf693134 100644 --- a/common/flatpak-context.c +++ b/common/flatpak-context.c @@ -2501,20 +2501,13 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context, FlatpakBwrap *bwrap, const char *app_id, GFile *app_id_dir, - GPtrArray *extra_app_id_dirs, - FlatpakExports **exports_out) + FlatpakExports *exports, + const char *xdg_dirs_conf, + gboolean home_access) { - g_autoptr(FlatpakExports) exports = NULL; - g_autofree char *xdg_dirs_conf = NULL; - gboolean home_access = FALSE; GHashTableIter iter; gpointer key, value; - 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); @@ -2610,7 +2603,4 @@ flatpak_context_append_bwrap_filesystem (FlatpakContext *context, flatpak_bwrap_add_args_data (bwrap, "xdg-config-dirs", xdg_dirs_conf, strlen (xdg_dirs_conf), path, NULL); } - - if (exports_out) - *exports_out = g_steal_pointer (&exports); } diff --git a/common/flatpak-run.c b/common/flatpak-run.c index a7c3deb3..65af230e 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -1352,8 +1352,10 @@ flatpak_run_add_environment_args (FlatpakBwrap *bwrap, g_autoptr(GError) my_error = NULL; g_autoptr(FlatpakExports) exports = NULL; g_autoptr(FlatpakBwrap) proxy_arg_bwrap = flatpak_bwrap_new (flatpak_bwrap_empty_env); + g_autofree char *xdg_dirs_conf = NULL; gboolean has_wayland = FALSE; gboolean allow_x11 = FALSE; + gboolean home_access = FALSE; if ((context->shares & FLATPAK_CONTEXT_SHARED_IPC) == 0) { @@ -1460,7 +1462,13 @@ flatpak_run_add_environment_args (FlatpakBwrap *bwrap, } } - flatpak_context_append_bwrap_filesystem (context, bwrap, app_id, app_id_dir, previous_app_id_dirs, &exports); + + exports = flatpak_context_get_exports_full (context, + app_id_dir, previous_app_id_dirs, + TRUE, TRUE, + &xdg_dirs_conf, &home_access); + flatpak_context_append_bwrap_filesystem (context, bwrap, app_id, app_id_dir, + exports, xdg_dirs_conf, home_access); if (context->sockets & FLATPAK_CONTEXT_SOCKET_WAYLAND) { diff --git a/tests/test-exports.c b/tests/test-exports.c index f16565ed..8b714096 100644 --- a/tests/test-exports.c +++ b/tests/test-exports.c @@ -167,6 +167,8 @@ test_empty_context (void) g_autoptr(FlatpakBwrap) bwrap = flatpak_bwrap_new (NULL); g_autoptr(FlatpakContext) context = flatpak_context_new (); g_autoptr(FlatpakExports) exports = NULL; + g_autofree char *xdg_dirs_conf = NULL; + gboolean home_access = FALSE; g_assert_cmpuint (g_hash_table_size (context->env_vars), ==, 0); g_assert_cmpuint (g_hash_table_size (context->persistent), ==, 0); @@ -188,13 +190,17 @@ test_empty_context (void) g_assert_nonnull (exports); g_clear_pointer (&exports, flatpak_exports_free); + exports = flatpak_context_get_exports_full (context, + NULL, NULL, + TRUE, TRUE, + &xdg_dirs_conf, &home_access); + g_assert_nonnull (exports); + g_assert_nonnull (xdg_dirs_conf); flatpak_context_append_bwrap_filesystem (context, bwrap, "com.example.App", - NULL, - NULL, - &exports); + NULL, exports, xdg_dirs_conf, + home_access); print_bwrap (bwrap); - g_assert_nonnull (exports); } static void @@ -206,8 +212,10 @@ test_full_context (void) g_autoptr(GError) error = NULL; g_autoptr(GKeyFile) keyfile = g_key_file_new (); g_autofree gchar *text = NULL; + g_autofree char *xdg_dirs_conf = NULL; g_auto(GStrv) strv = NULL; gsize i, n; + gboolean home_access = FALSE; g_key_file_set_value (keyfile, FLATPAK_METADATA_GROUP_CONTEXT, @@ -306,13 +314,17 @@ test_full_context (void) g_assert_nonnull (exports); g_clear_pointer (&exports, flatpak_exports_free); + exports = flatpak_context_get_exports_full (context, + NULL, NULL, + TRUE, TRUE, + &xdg_dirs_conf, &home_access); + g_assert_nonnull (exports); + g_assert_nonnull (xdg_dirs_conf); flatpak_context_append_bwrap_filesystem (context, bwrap, "com.example.App", - NULL, - NULL, - &exports); + NULL, exports, xdg_dirs_conf, + home_access); print_bwrap (bwrap); - g_assert_nonnull (exports); g_clear_pointer (&keyfile, g_key_file_unref); keyfile = g_key_file_new (); |