mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-02 01:40:13 -05:00
slave: unsetenv() env vars that have been set to the empty string
That is, users can now *clear* environment variables by doing: [environment] VAR=”” Note that the quotes are required. Closes #1225
This commit is contained in:
parent
646314469a
commit
ccfb953bb0
3 changed files with 24 additions and 13 deletions
23
config.c
23
config.c
|
|
@ -2295,21 +2295,22 @@ parse_section_environment(struct context *ctx)
|
|||
{
|
||||
struct config *conf = ctx->conf;
|
||||
const char *key = ctx->key;
|
||||
const char *value = ctx->value;
|
||||
|
||||
/* Check for pre-existing env variable */
|
||||
tll_foreach(conf->env_vars, it) {
|
||||
if (strcmp(it->item.name, key) == 0) {
|
||||
free(it->item.value);
|
||||
it->item.value = xstrdup(value);
|
||||
return true;
|
||||
}
|
||||
if (strcmp(it->item.name, key) == 0)
|
||||
return value_to_str(ctx, &it->item.value);
|
||||
}
|
||||
|
||||
struct env_var var = {
|
||||
.name = xstrdup(key),
|
||||
.value = xstrdup(value),
|
||||
};
|
||||
tll_push_back(conf->env_vars, var);
|
||||
/*
|
||||
* No pre-existing variable - allocate a new one
|
||||
*/
|
||||
|
||||
char *value = NULL;
|
||||
if (!value_to_str(ctx, &value))
|
||||
return false;
|
||||
|
||||
tll_push_back(conf->env_vars, ((struct env_var){xstrdup(key), value}));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue