From 99499a6ebc3960e695acb6a4a6fc5d067d596d1a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 24 Apr 2024 15:08:48 +0200 Subject: [PATCH] ucm: do argument value substitution for Macros Link: https://github.com/alsa-project/alsa-ucm-conf/pull/411 Signed-off-by: Jaroslav Kysela --- src/ucm/parser.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ucm/parser.c b/src/ucm/parser.c index 98acd97e..7da8060a 100644 --- a/src/ucm/parser.c +++ b/src/ucm/parser.c @@ -415,7 +415,7 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr, snd_config_iterator_t i, next; snd_config_t *m, *mc, *a, *n; const char *mid, *id; - char name[128], *var; + char name[128], *var, *var2; const char *s; int err; @@ -449,9 +449,13 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr, err = snd_config_get_ascii(n, &var); if (err < 0) goto __err_path; - snprintf(name, sizeof(name), "__%s", id); - err = uc_mgr_set_variable(uc_mgr, name, var); + err = uc_mgr_get_substituted_value(uc_mgr, &var2, var); free(var); + if (err >= 0) { + snprintf(name, sizeof(name), "__%s", id); + err = uc_mgr_set_variable(uc_mgr, name, var2); + free(var2); + } if (err < 0) goto __err_path; } -- 2.47.1