From nobody Tue Apr 23 10:10:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1534324740377402.7535160842814; Wed, 15 Aug 2018 02:19:00 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A309E356C9; Wed, 15 Aug 2018 09:18:57 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6E7CB60BE7; Wed, 15 Aug 2018 09:18:56 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C7B564A460; Wed, 15 Aug 2018 09:18:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w7F9Iqsl019986 for ; Wed, 15 Aug 2018 05:18:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id A86D010FFE55; Wed, 15 Aug 2018 09:18:52 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 469AA1102E2A for ; Wed, 15 Aug 2018 09:18:52 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Wed, 15 Aug 2018 11:18:38 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 01/10] qemu: qapi: Simplify value handling in virQEMUQAPISchemaTraverse X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 15 Aug 2018 09:18:58 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Introduce a few variables so that we can easily access the modifier character and also don't have to do pointer aritmetics when selecting the schema entries. This will simplify adding of new modifier characters. Signed-off-by: Peter Krempa Reviewed-by: John Ferlan --- src/qemu/qemu_qapi.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_qapi.c b/src/qemu/qemu_qapi.c index d277ef1bde..fea6683336 100644 --- a/src/qemu/qemu_qapi.c +++ b/src/qemu/qemu_qapi.c @@ -25,6 +25,8 @@ #include "virerror.h" #include "virlog.h" +#include "c-ctype.h" + #define VIR_FROM_THIS VIR_FROM_QEMU VIR_LOG_INIT("qemu.qemu_qapi"); @@ -75,6 +77,8 @@ virQEMUQAPISchemaTraverse(const char *baseName, { virJSONValuePtr base; const char *metatype; + const char *querystr; + char modifier; while (1) { if (!(base =3D virHashLookup(schema, baseName))) @@ -93,13 +97,19 @@ virQEMUQAPISchemaTraverse(const char *baseName, continue; } else if (STREQ(metatype, "object")) { - if (**query =3D=3D '+') + querystr =3D *query; + modifier =3D **query; + + if (!c_isalpha(modifier)) + querystr++; + + if (modifier =3D=3D '+') baseName =3D virQEMUQAPISchemaObjectGetType("variants", - *query + 1, + querystr, "case", base); else baseName =3D virQEMUQAPISchemaObjectGetType("members", - *query, + querystr, "name", base); if (!baseName) @@ -139,6 +149,9 @@ virQEMUQAPISchemaTraverse(const char *baseName, * +variant_discriminator: In the case of unionized objects, select a * specific case to introspect. * + * If the name of any (sub)attribute starts with non-alphabetical symbols = it + * needs to be prefixed by a single space. + * * Array types are automatically flattened to the singular type. Alternate * types are currently not supported. * --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list