From eb69df65b375e38b18d82447acccd08c2dbf4157 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 3 Jan 2005 14:39:33 +0000 Subject: [PATCH] Add default for refer function "@func refer" accepts default configuration. If the refer to the given config fails, the default config is picked up. --- src/confmisc.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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; } -- 2.47.1