From: Luca Boccassi Date: Tue, 19 Sep 2023 23:06:21 +0000 (+0100) Subject: env-util: add helper to replace env block X-Git-Tag: v255-rc1~250^2~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=58cb36e56b15e14da23a507f337af6bd26503e2f;p=thirdparty%2Fsystemd.git env-util: add helper to replace env block --- diff --git a/src/basic/env-util.c b/src/basic/env-util.c index 44772f778de..d3bf73385fb 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -1074,3 +1074,22 @@ int getenv_steal_erase(const char *name, char **ret) { return 1; } + +int set_full_environment(char **env) { + int r; + + clearenv(); + + STRV_FOREACH(e, env) { + _cleanup_free_ char *k = NULL, *v = NULL; + + r = split_pair(*e, "=", &k, &v); + if (r < 0) + return r; + + if (setenv(k, v, /* overwrite= */ true) < 0) + return -errno; + } + + return 0; +} diff --git a/src/basic/env-util.h b/src/basic/env-util.h index ec3ac199efe..f7fb1e90823 100644 --- a/src/basic/env-util.h +++ b/src/basic/env-util.h @@ -77,3 +77,5 @@ int setenv_systemd_exec_pid(bool update_only); int getenv_path_list(const char *name, char ***ret_paths); int getenv_steal_erase(const char *name, char **ret); + +int set_full_environment(char **env);