]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
env-util: add helper to replace env block
authorLuca Boccassi <bluca@debian.org>
Tue, 19 Sep 2023 23:06:21 +0000 (00:06 +0100)
committerLuca Boccassi <bluca@debian.org>
Thu, 12 Oct 2023 12:37:22 +0000 (13:37 +0100)
src/basic/env-util.c
src/basic/env-util.h

index 44772f778dedbbb47809206d2a4425df5ec63bd5..d3bf73385fbcf64ccc35263a105c43b0d2ddc476 100644 (file)
@@ -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;
+}
index ec3ac199efe22081d8788b9f3539dd9c48d035fc..f7fb1e90823d9735c581325e30166274d95ce583 100644 (file)
@@ -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);