]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: keep original device name for logs
authorJaroslav Kysela <perex@perex.cz>
Tue, 18 Nov 2025 13:55:25 +0000 (14:55 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 1 Dec 2025 13:28:52 +0000 (14:28 +0100)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/main.c
src/ucm/parser.c
src/ucm/ucm_local.h
src/ucm/utils.c

index fbe71f3e7e09e64a06656186f7053fb710a41a51..9a5dcfa4f47e3dd49d13704513dedf2e31388dc9 100644 (file)
@@ -953,7 +953,7 @@ static int execute_component_seq(snd_use_case_mgr_t *uc_mgr,
        int err;
 
        snd_trace(UCM, "execute component sequence '%s': %s", cmpt_seq->device ?
-                       cmpt_seq->device->name : NULL, uc_mgr_enable_str(cmpt_seq->enable));
+                       cmpt_seq->device->orig_name : NULL, uc_mgr_enable_str(cmpt_seq->enable));
 
        /* enter component domain and store cdev for the component */
        uc_mgr->in_component_domain = 1;
index 0cb2f76e30d784b0fcfbd4732d7dda4c6af4455c..1de09da0a1943104e7e63a10573e506e31f81608 100644 (file)
@@ -1608,6 +1608,9 @@ static int parse_device(snd_use_case_mgr_t *uc_mgr,
        INIT_LIST_HEAD(&device->value_list);
        list_add_tail(&device->list, &verb->device_list);
        device->name = name;
+       device->orig_name = strdup(name);
+       if (device->orig_name == NULL)
+               return -ENOMEM;
 
        /* in-place evaluation */
        err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
@@ -1845,7 +1848,7 @@ static int verb_dev_list_add(struct use_case_verb *verb,
                        if (list_empty(&device->dev_list.list)) {
                                device->dev_list.type = dst_type;
                        } else {
-                               snd_error(UCM, "incompatible device list type ('%s', '%s')", device->name, src);
+                               snd_error(UCM, "incompatible device list type ('%s', '%s')", device->orig_name, src);
                                return -EINVAL;
                        }
                }
@@ -1984,7 +1987,7 @@ static int verb_normalize_device_names(snd_use_case_mgr_t *uc_mgr, struct use_ca
                                index++;
                        } while (index < 100); /* Safety limit */
                        if (index >= 100) {
-                               snd_error(UCM, "too many device name conflicts for '%s'", norm_name);
+                               snd_error(UCM, "too many device name conflicts for '%s'", orig_name);
                                err = -EINVAL;
                                goto __error;
                        }
@@ -1993,7 +1996,7 @@ static int verb_normalize_device_names(snd_use_case_mgr_t *uc_mgr, struct use_ca
 __no_colon:
                        err = parse_device_index(&norm_name, &index);
                        if (err < 0) {
-                               snd_error(UCM, "cannot parse device name '%s'", device->name);
+                               snd_error(UCM, "cannot parse device name '%s'", orig_name);
                                goto __error;
                        }
 
index e4fddb40dce3165b86115da7dcd5dfab13db5ed1..e09e6120c7dd009d5aaf1f4adf6171a7dd57c064 100644 (file)
@@ -165,6 +165,7 @@ struct use_case_device {
        struct list_head active_list;
 
        char *name;
+       char *orig_name;
        char *comment;
 
        /* device enable and disable sequences */
index 8b591ceee59a3f078510ba1ae10f7062d781f918..f4a1f5eb1df77dcab1931febcd8fa8d0524fdd47 100644 (file)
@@ -597,6 +597,7 @@ void uc_mgr_free_modifier(struct list_head *base)
 void uc_mgr_free_device(struct use_case_device *dev)
 {
        free(dev->name);
+       free(dev->orig_name);
        free(dev->comment);
        uc_mgr_free_sequence(&dev->enable_list);
        uc_mgr_free_sequence(&dev->disable_list);