[libvirt] [PATCH 6/9] util: json: Improve handling and docs for adding JSON objects
John Ferlan
jferlan at redhat.com
Tue Oct 14 10:54:37 UTC 2014
On 10/14/2014 03:29 AM, Peter Krempa wrote:
> The JSON structure constructor has an option to add JSON arrays to the
> constructed object. The description is inaccurate as it can add any json
> object even a dict. Change the docs to cover this option and add
> possibility to specify NULL object to be added. These will be skipped as
> we have with other specifiers.
> ---
> src/util/virjson.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
Seems reasonable and I assume in line with other uses although I could
see cause for making two patches...
#1 to handle the error of 'a' nothing having 'args'
and
#2 to allow 'A' to avoid that check.
Your call if you want to make that split and how it could be used to
resolve some unknown bug...
> diff --git a/src/util/virjson.c b/src/util/virjson.c
> index 0dfeaed..f490f2c 100644
> --- a/src/util/virjson.c
> +++ b/src/util/virjson.c
> @@ -97,8 +97,9 @@ struct _virJSONParser {
> *
> * d: double precision floating point number
> * n: json null value
> - * a: json array
> *
> + * a: json object, must be non-NULL
> + * A: json object, omitted if NULL
NIT: there used to be an empty line between "a" and the following
comment and that's now removed... Consider adding it back in. I like
the spacing between 'n' and 'a'...
ACK,
John
> * The value corresponds to the selected type.
> *
> * Returns -1 on error. 1 on success, if at least one key:pair was valid 0
> @@ -229,8 +230,20 @@ virJSONValueObjectCreateVArgs(virJSONValuePtr *obj, va_list args)
> rc = virJSONValueObjectAppendNull(jargs, key);
> } break;
>
> + case 'A':
> case 'a': {
> virJSONValuePtr val = va_arg(args, virJSONValuePtr);
> +
> + if (!val) {
> + if (type == 'A')
> + continue;
> +
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("argument key '%s' must not have null value"),
> + key);
> + goto cleanup;
> + }
> +
> rc = virJSONValueObjectAppend(jargs, key, val);
> } break;
>
More information about the libvir-list
mailing list