conf: fix the include paths support

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>
This commit is contained in:
Jaroslav Kysela 2019-11-18 19:01:45 +01:00
parent 6a76c01a01
commit 39fda8a69a

View file

@ -610,12 +610,12 @@ static char *_snd_config_path(const char *name)
* These directories should be subdirectories of /usr/share/alsa. * These directories should be subdirectories of /usr/share/alsa.
*/ */
static int input_stdio_open(snd_input_t **inputp, const char *file, static int input_stdio_open(snd_input_t **inputp, const char *file,
struct list_head *include_paths) struct filedesc *current)
{ {
struct list_head *pos; struct list_head *pos;
struct include_path *path; struct include_path *path;
char full_path[PATH_MAX]; char full_path[PATH_MAX];
int err = 0; int err;
if (file[0] == '/') if (file[0] == '/')
return snd_input_stdio_open(inputp, file, "r"); return snd_input_stdio_open(inputp, file, "r");
@ -623,15 +623,19 @@ static int input_stdio_open(snd_input_t **inputp, const char *file,
/* search file in user specified include paths. These directories /* search file in user specified include paths. These directories
* are subdirectories of /usr/share/alsa. * are subdirectories of /usr/share/alsa.
*/ */
list_for_each(pos, include_paths) { err = -ENOENT;
path = list_entry(pos, struct include_path, list); while (current) {
if (!path->dir) list_for_each(pos, &current->include_paths) {
continue; path = list_entry(pos, struct include_path, list);
if (!path->dir)
continue;
snprintf(full_path, PATH_MAX, "%s/%s", path->dir, file); snprintf(full_path, PATH_MAX, "%s/%s", path->dir, file);
err = snd_input_stdio_open(inputp, full_path, "r"); err = snd_input_stdio_open(inputp, full_path, "r");
if (err == 0) if (err == 0)
return 0; return 0;
}
current = current->next;
} }
return err; return err;
@ -804,8 +808,7 @@ static int get_char_skip_comments(input_t *input)
str = tmp; str = tmp;
err = snd_input_stdio_open(&in, str, "r"); err = snd_input_stdio_open(&in, str, "r");
} else { /* absolute or relative file path */ } else { /* absolute or relative file path */
err = input_stdio_open(&in, str, err = input_stdio_open(&in, str, input->current);
&input->current->include_paths);
} }
if (err < 0) { if (err < 0) {