basic/env-util: add putenv_dup()
This commit is contained in:
@@ -768,6 +768,21 @@ int set_unset_env(const char *name, const char *value, bool overwrite) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int putenv_dup(const char *assignment, bool override) {
|
||||
const char *e, *n;
|
||||
|
||||
e = strchr(assignment, '=');
|
||||
if (!e)
|
||||
return -EINVAL;
|
||||
|
||||
n = strndupa(assignment, e - assignment);
|
||||
|
||||
/* This is like putenv(), but uses setenv() so that our memory doesn't become part of environ[]. */
|
||||
if (setenv(n, e + 1, override) < 0)
|
||||
return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int setenv_systemd_exec_pid(bool update_only) {
|
||||
char str[DECIMAL_STR_MAX(pid_t)];
|
||||
const char *e;
|
||||
|
||||
@@ -58,6 +58,9 @@ int getenv_bool_secure(const char *p);
|
||||
/* Like setenv, but calls unsetenv if value == NULL. */
|
||||
int set_unset_env(const char *name, const char *value, bool overwrite);
|
||||
|
||||
/* Like putenv, but duplicates the memory like setenv. */
|
||||
int putenv_dup(const char *assignment, bool override);
|
||||
|
||||
int setenv_systemd_exec_pid(bool update_only);
|
||||
|
||||
/* Parses and does sanity checks on an environment variable containing
|
||||
|
||||
Reference in New Issue
Block a user