diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/xdg-app-dir.c | 11 | ||||
-rw-r--r-- | common/xdg-app-run.c | 11 | ||||
-rw-r--r-- | common/xdg-app-utils.c | 9 | ||||
-rw-r--r-- | common/xdg-app-utils.h | 2 |
4 files changed, 27 insertions, 6 deletions
diff --git a/common/xdg-app-dir.c b/common/xdg-app-dir.c index 59d752b..1cc74b1 100644 --- a/common/xdg-app-dir.c +++ b/common/xdg-app-dir.c @@ -1752,10 +1752,15 @@ xdg_app_dir_run_triggers (XdgAppDir *self, g_autoptr(GFileInfo) child_info = NULL; g_autoptr(GFile) triggersdir = NULL; GError *temp_error = NULL; + const char *triggerspath; - g_debug ("running triggers"); + triggerspath = g_getenv ("XDG_APP_TRIGGERSDIR"); + if (triggerspath == NULL) + triggerspath = XDG_APP_TRIGGERDIR; - triggersdir = g_file_new_for_path (XDG_APP_TRIGGERDIR); + g_debug ("running triggers from %s", triggerspath); + + triggersdir = g_file_new_for_path (triggerspath); dir_enum = g_file_enumerate_children (triggersdir, "standard::type,standard::name", 0, cancellable, error); @@ -1784,7 +1789,7 @@ xdg_app_dir_run_triggers (XdgAppDir *self, g_ptr_array_add (argv_array, g_file_get_path (child)); g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); #else - g_ptr_array_add (argv_array, g_strdup (HELPER)); + g_ptr_array_add (argv_array, g_strdup (xdg_app_get_bwrap ())); g_ptr_array_add (argv_array, g_strdup ("--unshare-ipc")); g_ptr_array_add (argv_array, g_strdup ("--unshare-net")); g_ptr_array_add (argv_array, g_strdup ("--unshare-pid")); diff --git a/common/xdg-app-run.c b/common/xdg-app-run.c index f0d7660..e4d32f7 100644 --- a/common/xdg-app-run.c +++ b/common/xdg-app-run.c @@ -2320,6 +2320,7 @@ add_dbus_proxy_args (GPtrArray *argv_array, GError **error) { char x = 'x'; + const char *proxy; if (dbus_proxy_argv->len == 0) return TRUE; @@ -2338,7 +2339,11 @@ add_dbus_proxy_args (GPtrArray *argv_array, add_args (argv_array, "--sync-fd", fd_str, NULL); } - g_ptr_array_insert (dbus_proxy_argv, 0, g_strdup (DBUSPROXY)); + proxy = g_getenv ("XDG_APP_DBUSPROXY"); + if (proxy == NULL) + proxy = DBUSPROXY; + + g_ptr_array_insert (dbus_proxy_argv, 0, g_strdup (proxy)); g_ptr_array_insert (dbus_proxy_argv, 1, g_strdup_printf ("--fd=%d", sync_fds[1])); if (enable_logging) g_ptr_array_insert (dbus_proxy_argv, 2, g_strdup ("--log")); @@ -2951,7 +2956,7 @@ xdg_app_run_app (const char *app_ref, } real_argv_array = g_ptr_array_new_with_free_func (g_free); - g_ptr_array_add (real_argv_array, g_strdup (HELPER)); + g_ptr_array_add (real_argv_array, g_strdup (xdg_app_get_bwrap ())); { gsize len; @@ -2989,7 +2994,7 @@ xdg_app_run_app (const char *app_ref, } else { - if (execvpe (HELPER, (char **)real_argv_array->pdata, envp) == -1) + if (execvpe (xdg_app_get_bwrap (), (char **)real_argv_array->pdata, envp) == -1) { g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno), "Unable to start app"); return FALSE; diff --git a/common/xdg-app-utils.c b/common/xdg-app-utils.c index 46906ce..cbf5031 100644 --- a/common/xdg-app-utils.c +++ b/common/xdg-app-utils.c @@ -216,6 +216,15 @@ xdg_app_get_arch (void) return arch; } +const char * +xdg_app_get_bwrap (void) +{ + const char *e = g_getenv ("XDG_APP_BWRAP"); + if (e != NULL) + return e; + return HELPER; +} + static gboolean is_valid_initial_name_character (gint c) { diff --git a/common/xdg-app-utils.h b/common/xdg-app-utils.h index 9b5e7c0..5f0fbcc 100644 --- a/common/xdg-app-utils.h +++ b/common/xdg-app-utils.h @@ -41,6 +41,8 @@ const char * xdg_app_path_match_prefix (const char *pattern, const char * xdg_app_get_arch (void); +const char * xdg_app_get_bwrap (void); + GBytes * xdg_app_read_stream (GInputStream *in, gboolean null_terminate, GError **error); |