tmpl

Simple key-value templator
git clone https://git.sinitax.com/sinitax/tmpl
Log | Files | Refs | README | LICENSE | sfeed.txt

commit b63e623fea8ddb2eb25c031b6811b7ea93cbee0a
parent 940493f184fe45034142919d525c25cf9e515874
Author: Louis Burda <quent.burda@gmail.com>
Date:   Wed, 31 May 2023 13:29:55 +0200

Fallback to environment variables if not defined

Diffstat:
Mtmpl.c | 20++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/tmpl.c b/tmpl.c @@ -24,17 +24,17 @@ struct var { struct var *vars, **vars_end; -struct var * +const char * getvar(const char *name) { struct var *var; for (var = vars; var; var = var->next) { if (!strcmp(var->name, name)) - return var; + return var->value; } - return NULL; + return getenv(name); } void @@ -63,7 +63,7 @@ template(char *line) static struct block stack[32] = { 0 }; static int stack_top = 0; static size_t lineno = 0; - struct var *var; + const char *value; char *open, *close; char *sep; @@ -83,10 +83,10 @@ template(char *line) stack[stack_top].active = 0; stack[stack_top].type = IFEQ; if (!stack_top || stack[stack_top-1].active) { - var = getvar(line + 6); + value = getvar(line + 6); sep = strchr(line + 6, ' '); if (!sep) err(1, "invalid #ifeq: %lu:%s", lineno, line); - if (!strcmp(var->value, sep + 1)) { + if (!strcmp(value, sep + 1)) { stack[stack_top].active = 1; } } @@ -115,8 +115,8 @@ template(char *line) sep = strchr(line + 9, ' '); if (!sep) err(1, "invalid #default: %lu:%s", lineno, line); *sep = '\0'; - var = getvar(line + 9); - if (!var) { + value = getvar(line + 9); + if (!value) { *sep = '='; assign(line + 9); } @@ -145,8 +145,8 @@ template(char *line) fputs(line, stdout); *close = '\0'; - var = getvar(open + 2); - if (var) fputs(var->value, stdout); + value = getvar(open + 2); + if (value) fputs(value, stdout); line = close + 1; }