From f06cae155603069c2a281fd41830ac4d813641bd Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 3 Oct 2017 12:11:48 +0200 Subject: [PATCH] run: Break out /usr link creation to helper This is the code needed to set up the symlinks into the runtime to make stuff work. We will need this separately for minimal runtime use. Closes: #1073 Approved by: alexlarsson --- common/flatpak-run.c | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/common/flatpak-run.c b/common/flatpak-run.c index e8af0630..b6557a3a 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -4468,6 +4468,32 @@ setup_seccomp (GPtrArray *argv_array, } #endif +static void +flatpak_run_setup_usr_links (GPtrArray *argv_array, + GFile *runtime_files) +{ + const char *usr_links[] = {"lib", "lib32", "lib64", "bin", "sbin"}; + int i; + + if (runtime_files == NULL) + return; + + for (i = 0; i < G_N_ELEMENTS (usr_links); i++) + { + const char *subdir = usr_links[i]; + g_autoptr(GFile) runtime_subdir = g_file_get_child (runtime_files, subdir); + if (g_file_query_exists (runtime_subdir, NULL)) + { + g_autofree char *link = g_strconcat ("usr/", subdir, NULL); + g_autofree char *dest = g_strconcat ("/", subdir, NULL); + add_args (argv_array, + "--symlink", link, dest, + NULL); + } + } +} + + gboolean flatpak_run_setup_base_argv (GPtrArray *argv_array, GArray *fd_array, @@ -4477,9 +4503,7 @@ flatpak_run_setup_base_argv (GPtrArray *argv_array, FlatpakRunFlags flags, GError **error) { - const char *usr_links[] = {"lib", "lib32", "lib64", "bin", "sbin"}; g_autofree char *run_dir = g_strdup_printf ("/run/user/%d", getuid ()); - int i; g_autofree char *passwd_contents = NULL; g_autofree char *group_contents = NULL; struct group *g = getgrgid (getgid ()); @@ -4605,19 +4629,7 @@ flatpak_run_setup_base_argv (GPtrArray *argv_array, NULL); } - for (i = 0; runtime_files != NULL && i < G_N_ELEMENTS (usr_links); i++) - { - const char *subdir = usr_links[i]; - g_autoptr(GFile) runtime_subdir = g_file_get_child (runtime_files, subdir); - if (g_file_query_exists (runtime_subdir, NULL)) - { - g_autofree char *link = g_strconcat ("usr/", subdir, NULL); - g_autofree char *dest = g_strconcat ("/", subdir, NULL); - add_args (argv_array, - "--symlink", link, dest, - NULL); - } - } + flatpak_run_setup_usr_links (argv_array, runtime_files); pers = PER_LINUX;