basic/env-util: add strv_env_assign() helper

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2021-02-16 16:10:14 +01:00
parent 6f8f8688e1
commit f08231fe07
4 changed files with 39 additions and 69 deletions
+23
View File
@@ -406,7 +406,30 @@ int strv_env_replace_strdup(char ***l, const char *assignment) {
r = strv_env_replace(l, p);
if (r < 0)
return r;
TAKE_PTR(p);
return r;
}
int strv_env_assign(char ***l, const char *key, const char *value) {
int r;
if (!env_name_is_valid(key))
return -EINVAL;
/* NULL removes assignment, "" creates an empty assignment. */
if (!value) {
strv_env_unset(*l, key);
return 0;
}
char *p = strjoin(key, "=", value);
if (!p)
return -ENOMEM;
r = strv_env_replace(l, p);
if (r < 0)
return r;
TAKE_PTR(p);
return r;
}
+1
View File
@@ -47,6 +47,7 @@ char **strv_env_unset(char **l, const char *p); /* In place ... */
char **strv_env_unset_many(char **l, ...) _sentinel_;
int strv_env_replace(char ***l, char *p); /* In place ... */
int strv_env_replace_strdup(char ***l, const char *assignment);
int strv_env_assign(char ***l, const char *key, const char *value);
char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) _pure_;
char *strv_env_get(char **x, const char *n) _pure_;