]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: do argument value substitution for Macros
authorJaroslav Kysela <perex@perex.cz>
Wed, 24 Apr 2024 13:08:48 +0000 (15:08 +0200)
committerJaroslav Kysela <perex@perex.cz>
Wed, 24 Apr 2024 13:18:36 +0000 (15:18 +0200)
Link: https://github.com/alsa-project/alsa-ucm-conf/pull/411
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/parser.c

index 98acd97e057491e53cbfd4f73d484d2320027fd4..7da8060a82a681efca003890677b913b965e1f88 100644 (file)
@@ -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;
        }