]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Add default for refer function
authorTakashi Iwai <tiwai@suse.de>
Mon, 3 Jan 2005 14:39:33 +0000 (14:39 +0000)
committerTakashi Iwai <tiwai@suse.de>
Mon, 3 Jan 2005 14:39:33 +0000 (14:39 +0000)
"@func refer" accepts default configuration.  If the refer to the
given config fails, the default config is picked up.

src/confmisc.c

index 051b475894dd3447a9a30431055b9dccf38bf642..a11326fea3de412d1e47197a83a3da2e7c75c0a4 100644 (file)
@@ -974,8 +974,22 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src,
                err = snd_config_get_id(src, &id);
                if (err >= 0)
                        err = snd_config_set_id(*dst, id);
-       } else
-               SNDERR("Unable to find definition '%s'", name);
+       } else {
+               err = snd_config_search(src, "default", &n);
+               if (err < 0)
+                       SNDERR("Unable to find definition '%s'", name);
+               else {
+                       const char *id;
+                       err = snd_config_evaluate(n, root, private_data, NULL);
+                       if (err < 0)
+                               return err;
+                       if ((err = snd_config_copy(dst, n)) >= 0) {
+                               if ((err = snd_config_get_id(src, &id)) < 0 ||
+                                   (err = snd_config_set_id(*dst, id)) < 0)
+                                       snd_config_delete(*dst);
+                       }
+               }
+       }
  _end:
        return err;
 }