]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: Handle 'Error' keyword in the master file
authorJaroslav Kysela <perex@perex.cz>
Tue, 6 Oct 2020 08:23:25 +0000 (10:23 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 6 Oct 2020 08:23:25 +0000 (10:23 +0200)
With the conditional blocks, it may be useful to terminate
the hardware detection from the configuration. Introduce
'Error' keyword for the master UCM configuration file.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/parser.c

index d034b8598a8513ab5918c66db5cf317091170273..e57e208a838609177785c1f70a52641fc8a836e4 100644 (file)
@@ -244,6 +244,24 @@ int parse_get_safe_name(snd_use_case_mgr_t *uc_mgr, snd_config_t *n,
        return 0;
 }
 
+/*
+ * Handle 'Error' configuration node.
+ */
+static int error_node(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
+{
+       int err;
+       char *s;
+
+       err = parse_string_substitute3(uc_mgr, cfg, &s);
+       if (err < 0) {
+               uc_error("error: failed to get Error string");
+               return err;
+       }
+       uc_error("%s", s);
+       free(s);
+       return -ENXIO;
+}
+
 /*
  * Evaluate variable regex definitions (in-place delete)
  */
@@ -1899,6 +1917,10 @@ static int parse_master_file(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
                        continue;
                }
 
+               /* error */
+               if (strcmp(id, "Error") == 0)
+                       return error_node(uc_mgr, n);
+
                uc_error("uknown master file field %s", id);
        }
        return 0;