mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-04 13:30:08 -05:00
Search functions supports NULL result (check the presence)
This commit is contained in:
parent
45cfa1405f
commit
355bb478e9
1 changed files with 13 additions and 9 deletions
20
src/conf.c
20
src/conf.c
|
|
@ -1417,7 +1417,7 @@ int snd_config_searchv(snd_config_t *config,
|
||||||
{
|
{
|
||||||
snd_config_t *n;
|
snd_config_t *n;
|
||||||
va_list arg;
|
va_list arg;
|
||||||
assert(config && result);
|
assert(config);
|
||||||
va_start(arg, result);
|
va_start(arg, result);
|
||||||
while (1) {
|
while (1) {
|
||||||
const char *k = va_arg(arg, const char *);
|
const char *k = va_arg(arg, const char *);
|
||||||
|
|
@ -1430,6 +1430,7 @@ int snd_config_searchv(snd_config_t *config,
|
||||||
config = n;
|
config = n;
|
||||||
}
|
}
|
||||||
va_end(arg);
|
va_end(arg);
|
||||||
|
if (result)
|
||||||
*result = n;
|
*result = n;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1449,23 +1450,26 @@ int snd_config_search_alias(snd_config_t *config,
|
||||||
const char *base, const char *key,
|
const char *base, const char *key,
|
||||||
snd_config_t **result)
|
snd_config_t **result)
|
||||||
{
|
{
|
||||||
|
snd_config_t *res;
|
||||||
int err;
|
int err;
|
||||||
assert(config && key && result);
|
assert(config && key);
|
||||||
if (base) {
|
if (base) {
|
||||||
err = snd_config_searchv(config, result, base, key, 0);
|
err = snd_config_searchv(config, &res, base, key, 0);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
while (snd_config_get_string(*result, &key) >= 0 &&
|
while (snd_config_get_string(res, &key) >= 0 &&
|
||||||
snd_config_searchv(config, result, base, key, 0) >= 0)
|
snd_config_searchv(config, &res, base, key, 0) >= 0)
|
||||||
;
|
;
|
||||||
} else {
|
} else {
|
||||||
err = snd_config_search(config, key, result);
|
err = snd_config_search(config, key, &res);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
while (snd_config_get_string(*result, &key) >= 0 &&
|
while (snd_config_get_string(res, &key) >= 0 &&
|
||||||
snd_config_search(config, key, result) >= 0)
|
snd_config_search(config, key, &res) >= 0)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
if (result)
|
||||||
|
*result = res;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue