mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
virQEMUQAPISchemaTraverseEnum: Use the modern 'members' array
Starting from QEMU-6.2 enum members are reported as an array of objects under new name "values" so that extra data can be reported for each member. Modify the code so that we prefer 'members' and skip 'values' completely if we've used 'members'. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
ce07b86008
commit
2827c411c2
@ -243,6 +243,7 @@ virQEMUQAPISchemaTraverseEnum(virJSONValue *cur,
|
||||
{
|
||||
const char *query = virQEMUQAPISchemaTraverseContextNextQuery(ctxt);
|
||||
virJSONValue *values;
|
||||
virJSONValue *members;
|
||||
size_t i;
|
||||
|
||||
if (query[0] != '^')
|
||||
@ -253,6 +254,22 @@ virQEMUQAPISchemaTraverseEnum(virJSONValue *cur,
|
||||
|
||||
query++;
|
||||
|
||||
/* qemu-6.2 added a "members" array superseding "values" */
|
||||
if ((members = virJSONValueObjectGetArray(cur, "members"))) {
|
||||
for (i = 0; i < virJSONValueArraySize(members); i++) {
|
||||
virJSONValue *member = virJSONValueArrayGet(members, i);
|
||||
const char *name;
|
||||
|
||||
if (!member || !(name = virJSONValueObjectGetString(member, "name")))
|
||||
return -2;
|
||||
|
||||
if (STREQ(name, query))
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(values = virJSONValueObjectGetArray(cur, "values")))
|
||||
return -2;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user