due to undefined reference to 'environ' error, ucm_exec.c uses workaround.
Fixes: https://github.com/alsa-project/alsa-lib/pull/250
Signed-off-by: SASANO Takayoshi <uaa@uaa.org.uk>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
On 32-bit platforms when not using the large-file-support ABI,
struct stat64 contains ino64_t which is 64-bit, while ino_t is only
32-bit.
snd_config_update_r() checks whether a file has been replaced by saving
the ino member of a struct stat64 and comparing it with a previously-saved
inode number. On 32-bit platforms, assigning the 64-bit member of struct
stat64 to a 32-bit member of struct finfo will truncate it modulo 1<<32,
which could conceivably result in libasound not reloading configuration
when it should (although the inode number space is large enough to make
this failure mode highly unlikely).
Fixes: https://github.com/alsa-project/alsa-lib/pull/231
Signed-off-by: Simon McVittie <smcv@collabora.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Although at first glance it doesn't seem useful to support config
files larger than 2GB, LFS also influences inode size. Without this,
32-bit libasound may be unable to read config files on filesystems
with 64-bit inodes, such as Btrfs or NFS.
Fixes: https://github.com/alsa-project/alsa-lib/pull/223
Signed-off-by: Sebastian Krzyszkowiak <dos@dosowisko.net>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Only one library should define the safe_strto function. Export it
correctly and add _snd_ prefix to avoid possible clashes with the other
application code.
Fixes: 47252054 ("src/topology/parser.c: drop duplicate safe_strtol_base")
Fixes: https://github.com/alsa-project/alsa-lib/pull/208
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
It is useful to use the math expressions for the values in configuration.
This patch adds a simple expression evaluation routines (integer only).
The syntax is simplified unix shell (bash) style.
Examples:
$[1 + 1]
$[$[2 + 2] / $var1]
$[0xa0 | 0x05]
As a bonus, the variable substitutions were more abstracted.
The function snd_config_expand_custom() was introduced to be used
for example in the topology pre-precessor.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The 63f7745b commit is loading the driver specific configuration
multiple times which ends with the array merges (see the bug).
Introduce the loaded compound which traces the already loaded
driver configurations and skip the multiple load requests.
Fixes: https://github.com/alsa-project/alsa-lib/issues/143
Fixes: 63f7745b ("conf: extend load_for_all_cards hook (id/value table)")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The leading '+' in the keys specification add the key prefix
(sub-tree root identification) to the saved configuration.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The /var/lib/alsa/card<CARDNO>.conf.d configurations are loaded
to the cards.<CARDNO> tree only (overwrite mode).
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
There's an issue with the current code: It says append for compounds,
but it does overwrite without the proper members delete from
the overwritten (destination) compound node.
Don't change the behaviour, just fix the comment and memory leak.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
For the per-card configuration, add possibility to define
card number -> card driver link table.
Example:
cards.0 'cards.USB-Audio'
cards.1 'cards.USB-Audio'
cards.2 'cards.HDA-Intel'
cards.3 'cards.USB-Audio'
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The previous fix for memory leaks introduced a few regression.
The major one is the assert hit in the error path reaching with NULL
or uninitialized sub object. Also, in other code paths, it's possible
that an already released sub object gets freed again.
Fix those bugs by initializing the sub object properly and add a NULL
check before calling snd_config_delete().
Fixes: ad5f255b47 ("conf: fix memory leak on the error path in parse_args()")
Reported-and-tested-by: Mark Hills <mark@xwax.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The internal represention of an array is:
{
0 value1
1 value2
2 value2
...
}
which is identicatal to shorter:
[
value1
value2
value3
]
Always print the short format. It's more optimized and readable.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
While I was trying to work on XDG_CONFIG_HOME support, I though
that it may be nice to support OR for the file specification.
But then I found that we can already do this via the refer hook.
I commit this change anyway, because the snd_config_hook_load()
function is more clean now.
The OR is implemented with three | characters like:
"~/.asoundrc|||~/.asoundrc2|||/opt/some/other/path"
(first file found wins)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
I omitted to use parent paths and the proper error code
when no paths are defined.
Fixes: f600310954 ("conf: improve the include paths code")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>