mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-01 22:58:49 -04:00
ucm: Fix fallback to card_name (shortname) config for ucm1 profiles
uc_mgr_import_master_config() first calls load_master_config()
with the card's longname and if that fails then calls it again with the
card_name.
Before this commit configuration_filename() would force conf_format to 2
when it the access(fn, R_OK) test failed for the ucm1 longname
master-config filename.
This would cause configuration_filename() to blindly return a filename
under <prefix>/ucm2 without seeing if that is actually there and without
trying to fallback to the old profiles under <prefix>/ucm, breaking the
loading of UCM1 profiles by card_name.
This commit fixes this by modifying configuration_filename() to not set
conf_format when checking for the UCM1 config filename fails.
Instead, to make sure that any errors about opening the file still report
the new path, configuration_filename() now resets the filename to the UCM2
path if the access() check has failed for both the UCM2 and UCM1 paths,
without touching conf_format.
Fixes: aba2260ae7 ("ucm: switch to ucm2 directory and v2 format, keep backward compatibility")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
86c449d231
commit
77119d83a1
1 changed files with 5 additions and 6 deletions
|
|
@ -101,7 +101,6 @@ static void configuration_filename(snd_use_case_mgr_t *uc_mgr,
|
|||
}
|
||||
|
||||
if (uc_mgr->conf_format > 0) {
|
||||
__format:
|
||||
configuration_filename2(fn, fn_len, uc_mgr->conf_format,
|
||||
dir, file, suffix);
|
||||
return;
|
||||
|
|
@ -112,11 +111,11 @@ __format:
|
|||
return;
|
||||
|
||||
configuration_filename2(fn, fn_len, 0, dir, file, suffix);
|
||||
if (access(fn, R_OK)) {
|
||||
/* make sure that the error message refers to the new path */
|
||||
uc_mgr->conf_format = 2;
|
||||
goto __format;
|
||||
}
|
||||
if (access(fn, R_OK) == 0)
|
||||
return;
|
||||
|
||||
/* make sure that the error message refers to the new path */
|
||||
configuration_filename2(fn, fn_len, 2, dir, file, suffix);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue