From: Timo Sirainen Date: Wed, 20 Jan 2021 18:42:40 +0000 (+0200) Subject: lib: Add env_put_array() X-Git-Tag: 2.3.16~178 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3af2f08c27db610fc27b06e73c5f6a4bfa9b26fc;p=thirdparty%2Fdovecot%2Fcore.git lib: Add env_put_array() --- diff --git a/src/lib/env-util.c b/src/lib/env-util.c index e19cc7cd27..231b1bcc0c 100644 --- a/src/lib/env-util.c +++ b/src/lib/env-util.c @@ -25,6 +25,14 @@ void env_put(const char *env) i_fatal("putenv(%s) failed: %m", env); } +void env_put_array(const char *const *envs) +{ + for (unsigned int i = 0; envs[i] != NULL; i++) { + i_assert(strchr(envs[i], '=') != NULL); + env_put(envs[i]); + } +} + void env_remove(const char *name) { #ifdef HAVE_UNSETENV @@ -128,11 +136,8 @@ struct env_backup *env_backup_save(void) void env_backup_restore(struct env_backup *env) { - unsigned int i; - env_clean(); - for (i = 0; env->strings[i] != NULL; i++) - env_put(env->strings[i]); + env_put_array(env->strings); } void env_backup_free(struct env_backup **_env) diff --git a/src/lib/env-util.h b/src/lib/env-util.h index f793da8bd4..d1aa516639 100644 --- a/src/lib/env-util.h +++ b/src/lib/env-util.h @@ -4,6 +4,8 @@ /* Add new environment variable. Wrapper to putenv(). Note that calls to this function allocates memory which isn't free'd until env_clean() is called. */ void env_put(const char *env); +/* env_put() NULL-terminated array of name=value strings */ +void env_put_array(const char *const *envs); /* Remove a single environment. */ void env_remove(const char *name); /* Clear all environment variables. */