return r;
}
-char **strv_env_set(char **x, const char *p) {
- _cleanup_strv_free_ char **ret = NULL;
- size_t n, m;
- char **k;
-
- /* Overrides the env var setting of p, returns a new copy */
-
- n = strv_length(x);
- m = n + 2;
- if (m < n) /* overflow? */
- return NULL;
-
- ret = new(char*, m);
- if (!ret)
- return NULL;
-
- *ret = NULL;
- k = ret;
-
- if (env_append(ret, &k, x) < 0)
- return NULL;
-
- if (env_append(ret, &k, STRV_MAKE(p)) < 0)
- return NULL;
-
- return TAKE_PTR(ret);
-}
-
char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) {
char **i;
char **strv_env_merge(size_t n_lists, ...);
char **strv_env_delete(char **x, size_t n_lists, ...); /* New copy */
-char **strv_env_set(char **x, const char *p); /* New copy ... */
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 ... */
assert_se(strv_length(l) == 2);
}
-static void test_strv_env_set(void) {
- log_info("/* %s */", __func__);
-
- _cleanup_strv_free_ char **l = NULL, **r = NULL;
-
- l = strv_new("PIEP", "SCHLUMPF=SMURFF", "NANANANA=YES");
- assert_se(l);
-
- r = strv_env_set(l, "WALDO=WALDO");
- assert_se(r);
-
- assert_se(streq(r[0], "PIEP"));
- assert_se(streq(r[1], "SCHLUMPF=SMURFF"));
- assert_se(streq(r[2], "NANANANA=YES"));
- assert_se(streq(r[3], "WALDO=WALDO"));
- assert_se(strv_length(r) == 4);
-}
-
static void test_strv_env_merge(void) {
log_info("/* %s */", __func__);
test_strv_env_delete();
test_strv_env_get();
test_strv_env_unset();
- test_strv_env_set();
test_strv_env_merge();
test_env_strv_get_n();
test_replace_env(false);