From: Takashi Iwai Date: Mon, 3 Jan 2005 14:39:33 +0000 (+0000) Subject: Add default for refer function X-Git-Tag: v1.0.8~17 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=eb69df65b375e38b18d82447acccd08c2dbf4157;p=alsa-lib.git Add default for refer function "@func refer" accepts default configuration. If the refer to the given config fails, the default config is picked up. --- diff --git a/src/confmisc.c b/src/confmisc.c index 051b4758..a11326fe 100644 --- a/src/confmisc.c +++ b/src/confmisc.c @@ -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; }