mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
spa: add spa_json_begin
That combines spa_json_init() and spa_json_next, a common thing to do.
This commit is contained in:
parent
08057e0328
commit
feccb882b6
7 changed files with 15 additions and 18 deletions
|
|
@ -1122,8 +1122,7 @@ static int parse_value(const char *str, struct param_info *info)
|
||||||
const char *val;
|
const char *val;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
spa_json_init(&it[0], str, strlen(str));
|
if ((len = spa_json_begin(&it[0], str, strlen(str), &val)) <= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) <= 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (spa_json_is_array(val, len)) {
|
if (spa_json_is_array(val, len)) {
|
||||||
|
|
|
||||||
|
|
@ -139,8 +139,7 @@ static inline int spa_json_to_pod(struct spa_pod_builder *b, uint32_t flags,
|
||||||
struct spa_json iter;
|
struct spa_json iter;
|
||||||
const char *val;
|
const char *val;
|
||||||
|
|
||||||
spa_json_init(&iter, value, len);
|
if ((len = spa_json_begin(&iter, value, len, &val)) <= 0)
|
||||||
if ((len = spa_json_next(&iter, &val)) <= 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
return spa_json_to_pod_part(b, flags, info->type, info, &iter, val, len);
|
return spa_json_to_pod_part(b, flags, info->type, info, &iter, val, len);
|
||||||
|
|
|
||||||
|
|
@ -356,6 +356,12 @@ static inline bool spa_json_get_error(struct spa_json *iter, const char *start,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int spa_json_begin(struct spa_json * iter, const char *data, size_t size, const char **val)
|
||||||
|
{
|
||||||
|
spa_json_init(iter, data, size);
|
||||||
|
return spa_json_next(iter, val);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int spa_json_enter_container(struct spa_json *iter, struct spa_json *sub, char type)
|
static inline int spa_json_enter_container(struct spa_json *iter, struct spa_json *sub, char type)
|
||||||
{
|
{
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
|
||||||
|
|
@ -123,8 +123,7 @@ static int process_json(const char *filename, void *buf, size_t size)
|
||||||
struct spa_json it;
|
struct spa_json it;
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
spa_json_init(&it, buf, size);
|
if ((len = spa_json_begin(&it, buf, size, &value)) <= 0) {
|
||||||
if ((len = spa_json_next(&it, &value)) <= 0) {
|
|
||||||
fprintf(stderr, "not a valid file '%s': %s\n", filename, spa_strerror(len));
|
fprintf(stderr, "not a valid file '%s': %s\n", filename, spa_strerror(len));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -806,8 +806,7 @@ static uint32_t format_info_get_format(const struct format_info *info)
|
||||||
if ((str = pw_properties_get(info->props, "format.sample_format")) == NULL)
|
if ((str = pw_properties_get(info->props, "format.sample_format")) == NULL)
|
||||||
return SPA_AUDIO_FORMAT_UNKNOWN;
|
return SPA_AUDIO_FORMAT_UNKNOWN;
|
||||||
|
|
||||||
spa_json_init(&it[0], str, strlen(str));
|
if ((len = spa_json_begin(&it[0], str, strlen(str), &val)) <= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) <= 0)
|
|
||||||
return SPA_AUDIO_FORMAT_UNKNOWN;
|
return SPA_AUDIO_FORMAT_UNKNOWN;
|
||||||
|
|
||||||
if (spa_json_is_string(val, len))
|
if (spa_json_is_string(val, len))
|
||||||
|
|
@ -825,8 +824,7 @@ static int format_info_get_rate(const struct format_info *info)
|
||||||
if ((str = pw_properties_get(info->props, "format.rate")) == NULL)
|
if ((str = pw_properties_get(info->props, "format.rate")) == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
spa_json_init(&it[0], str, strlen(str));
|
if ((len = spa_json_begin(&it[0], str, strlen(str), &val)) <= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) <= 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (spa_json_is_int(val, len)) {
|
if (spa_json_is_int(val, len)) {
|
||||||
if (spa_json_parse_int(val, len, &v) <= 0)
|
if (spa_json_parse_int(val, len, &v) <= 0)
|
||||||
|
|
@ -862,8 +860,7 @@ int format_info_to_spec(const struct format_info *info, struct sample_spec *ss,
|
||||||
if ((str = pw_properties_get(info->props, "format.channels")) == NULL)
|
if ((str = pw_properties_get(info->props, "format.channels")) == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
spa_json_init(&it[0], str, strlen(str));
|
if ((len = spa_json_begin(&it[0], str, strlen(str), &val)) <= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) <= 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (spa_json_is_float(val, len)) {
|
if (spa_json_is_float(val, len)) {
|
||||||
if (spa_json_parse_float(val, len, &f) <= 0)
|
if (spa_json_parse_float(val, len, &f) <= 0)
|
||||||
|
|
@ -877,8 +874,7 @@ int format_info_to_spec(const struct format_info *info, struct sample_spec *ss,
|
||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
|
|
||||||
if ((str = pw_properties_get(info->props, "format.channel_map")) != NULL) {
|
if ((str = pw_properties_get(info->props, "format.channel_map")) != NULL) {
|
||||||
spa_json_init(&it[0], str, strlen(str));
|
if ((len = spa_json_begin(&it[0], str, strlen(str), &val)) <= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) <= 0)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (!spa_json_is_string(val, len))
|
if (!spa_json_is_string(val, len))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,7 @@ static int do_merge_section(void *data, const char *location, const char *sectio
|
||||||
int l;
|
int l;
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
spa_json_init(&it[0], str, len);
|
if ((l = spa_json_begin(&it[0], str, len, &value)) <= 0)
|
||||||
if ((l = spa_json_next(&it[0], &value)) <= 0)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (spa_json_is_array(value, l)) {
|
if (spa_json_is_array(value, l)) {
|
||||||
|
|
|
||||||
|
|
@ -1144,8 +1144,7 @@ static void json_dump(struct data *d, const char *key, const char *value)
|
||||||
struct spa_json it[1];
|
struct spa_json it[1];
|
||||||
int len;
|
int len;
|
||||||
const char *val;
|
const char *val;
|
||||||
spa_json_init(&it[0], value, strlen(value));
|
if ((len = spa_json_begin(&it[0], value, strlen(value), &val)) >= 0)
|
||||||
if ((len = spa_json_next(&it[0], &val)) >= 0)
|
|
||||||
json_dump_val(d, key, &it[0], val, len);
|
json_dump_val(d, key, &it[0], val, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue