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; > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list