mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
conf: improve config error handling
Make the config parser return the amount of parsed items. Fail to create a context when parsing the config fails. Log the number of items parsed from the config.
This commit is contained in:
parent
09cba1e4de
commit
577ad0c73a
2 changed files with 27 additions and 14 deletions
|
|
@ -281,6 +281,7 @@ static int parse_spa_libs(struct pw_context *context, char *str)
|
|||
{
|
||||
struct spa_json it[2];
|
||||
char key[512], value[512];
|
||||
int count = 0;
|
||||
|
||||
spa_json_init(&it[0], str, strlen(str));
|
||||
if (spa_json_enter_object(&it[0], &it[1]) < 0)
|
||||
|
|
@ -294,16 +295,17 @@ static int parse_spa_libs(struct pw_context *context, char *str)
|
|||
}
|
||||
else if (spa_json_get_string(&it[1], value, sizeof(value)-1) > 0) {
|
||||
pw_context_add_spa_lib(context, key, value);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return count;
|
||||
}
|
||||
|
||||
static int load_module(struct pw_context *context, const char *key, const char *args, const char *flags)
|
||||
{
|
||||
if (pw_context_load_module(context, key, args, NULL) == NULL) {
|
||||
if (errno == ENOENT && flags && strstr(flags, "ifexists") != NULL) {
|
||||
pw_log_debug(NAME" %p: skipping unavailable module %s",
|
||||
pw_log_info(NAME" %p: skipping unavailable module %s",
|
||||
context, key);
|
||||
} else if (flags == NULL || strstr(flags, "nofail") == NULL) {
|
||||
pw_log_error(NAME" %p: could not load mandatory module \"%s\": %m",
|
||||
|
|
@ -313,6 +315,8 @@ static int load_module(struct pw_context *context, const char *key, const char *
|
|||
pw_log_info(NAME" %p: could not load optional module \"%s\": %m",
|
||||
context, key);
|
||||
}
|
||||
} else {
|
||||
pw_log_info(NAME" %p: loaded module %s", context, key);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -329,7 +333,7 @@ static int parse_modules(struct pw_context *context, char *str)
|
|||
{
|
||||
struct spa_json it[3];
|
||||
char key[512];
|
||||
int res = 0;
|
||||
int res = 0, count = 0;
|
||||
|
||||
spa_json_init(&it[0], str, strlen(str));
|
||||
if (spa_json_enter_array(&it[0], &it[1]) < 0)
|
||||
|
|
@ -366,6 +370,8 @@ static int parse_modules(struct pw_context *context, char *str)
|
|||
|
||||
if (res < 0)
|
||||
break;
|
||||
|
||||
res = ++count;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
@ -409,7 +415,7 @@ static int parse_objects(struct pw_context *context, char *str)
|
|||
{
|
||||
struct spa_json it[3];
|
||||
char key[512];
|
||||
int res = 0;
|
||||
int res = 0, count = 0;
|
||||
|
||||
spa_json_init(&it[0], str, strlen(str));
|
||||
if (spa_json_enter_array(&it[0], &it[1]) < 0)
|
||||
|
|
@ -447,6 +453,7 @@ static int parse_objects(struct pw_context *context, char *str)
|
|||
|
||||
if (res < 0)
|
||||
break;
|
||||
res = ++count;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
@ -493,7 +500,7 @@ static int parse_exec(struct pw_context *context, char *str)
|
|||
{
|
||||
struct spa_json it[3];
|
||||
char key[512];
|
||||
int res = 0;
|
||||
int res = 0, count = 0;
|
||||
|
||||
spa_json_init(&it[0], str, strlen(str));
|
||||
if (spa_json_enter_array(&it[0], &it[1]) < 0)
|
||||
|
|
@ -522,6 +529,8 @@ static int parse_exec(struct pw_context *context, char *str)
|
|||
|
||||
if (res < 0)
|
||||
break;
|
||||
|
||||
res = ++count;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
@ -535,7 +544,7 @@ int pw_context_parse_conf_section(struct pw_context *context,
|
|||
int res;
|
||||
|
||||
if ((str = pw_properties_get(conf, section)) == NULL)
|
||||
return -ENOENT;
|
||||
return 0;
|
||||
|
||||
s = strdup(str);
|
||||
|
||||
|
|
|
|||
|
|
@ -361,14 +361,18 @@ struct pw_context *pw_context_new(struct pw_loop *main_loop,
|
|||
|
||||
this->sc_pagesize = sysconf(_SC_PAGESIZE);
|
||||
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.spa-libs")) >= 0)
|
||||
pw_log_info(NAME" %p: parsed context.spa-libs section", this);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.modules")) >= 0)
|
||||
pw_log_info(NAME" %p: parsed context.modules section", this);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.objects")) >= 0)
|
||||
pw_log_info(NAME" %p: parsed context.objects section", this);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.exec")) >= 0)
|
||||
pw_log_info(NAME" %p: parsed context.exec section", this);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.spa-libs")) < 0)
|
||||
goto error_free_loop;
|
||||
pw_log_info(NAME" %p: parsed %d context.spa-libs items", this, res);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.modules")) < 0)
|
||||
goto error_free_loop;
|
||||
pw_log_info(NAME" %p: parsed %d context.modules items", this, res);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.objects")) < 0)
|
||||
goto error_free_loop;
|
||||
pw_log_info(NAME" %p: parsed %d context.objects items", this, res);
|
||||
if ((res = pw_context_parse_conf_section(this, conf, "context.exec")) < 0)
|
||||
goto error_free_loop;
|
||||
pw_log_info(NAME" %p: parsed %d context.exec items", this, res);
|
||||
|
||||
pw_log_debug(NAME" %p: created", this);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue