From nobody Tue Sep 9 03:20:55 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1738082080540496.03426147210905; Tue, 28 Jan 2025 08:34:40 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id E830A16C3; Tue, 28 Jan 2025 11:32:54 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id EEABE1BAA; Tue, 28 Jan 2025 11:29:03 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 1F1301B9A; Tue, 28 Jan 2025 11:28:59 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 151BE180D for ; Tue, 28 Jan 2025 11:28:39 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-612-BF2kUv6-Pyi1Sz1Ay2sDXg-1; Tue, 28 Jan 2025 11:28:37 -0500 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A80491801888 for ; Tue, 28 Jan 2025 16:28:36 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.2]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DCDA919560AA for ; Tue, 28 Jan 2025 16:28:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1738081718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=81gjZTFW7drY9m5wTEZyZXrUe8YimZo8IRMMNoM/+Xc=; b=KOPrrFErRGj2BPTubD3mFhJ5+5NyAZSneC9UfS0EHAfQokt2bBjt4JVHXcmt4dCyOjNz65 teTk66rPDvZb/VJHhG/r1IDneqc0AIJfgyLojZ2BRxlhioDNiTSellBG3wMQVAIOJOcN9t sibBaRPq99xogrFCNkuM3MvkvWTMB/U= X-MC-Unique: BF2kUv6-Pyi1Sz1Ay2sDXg-1 X-Mimecast-MFC-AGG-ID: BF2kUv6-Pyi1Sz1Ay2sDXg From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH v2 11/15] virDomainObjGetMessages: Refactor using GPtrArray Date: Tue, 28 Jan 2025 17:28:15 +0100 Message-ID: <778590ccf6ace38f70c2f7eebabca2a23f189bd1.1738081457.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: TcoFAAzqoI8tUjpcMxGOH_2pVqF6P8L4o1Z_4Zrk0tc_1738081716 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EYAVNJUKUUFPQWV4SUT2L34GZPL3FJRL X-Message-ID-Hash: EYAVNJUKUUFPQWV4SUT2L34GZPL3FJRL X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1738082082450019000 Content-Type: text/plain; charset="utf-8" Simplify the function especially by rewriting it using GPtrArray to construct the string list, especially for the upcoming case when the number of added elements will not be known beforehand and when hypervisor specific data will be added. Signed-off-by: Peter Krempa Reviewed-by: Daniel P. Berrang=C3=A9 --- src/conf/domain_conf.c | 36 +++++++----------------------------- src/conf/domain_conf.h | 4 ++-- src/libxl/libxl_driver.c | 9 ++++++++- src/qemu/qemu_driver.c | 9 ++++++++- src/test/test_driver.c | 9 ++++++++- 5 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 45c2cd09f1..00d486e774 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -31685,53 +31685,31 @@ virHostdevIsPCIDevice(const virDomainHostdevDef *= hostdev) /** * virDomainObjGetMessages: * @vm: domain object - * @msgs: pointer to a variable to store messages + * @m: GPtrArray to be filled with messages * @flags: zero or more virDomainMessageType flags - * - * Returns number of messages stored in @msgs, -1 otherwise. */ -int +void virDomainObjGetMessages(virDomainObj *vm, - char ***msgs, + GPtrArray *m, unsigned int flags) { size_t i =3D 0; - size_t n =3D 0; - int nmsgs =3D 0; - int rv =3D -1; - - *msgs =3D NULL; if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) { - nmsgs +=3D __builtin_popcount(vm->taint); - *msgs =3D g_renew(char *, *msgs, nmsgs+1); - for (i =3D 0; i < VIR_DOMAIN_TAINT_LAST; i++) { if (vm->taint & (1 << i)) { - (*msgs)[n++] =3D g_strdup_printf( - _("tainted: %1$s"), - _(virDomainTaintMessageTypeToString(i))); + g_ptr_array_add(m, g_strdup_printf(_("tainted: %1$s"), + _(virDomainTaintMessage= TypeToString(i)))); } } } if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) { - nmsgs +=3D vm->ndeprecations; - *msgs =3D g_renew(char *, *msgs, nmsgs+1); - for (i =3D 0; i < vm->ndeprecations; i++) { - (*msgs)[n++] =3D g_strdup_printf( - _("deprecated configuration: %1$s"), - vm->deprecations[i]); + g_ptr_array_add(m, g_strdup_printf(_("deprecated configuration= : %1$s"), + vm->deprecations[i])); } } - - if (*msgs) - (*msgs)[nmsgs] =3D NULL; - - rv =3D nmsgs; - - return rv; } bool diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index ba1a495764..e996d3c0de 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -4588,9 +4588,9 @@ bool virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev) ATTRIBUTE_NONNULL(1); -int +void virDomainObjGetMessages(virDomainObj *vm, - char ***msgs, + GPtrArray *m, unsigned int flags); bool diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 058fee0706..426c2b4278 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -6575,6 +6575,7 @@ libxlDomainGetMessages(virDomainPtr dom, char ***msgs, unsigned int flags) { + g_autoptr(GPtrArray) m =3D g_ptr_array_new_with_free_func(g_free); virDomainObj *vm =3D NULL; int ret =3D -1; @@ -6587,7 +6588,13 @@ libxlDomainGetMessages(virDomainPtr dom, if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - ret =3D virDomainObjGetMessages(vm, msgs, flags); + virDomainObjGetMessages(vm, m, flags); + + ret =3D m->len; + if (m->len > 0) { + g_ptr_array_add(m, NULL); + *msgs =3D (char **) g_ptr_array_steal(m, NULL); + } cleanup: virDomainObjEndAPI(&vm); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a1fc61bae2..8327e7079c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19818,6 +19818,7 @@ qemuDomainGetMessages(virDomainPtr dom, char ***msgs, unsigned int flags) { + g_autoptr(GPtrArray) m =3D g_ptr_array_new_with_free_func(g_free); virDomainObj *vm =3D NULL; int rv =3D -1; @@ -19830,7 +19831,13 @@ qemuDomainGetMessages(virDomainPtr dom, if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - rv =3D virDomainObjGetMessages(vm, msgs, flags); + virDomainObjGetMessages(vm, m, flags); + + rv =3D m->len; + if (m->len > 0) { + g_ptr_array_add(m, NULL); + *msgs =3D (char **) g_ptr_array_steal(m, NULL); + } cleanup: virDomainObjEndAPI(&vm); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index f1cefb5c50..a10ec3bc41 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -9522,6 +9522,7 @@ testDomainGetMessages(virDomainPtr dom, char ***msgs, unsigned int flags) { + g_autoptr(GPtrArray) m =3D g_ptr_array_new_with_free_func(g_free); virDomainObj *vm =3D NULL; int rv =3D -1; @@ -9531,7 +9532,13 @@ testDomainGetMessages(virDomainPtr dom, if (!(vm =3D testDomObjFromDomain(dom))) return -1; - rv =3D virDomainObjGetMessages(vm, msgs, flags); + virDomainObjGetMessages(vm, m, flags); + + rv =3D m->len; + if (m->len > 0) { + g_ptr_array_add(m, NULL); + *msgs =3D (char **) g_ptr_array_steal(m, NULL); + } virDomainObjEndAPI(&vm); return rv; --=20 2.48.1