summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2021-01-25 15:33:34 +0000
committerAlexander Larsson <alexander.larsson@gmail.com>2021-04-15 18:00:47 +0200
commit6a5bd592f494f9e7a84a8860618062917f2f04a8 (patch)
tree549637bf940fd833c2fd78078360a3e8b254a243
parent712efd3156e62ac175544848898bbc2bd0430ae6 (diff)
downloadflatpak-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.h7
-rw-r--r--common/flatpak-context.c55
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