From 80ea030fe5cb7ebc6804ba54feca48f02ee7c95f Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 12 May 2015 11:13:44 +0200 Subject: [PATCH] Add xdg_app_run_apply_env_vars() helper --- xdg-app-run.c | 23 +++++++++++++++++++++++ xdg-app-run.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/xdg-app-run.c b/xdg-app-run.c index 72525d93..f713270c 100644 --- a/xdg-app-run.c +++ b/xdg-app-run.c @@ -390,6 +390,29 @@ xdg_app_run_get_minimal_env (gboolean devel) return (char **)g_ptr_array_free (env_array, FALSE); } +char ** +xdg_app_run_apply_env_vars (char **envp, GKeyFile *metakey) +{ + glnx_strfreev char **keys = NULL; + gsize i, keys_count; + + keys = g_key_file_get_keys (metakey, "Vars", &keys_count, NULL); + if (keys) + { + for (i = 0; i < keys_count; i++) + { + const char *key = keys[i]; + g_autofree char *value = g_key_file_get_string (metakey, "Vars", key, NULL); + if (value) + envp = g_environ_setenv (envp, key, value, TRUE); + else + envp = g_environ_unsetenv (envp, key); + } + } + + return envp; +} + GFile * xdg_app_get_data_dir (const char *app_id) { diff --git a/xdg-app-run.h b/xdg-app-run.h index ac0c9a21..ebb44dbc 100644 --- a/xdg-app-run.h +++ b/xdg-app-run.h @@ -31,6 +31,8 @@ void xdg_app_run_add_environment_args (GPtrArray *argv_array, const char **allow, const char **forbid); char ** xdg_app_run_get_minimal_env (gboolean devel); +char ** xdg_app_run_apply_env_vars (char **envp, + GKeyFile *metakey); void xdg_app_run_add_x11_args (GPtrArray *argv_array); void xdg_app_run_add_no_x11_args (GPtrArray *argv_array);