}
char **replace_env_argv(char **argv, char **env) {
- char **ret;
+ _cleanup_strv_free_ char **ret = NULL;
size_t k = 0, l = 0;
l = strv_length(argv);
r = strv_split_full(&m, e, WHITESPACE, EXTRACT_RELAX|EXTRACT_UNQUOTE);
if (r < 0) {
ret[k] = NULL;
- strv_free(ret);
return NULL;
}
} else
w = reallocarray(ret, l + 1, sizeof(char *));
if (!w) {
ret[k] = NULL;
- strv_free(ret);
strv_free(m);
return NULL;
}
/* If ${FOO} appears as part of a word, replace it by the variable as-is */
ret[k] = replace_env(*i, env, 0);
- if (!ret[k]) {
- strv_free(ret);
+ if (!ret[k])
return NULL;
- }
k++;
}
ret[k] = NULL;
- return ret;
+ return TAKE_PTR(ret);
}
int getenv_bool(const char *p) {