From 68f44f7a973de563ae08996c84c98548ac32e91a Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 30 Oct 2023 13:24:57 +0100 Subject: [PATCH] Fix #377: expand service env:file variables This change allows us to support constructs like this: RUNDIR=/var/run/somesvc DAEMON_ARGS=--workdir $RUNDIR --other-args... Signed-off-by: Joachim Wiberg --- src/service.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/service.c b/src/service.c index b455c5a6..4a993f5c 100644 --- a/src/service.c +++ b/src/service.c @@ -413,6 +413,7 @@ static void source_env(svc_t *svc) len = sizeof(buf); while (fgets(line, len, fp)) { char *key = chomp(line); + wordexp_t we = { 0 }; char *value, *end; /* skip any leading whitespace */ @@ -466,7 +467,19 @@ static void source_env(svc_t *svc) *end-- = 0; } - setenv(key, value, 1); + switch (wordexp(value, &we, 0)) { + case 0: + setenv(key, we.we_wordv[0], 1); + wordfree(&we); + break; + + case WRDE_NOSPACE: + wordfree(&we); + /* fallthrough */ + default: + setenv(key, value, 1); + break; + } } fclose(fp);