From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776438639; cv=none; d=zohomail.com; s=zohoarc; b=LXzPBmQdqAB1/dgVI9L0ECKqbzSXU5JTtX4DsiodcBmie9X82oqjsZjrFfxN3ZwLqaLag01lUcL9B8H/cQWRKcG+Nx984mQlhA4gtjrb1N46kkS1lts5EForIf4T22SPsAT8IH76+xq5pySQZUlbKL3rTxU1fT5jEn+Y/mBiSq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776438639; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=DhCn7mipJ+vTixGirdVkLhbNojWFMJxvuklSCW8+tSM=; b=AsoeyA6Qzjp+1WvLJ9iPqBjj8A3lsrqbaTCcbvooMmj3z5++NFsQNxDLAFDMpxoBP18iyVKJqQdDIuSMdaD1vxoZXPvNtMx5tJ/nOso/k00O2YNFGeGe3Q3wjDJb2d08Z6NZbLlRecn9V/oyf4eVOSCDEjw1CST/bA3bM6iF508= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 17764386391751018.465054137654; Fri, 17 Apr 2026 08:10:39 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0A780417FA; Fri, 17 Apr 2026 11:10:37 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id A7246418FF; Fri, 17 Apr 2026 11:09:42 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 570EB417FA; Fri, 17 Apr 2026 11:09:33 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 0CFEA3F83C for ; Fri, 17 Apr 2026 11:09:31 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-253-hv5RgRtzOsKoVbig4e03JQ-1; Fri, 17 Apr 2026 11:09:30 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 043F6195607B for ; Fri, 17 Apr 2026 15:09:29 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 31AE71800352 for ; Fri, 17 Apr 2026 15:09:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438571; 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=DhCn7mipJ+vTixGirdVkLhbNojWFMJxvuklSCW8+tSM=; b=hjhUPcQZD1lHJmwr2eFA9PpQRgW7fYLQGXEvkKXKDX0V9ymTiBJKjWR2Qj1cYICeejxlId xLcHZz4vjzDsXo4gJmitbeGmZMHQxOl0GJKHsXYQvdFr/co9fYcaW1yHeTFBx/YoYsZXLy 7CDatHerDfi8JN92JuuqlrZlGhVLimo= X-MC-Unique: hv5RgRtzOsKoVbig4e03JQ-1 X-Mimecast-MFC-AGG-ID: hv5RgRtzOsKoVbig4e03JQ_1776438569 To: devel@lists.libvirt.org Subject: [PATCH 1/7] vsh-table: Refactor cleanup in 'vshTableRowNew' Date: Fri, 17 Apr 2026 17:09:19 +0200 Message-ID: <8476639e1326bef4e1e0a625b10fa67061b88653.1776438504.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Tt-CG102jv7YWsPNmYvJSXj0_PejUXyX7Hj6MBcDqkA_1776438569 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CYGCFLBKT3N24BLKY4UIVLAZKIZSFMJZ X-Message-ID-Hash: CYGCFLBKT3N24BLKY4UIVLAZKIZSFMJZ X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776438641766154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The 'error' label is not needed, we can directly return failure from the only error. Signed-off-by: Peter Krempa --- tools/vsh-table.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index da7dc84ee8..20d25eb227 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -92,7 +92,7 @@ vshTableRowNew(const char *arg, va_list ap) if (!arg) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Table row cannot be empty")); - goto error; + return NULL; } row =3D g_new0(vshTableRow, 1); @@ -108,10 +108,6 @@ vshTableRowNew(const char *arg, va_list ap) } return row; - - error: - vshTableRowFree(row); - return NULL; } --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776438754; cv=none; d=zohomail.com; s=zohoarc; b=GM+XOoVxecwukyOrX00KIhTcJBMd/9ot+O/71LMnoYQXNZrS9J30tjtuR673Hx/mKgFKnxWHnGEYRGUo7ZywupMP0MAyz1Lc9nEqvI70/Z9XHa6BqkczPRSXWFlczmqLbZWXgS3fE1/BJYXWrwQ5Uw6oPOIBbTxkzdj2fokFrYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776438754; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=nYwr4myz90k7rL2B3dKszMetcMOSjcy+nDfW/lmqy8M=; b=MZH7inxz0IsmYICbOr1xPPjD3LWZp+3e8HwVKmu+/5CWVFwxe/AOpDgLJliIvdv6dZrRsJeOk5zzyHG/Drbcy6yEuCZGl3jtUpX1GsD7uSuDfceb/C0TiTkBba/JtwXKqjGFR81iYK0C8R8AUU1KJyD3T99M6YWczxqrAmYVTbQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776438754832590.1008626435259; Fri, 17 Apr 2026 08:12:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4F520418CD; Fri, 17 Apr 2026 11:12:33 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 8040441A03; Fri, 17 Apr 2026 11:09:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B4CC63F2F6; Fri, 17 Apr 2026 11:09:33 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8A8C53FA2E for ; Fri, 17 Apr 2026 11:09:32 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-654-qz_vPKw-N6evp-QK5UvfnA-1; Fri, 17 Apr 2026 11:09:31 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2F9F61956088 for ; Fri, 17 Apr 2026 15:09:30 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 78D801800351 for ; Fri, 17 Apr 2026 15:09:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438572; 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=nYwr4myz90k7rL2B3dKszMetcMOSjcy+nDfW/lmqy8M=; b=VI1U+K7x3kXafkAvmeGA3SnNqCp979nEqTeGlLvMGgfg8IHsOzdNfjN4S53aXjzejEOjOz 2Vzbc2ikmqlGTfJur9RabMfTy6u+PepAtD903hzPXnAAOUZqbqOv8ecWz3xrPUD3WjaJj7 E798SPMXvyRUCRs14pUr16NADxSSpfA= X-MC-Unique: qz_vPKw-N6evp-QK5UvfnA-1 X-Mimecast-MFC-AGG-ID: qz_vPKw-N6evp-QK5UvfnA_1776438570 To: devel@lists.libvirt.org Subject: [PATCH 2/7] vsh-table: Refactor 'vshTableRowAppend' Date: Fri, 17 Apr 2026 17:09:20 +0200 Message-ID: <5dde0a9662e9a06c1db27182d5013d1d90ee1a33.1776438504.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: cbD5RqajjW-o3U_gYmalHn9K7c4Aps9mcZ3LHhQtqgk_1776438570 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: FDE5AA33SCACLQRSGGDUVGOYSNO2FIKR X-Message-ID-Hash: FDE5AA33SCACLQRSGGDUVGOYSNO2FIKR X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776438756478158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Register cleanup function for vshTableRow and use it to simplify cleanup in 'vshTableRowAppend' Signed-off-by: Peter Krempa --- tools/vsh-table.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index 20d25eb227..13e9887cba 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -57,6 +57,7 @@ vshTableRowFree(vshTableRow *row) g_free(row->cells); g_free(row); } +G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshTableRow, vshTableRowFree); void @@ -158,30 +159,26 @@ vshTableNew(const char *arg, ...) int vshTableRowAppend(vshTable *table, const char *arg, ...) { - vshTableRow *row =3D NULL; + g_autoptr(vshTableRow) row =3D NULL; size_t ncolumns =3D table->rows[0]->ncells; va_list ap; - int ret =3D -1; va_start(ap, arg); row =3D vshTableRowNew(arg, ap); va_end(ap); if (!row) - goto cleanup; + return -1; if (ncolumns !=3D row->ncells) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Incorrect number of cells in a table row")); - goto cleanup; + return -1; } VIR_APPEND_ELEMENT(table->rows, table->nrows, row); - ret =3D 0; - cleanup: - vshTableRowFree(row); - return ret; + return 0; } --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776438809; cv=none; d=zohomail.com; s=zohoarc; b=DWXrOdz/D7CjwEGcuI23G+sMfhOF+2cssldQioIZqkIq/pCj0Wg62X+E7wx8GEiD3e6z1krFPtRzzYrXXLQDCMSj+8eA9JjLBon421ieE12lgcO7BpaZITi2jvTCH5J6uxVdggJsYiRCksiPDgc0HQGrCBufasfLQ1nUY01aEcc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776438809; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=X9RHnfg8fYwWAVGoeUCsKu9ADQWHKfUpTgEv2lKLMnA=; b=AYdmNbd6ZoD1O8QeKCRy4F8nbTuJbWQkMhGmSXQO0soIrnhGIZg08OiCXa/q8EpUp110MIck6IJeedE+y8nD3HQvZ8TcjrmEHe1fMoYNhnp6WPzEKuRN7V1tBf+lQBhk71YNtlpzqguqKmgWQePeoNCOt4BROFzDcQIqLSKWe80= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776438809179817.7128378469722; Fri, 17 Apr 2026 08:13:29 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5126B418B5; Fri, 17 Apr 2026 11:13:28 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 3FEFF41AAF; Fri, 17 Apr 2026 11:09:59 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0F6A83F2F6; Fri, 17 Apr 2026 11:09:35 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 6455E3F83C for ; Fri, 17 Apr 2026 11:09:34 -0400 (EDT) Received: from mx-prod-mc-06.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-678-jYY5Ua7HOxG-2-qE-d6nWA-1; Fri, 17 Apr 2026 11:09:32 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5165E18005AC for ; Fri, 17 Apr 2026 15:09:31 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 965241800669 for ; Fri, 17 Apr 2026 15:09:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438574; 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=X9RHnfg8fYwWAVGoeUCsKu9ADQWHKfUpTgEv2lKLMnA=; b=gD4LfSGhz9FCViCaU5334/ItactT2wEoHpTu+yaCWk5lQVpMZ/JpICCLNRG53pH+Ko8Znw CU2JQeRSzt0mQpApIIIsZF/VA76wjuWI239AGX49z3ugfp+hCTwQM7V9gLjClk5cp8SDB7 82tzX9iERPnmnKJtHIvQlRglXUnaXOU= X-MC-Unique: jYY5Ua7HOxG-2-qE-d6nWA-1 X-Mimecast-MFC-AGG-ID: jYY5Ua7HOxG-2-qE-d6nWA_1776438571 To: devel@lists.libvirt.org Subject: [PATCH 3/7] vsh-table: Refactor 'vshTableNew' Date: Fri, 17 Apr 2026 17:09:21 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: BEKGf8zlg6i29899Or_daWDdeg56XY1lZ2vadn7rno4_1776438571 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: IHVJWI4UUAZZDMMVUU4TWCBCHFEASUBJ X-Message-ID-Hash: IHVJWI4UUAZZDMMVUU4TWCBCHFEASUBJ X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776438810170154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Use automatic memory freeing to remove 'error' label. Signed-off-by: Peter Krempa --- tools/vsh-table.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index 13e9887cba..0c96407f03 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -123,8 +123,8 @@ vshTableRowNew(const char *arg, va_list ap) vshTable * vshTableNew(const char *arg, ...) { - vshTable *table =3D NULL; - vshTableRow *header =3D NULL; + g_autoptr(vshTable) table =3D NULL; + g_autoptr(vshTableRow) header =3D NULL; va_list ap; table =3D g_new0(vshTable, 1); @@ -134,15 +134,11 @@ vshTableNew(const char *arg, ...) va_end(ap); if (!header) - goto error; + return NULL; VIR_APPEND_ELEMENT(table->rows, table->nrows, header); - return table; - error: - vshTableRowFree(header); - vshTableFree(table); - return NULL; + return g_steal_pointer(&table); } --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776438873; cv=none; d=zohomail.com; s=zohoarc; b=DiGFgKS6OprAJ2JhMq6Zpuw+Y7gjo+vW3hIOhgSdQveZ1q4tZ62tGrYV08RWzpCSWCZFTO3cdQ16cwHCfuOjSCYEKmky3p6YfocvrxINYXIwUnVMnWATG5hwHu9WWr5WzMDnp6PggSsoAPgLtJA0aAOuoBEX4Fav7LeTNsa6Gac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776438873; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=NI3fXekrWQICOUCyLWoQnIDFcYq8QCOFE5R91IbhYrg=; b=JUKe37rAeGj1GUyr8d1yiCzW0ogMcIsmYAP7XDMvxMrYB065Ov+5SNpcVe/JUc0V5LnWqA/fsgei3HZPeOQKLMjgcZGot07wf4Cdp8gU4odiwe1e5iaRzg2wkbRoE1R3oFnZDEwcnvlmHicK1HDx2Zmr78OOfqaT05xL1bUEhfc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776438873773455.68133960294745; Fri, 17 Apr 2026 08:14:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2029A418E0; Fri, 17 Apr 2026 11:14:33 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 8ED3941AFB; Fri, 17 Apr 2026 11:10:04 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5C3A5417FF; Fri, 17 Apr 2026 11:09:36 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id BF5B23F83C for ; Fri, 17 Apr 2026 11:09:35 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-674-GMAldRCKO5OH8AtAPP66DQ-1; Fri, 17 Apr 2026 11:09:34 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7D9681956089 for ; Fri, 17 Apr 2026 15:09:32 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C682F1800660 for ; Fri, 17 Apr 2026 15:09:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438575; 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=NI3fXekrWQICOUCyLWoQnIDFcYq8QCOFE5R91IbhYrg=; b=E/y51zMRtRBDzwuYaEDbcK/b2JyYz9sotq3Ug9Qjpd4FaazZXrUqc+W6IEQW9ACL9UtOAL uaymm0np5+Us1sIFP8WIV276B+RCHZ1dkT8miT7D1MariEDYta525WUkrH0sfsgBRY6214 VC5/no1SdEZXzhx20UZRpaMIM7jS8jM= X-MC-Unique: GMAldRCKO5OH8AtAPP66DQ-1 X-Mimecast-MFC-AGG-ID: GMAldRCKO5OH8AtAPP66DQ_1776438572 To: devel@lists.libvirt.org Subject: [PATCH 4/7] vshTableGetColumnsWidths: Include spacing in lenght calculation Date: Fri, 17 Apr 2026 17:09:22 +0200 Message-ID: <8c3857454270ed09dcc1cc26b9ef64c76fc444cd.1776438504.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: f7HzeRMfSfOgkUtA7CmvxPm3GKVfXKux0xM28RLzFR0_1776438572 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SMO6UYHPMSFKHSH5FUSPUMKPIQPSQGEV X-Message-ID-Hash: SMO6UYHPMSFKHSH5FUSPUMKPIQPSQGEV X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776438875115154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa Modify the array holding lenghts of individual colums in the table to include the spacing. This will be used later when we'll allow to modify the spacing. To do this we'll include the 3 extra spaces as lenghths as well as fix the two loops using the value to use it directly. Since the spacing is not included in the string the code in 'vshTableRowPrint' is modified to explicitly add the spacing instead of adding a constant to the calculated length. Signed-off-by: Peter Krempa --- tools/vsh-table.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index 0c96407f03..0e537dd106 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -257,7 +257,8 @@ vshTableSafeEncode(const char *s, size_t *width) * * Fill passed @maxwidths and @widths arrays with maximum number * of characters for columns and number of character per each - * table cell, respectively. + * table cell, respectively. Both lengths include the extra whitespace for + * separation of colums. * Handle unicode strings (user must have multibyte locale) * * Return 0 in case of success, -1 otherwise. @@ -284,6 +285,9 @@ vshTableGetColumnsWidths(vshTable *table, if (!tmp) return -1; + /* include the built-in whitespace in the calculated length */ + size +=3D 3; + VIR_FREE(row->cells[j]); row->cells[j] =3D tmp; widths[i][j] =3D size; @@ -317,8 +321,9 @@ vshTableRowPrint(vshTableRow *row, virBufferAsprintf(buf, " %s", row->cells[i]); if (i < (row->ncells - 1)) { - for (j =3D 0; j < maxwidths[i] - widths[i] + 2; j++) + for (j =3D 0; j < maxwidths[i] - widths[i]; j++) virBufferAddChar(buf, ' '); + virBufferAddLit(buf, " "); } } virBufferAddChar(buf, '\n'); @@ -365,7 +370,7 @@ vshTablePrint(vshTable *table, bool header) /* print dividing line */ for (i =3D 0; i < table->rows[0]->ncells; i++) { - for (j =3D 0; j < maxwidths[i] + 3; j++) + for (j =3D 0; j < maxwidths[i]; j++) virBufferAddChar(&buf, '-'); } virBufferAddChar(&buf, '\n'); --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776438963; cv=none; d=zohomail.com; s=zohoarc; b=ePCPACo9eS033E7fXRjOTjPOWxFr7Bzj8rqOao8eoZcMENAwN6rfBxRCdYqPzt5x1VQZE3YDHzCgzQ6W6azWl+u2eb/gNvq3LKiBvwObWrdwd0s5kBwGJ5uiyNAV19kPaUFldrm8MJK5tWTWN9KlaeqXebi8QMZEkVh87/VN5Fo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776438963; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=7sMmfkMSn1+e7Fzy/0nNNvFNTmQgGHQr2JY4ZMerStg=; b=QmCvB5rj3d+3oVyqgF0cACmCxN8fL9g6/NkvOPDDs2ETl11dWdx+RcnD9Xpto2NIKExpenEJOtgQdc3QUqkn9X2AVgFaOYPLWGCbXSNgwmaHZOrEmAZHC8yS8M4IwQXkTDdVAJOKDoDNPauF6gqRK3b9mqJLUmBNKT275k27kHI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776438963221592.7186711214246; Fri, 17 Apr 2026 08:16:03 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1273041897; Fri, 17 Apr 2026 11:16:02 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 087C841B5B; Fri, 17 Apr 2026 11:10:12 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3369D3FA50; Fri, 17 Apr 2026 11:09:40 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 343283FA50 for ; Fri, 17 Apr 2026 11:09:36 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-kP1Xq5d8PXKWv19U2k0MHg-1; Fri, 17 Apr 2026 11:09:34 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 968B61955F0E for ; Fri, 17 Apr 2026 15:09:33 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E4D021800352 for ; Fri, 17 Apr 2026 15:09:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438575; 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=7sMmfkMSn1+e7Fzy/0nNNvFNTmQgGHQr2JY4ZMerStg=; b=Paj8sjDJ3IVO1TXo5W7fdLSFCgTJxxRNosFmd6zeHUkVn0jKaXau4miSsX3sNDxUFUfDpw 423wROvdPJDYTFvVF9GQr5WfqDn/mUpuVGZBXrgE2xCsxvIluTk6Re/ANHZDvhwOmGWS1w BR0xQThDaHLi54Nc9XZIeAscu0ivDO0= X-MC-Unique: kP1Xq5d8PXKWv19U2k0MHg-1 X-Mimecast-MFC-AGG-ID: kP1Xq5d8PXKWv19U2k0MHg_1776438573 To: devel@lists.libvirt.org Subject: [PATCH 5/7] vsh-table: Add support for right-align and skipping the embedded whitespace Date: Fri, 17 Apr 2026 17:09:23 +0200 Message-ID: <318c82afb08ae901a806a839c7247a87462c4af8.1776438504.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: yHd6F__zevxlkRTrwflmBJc39ENtHnVsM9rz-Ha-VYk_1776438573 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EITHITKTXWMHZGBWMSLLMKKYETEVXQBE X-Message-ID-Hash: EITHITKTXWMHZGBWMSLLMKKYETEVXQBE X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776438963867158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa In certain cases the code might want to skip the forced spacing. Introduce a concept of flags for each column and new function 'vshTableRowAppendFlags' which will do similar job as 'vshTableRowAppend' but add tuples of flags and the string itself. This patch implements the following flags: VSH_TABLE_CELL_SKIP_LEADING - skips the single leading whitespace VSH_TABLE_CELL_SKIP_TRAILING - skips the trailing 2 whitespaces VSH_TABLE_CELL_ALIGN_RIGHT - moves the alignment to the right of the column Signed-off-by: Peter Krempa --- tools/vsh-table.c | 75 ++++++++++++++++++++++++++++++++++++++++++++--- tools/vsh-table.h | 14 +++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/tools/vsh-table.c b/tools/vsh-table.c index 0e537dd106..0502546bab 100644 --- a/tools/vsh-table.c +++ b/tools/vsh-table.c @@ -33,6 +33,7 @@ typedef struct _vshTableRow vshTableRow; struct _vshTableRow { char **cells; + unsigned int *flags; size_t ncells; }; @@ -55,6 +56,7 @@ vshTableRowFree(vshTableRow *row) g_free(row->cells[i]); g_free(row->cells); + g_free(row->flags); g_free(row); } G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshTableRow, vshTableRowFree); @@ -89,6 +91,7 @@ static vshTableRow * vshTableRowNew(const char *arg, va_list ap) { vshTableRow *row =3D NULL; + size_t nflags =3D 0; if (!arg) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -100,10 +103,12 @@ vshTableRowNew(const char *arg, va_list ap) while (arg) { g_autofree char *tmp =3D NULL; + unsigned int fn =3D VSH_TABLE_CELL_DEFAULT; tmp =3D g_strdup(arg); VIR_APPEND_ELEMENT(row->cells, row->ncells, tmp); + VIR_APPEND_ELEMENT(row->flags, nflags, fn); arg =3D va_arg(ap, const char *); } @@ -178,6 +183,52 @@ vshTableRowAppend(vshTable *table, const char *arg, ..= .) } +/** + * vshTableRowAppendFlags: + * @table: table to append to + * @flags: start of the cell tuples of the row row (NULL terminated) + * + * Append new row into the @table. The number of cells in the row has + * to be equal to the number of cells in the table header. Each column con= sists + * of a tuple of an 'unsigned int' corresponding to bitwise-or of + * vshTableCellFlags and an const char * representing the value to add. + * + * Returns: 0 if succeeded, -1 if failed. + */ +int +vshTableRowAppendFlags(vshTable *table, + unsigned int f1, + const char *c1, + ...) +{ + g_autoptr(vshTableRow) row =3D g_new0(vshTableRow, 1); + size_t ncolumns =3D table->rows[0]->ncells; + va_list ap; + unsigned int fn =3D f1; + g_autofree char *cn =3D g_strdup(c1); + size_t nflags =3D 0; + + va_start(ap, c1); + while (cn) { + VIR_APPEND_ELEMENT(row->flags, nflags, fn); + VIR_APPEND_ELEMENT(row->cells, row->ncells, cn); + + fn =3D va_arg(ap, unsigned int); + cn =3D g_strdup(va_arg(ap, const char *)); + } + va_end(ap); + + if (ncolumns !=3D row->ncells) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Incorrect number of cells in a table row")); + return -1; + } + + VIR_APPEND_ELEMENT(table->rows, table->nrows, row); + + return 0; +} + /** * Function pulled from util-linux * @@ -286,7 +337,11 @@ vshTableGetColumnsWidths(vshTable *table, return -1; /* include the built-in whitespace in the calculated length */ - size +=3D 3; + if (!(row->flags[j] & VSH_TABLE_CELL_SKIP_LEADING)) + size +=3D 1; + + if (!(row->flags[j] & VSH_TABLE_CELL_SKIP_TRAILING)) + size +=3D 2; VIR_FREE(row->cells[j]); row->cells[j] =3D tmp; @@ -318,13 +373,25 @@ vshTableRowPrint(vshTableRow *row, size_t j; for (i =3D 0; i < row->ncells; i++) { - virBufferAsprintf(buf, " %s", row->cells[i]); + if (!(row->flags[i] & VSH_TABLE_CELL_SKIP_LEADING)) + virBufferAddLit(buf, " "); - if (i < (row->ncells - 1)) { + if (row->flags[i] & VSH_TABLE_CELL_ALIGN_RIGHT) { for (j =3D 0; j < maxwidths[i] - widths[i]; j++) virBufferAddChar(buf, ' '); - virBufferAddLit(buf, " "); + virBufferAsprintf(buf, "%s", row->cells[i]); + } else { + virBufferAsprintf(buf, "%s", row->cells[i]); + + if (i < (row->ncells - 1)) { + for (j =3D 0; j < maxwidths[i] - widths[i]; j++) + virBufferAddChar(buf, ' '); + } } + + if (!(row->flags[i] & VSH_TABLE_CELL_SKIP_TRAILING) && + i < (row->ncells - 1)) + virBufferAddLit(buf, " "); } virBufferAddChar(buf, '\n'); } diff --git a/tools/vsh-table.h b/tools/vsh-table.h index 18d5139aa6..cffc9c3dbc 100644 --- a/tools/vsh-table.h +++ b/tools/vsh-table.h @@ -24,6 +24,13 @@ typedef struct _vshTable vshTable; +typedef enum { + VSH_TABLE_CELL_DEFAULT =3D 0, + VSH_TABLE_CELL_SKIP_LEADING =3D 1 << 0, + VSH_TABLE_CELL_SKIP_TRAILING =3D 1 << 1, + VSH_TABLE_CELL_ALIGN_RIGHT =3D 1 << 2, +} vshTableCellFlags; + void vshTableFree(vshTable *table); G_DEFINE_AUTOPTR_CLEANUP_FUNC(vshTable, vshTableFree); @@ -36,6 +43,13 @@ int vshTableRowAppend(vshTable *table, const char *arg, ...) G_GNUC_NULL_TERMINATED; +int +vshTableRowAppendFlags(vshTable *table, + unsigned int f1, + const char *c1, + ...) + G_GNUC_NULL_TERMINATED; + void vshTablePrintToStdout(vshTable *table, vshControl *ctl); --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776439023; cv=none; d=zohomail.com; s=zohoarc; b=idlzxyIyCY7yNjuscy5b/SjNVwKayjcvJ5ooqOyrhchUNAaxpswiNtyMv4ZjvbYrf5jBQCxfjtVDkJ7gFaD1eWZd8M7C4XPgNabRiZR0QN8UAQ+9a51UVRAgQnW7BB05ZnA6QIPlEngbVXXj7nSy2YYlQWUUCcTR6fGYSZyK+JA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776439023; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=KR3sSEqBjVxrcQB7ASogXAZ1mY+BQAzAqqZJTxvpBWY=; b=lpqTYU7HOd5eusnZemJ8jN2vgs/WsuDfDOn7JspFn/jFN5LLbgTXy7MAXiI7IDc/KtLO5rwy/gFX58o//R3ROkZCCRzLSjaHCJjNwhfC4Za2VB9RxIPAr19IwHr/jonEP6tv2hpyuLP91kMmlBUXZctujKtt0mCTSiaVx9vkASM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776439023601492.9805675632539; Fri, 17 Apr 2026 08:17:03 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DC7FF41802; Fri, 17 Apr 2026 11:17:02 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 1CFD241A80; Fri, 17 Apr 2026 11:10:53 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3CFE441898; Fri, 17 Apr 2026 11:10:43 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B2B3C41822 for ; Fri, 17 Apr 2026 11:09:43 -0400 (EDT) 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-75-7O_oSwQOOOO5YlszmL7ADw-1; Fri, 17 Apr 2026 11:09:35 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 B936A18001F2 for ; Fri, 17 Apr 2026 15:09:34 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 095A91800352 for ; Fri, 17 Apr 2026 15:09:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438583; 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=KR3sSEqBjVxrcQB7ASogXAZ1mY+BQAzAqqZJTxvpBWY=; b=BpDMRso4SpqGDttOFMd4ioN8655BGvK4hHeigDK0naIlsDOdiAIEbT0jR7r7D/EPb6pKnj uH8Ql97YAsLJgBZCGfQYJGt5ehGp/pfYAcJwJ0zvPNONBUzD1tspyPUON1J5zZLKBAXjPy 9tDwxOG3ZGlv6XInajQ9GHO4OA+PJO4= X-MC-Unique: 7O_oSwQOOOO5YlszmL7ADw-1 X-Mimecast-MFC-AGG-ID: 7O_oSwQOOOO5YlszmL7ADw_1776438574 To: devel@lists.libvirt.org Subject: [PATCH 6/7] tests: vshtable: Excercise all flag combinations in vshTableRowAppendFlags Date: Fri, 17 Apr 2026 17:09:24 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: A0hgd6d5OHDaBg7kxb_qa81ut6Lrkyh9QCQFHbrqtuk_1776438574 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 53Q5BSZLAMRF5ZRAW3SC7UF7EFKFYAEG X-Message-ID-Hash: 53Q5BSZLAMRF5ZRAW3SC7UF7EFKFYAEG X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776439025564154100 Content-Type: text/plain; charset="utf-8" From: Peter Krempa The new test case iterates over all combinations and tries the formatting of the table with strings of 3 distinct lengths (1 char, 8 chars and maximum widht that fits in the column (8+3 characters)). Signed-off-by: Peter Krempa --- tests/vshtabletest.c | 68 ++++++++++++++++++++ tests/vshtabletestdata/testRowsWithFlags.out | 24 +++++++ 2 files changed, 92 insertions(+) create mode 100644 tests/vshtabletestdata/testRowsWithFlags.out diff --git a/tests/vshtabletest.c b/tests/vshtabletest.c index bb75a41418..e4c670d27f 100644 --- a/tests/vshtabletest.c +++ b/tests/vshtabletest.c @@ -316,6 +316,71 @@ testNTables(const void *opaque G_GNUC_UNUSED) return 0; } + +static int +testRowsWithFlags(const void *opaque G_GNUC_UNUSED) +{ + g_autoptr(vshTable) t =3D vshTableNew("comment", "|", "content", "|", = NULL); + g_autofree char *act =3D NULL; + unsigned int fl; + unsigned int maxfl =3D VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CELL_SK= IP_TRAILING | VSH_TABLE_CELL_ALIGN_RIGHT; + + for (fl =3D 0; fl <=3D maxfl; fl++) { + size_t maxlen =3D 8; + g_auto(virBuffer) b =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) n =3D VIR_BUFFER_INITIALIZER; + size_t i; + + virBufferAddLit(&n, "base"); + + if (fl & VSH_TABLE_CELL_SKIP_LEADING) { + maxlen +=3D 1; + virBufferAddLit(&n, "+skip_leading"); + } + + if (fl & VSH_TABLE_CELL_SKIP_TRAILING) { + maxlen +=3D 2; + virBufferAddLit(&n, "+skip_trailing"); + } + + if (fl & VSH_TABLE_CELL_ALIGN_RIGHT) { + virBufferAddLit(&n, "+align_right"); + } + + for (i =3D 0; i < maxlen; i++) + virBufferAddChar(&b, 'b'); + + vshTableRowAppendFlags(t, + VSH_TABLE_CELL_DEFAULT, virBufferCurrentCon= tent(&n), + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + fl, "short", + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + 0, NULL); + + vshTableRowAppendFlags(t, + VSH_TABLE_CELL_DEFAULT, virBufferCurrentCon= tent(&n), + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + fl, "8__chars", + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + 0, NULL); + + vshTableRowAppendFlags(t, + VSH_TABLE_CELL_DEFAULT, virBufferCurrentCon= tent(&n), + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + fl, virBufferCurrentContent(&b), + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, "|", + 0, NULL); + } + + act =3D vshTablePrintToString(t, false); + + if (virTestCompareToFile(act, abs_srcdir "/vshtabletestdata/testRowsWi= thFlags.out") < 0) + return -1; + + return 0; +} + + static int mymain(void) { @@ -357,6 +422,9 @@ mymain(void) if (virTestRun("testNTables", testNTables, NULL) < 0) ret =3D -1; + if (virTestRun("testRowsWithFlags", testRowsWithFlags, NULL) < 0) + ret =3D -1; + return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/vshtabletestdata/testRowsWithFlags.out b/tests/vshtablet= estdata/testRowsWithFlags.out new file mode 100644 index 0000000000..5de74586eb --- /dev/null +++ b/tests/vshtabletestdata/testRowsWithFlags.out @@ -0,0 +1,24 @@ + base | short | + base | 8__chars | + base | bbbbbbbb | + base+skip_leading |short | + base+skip_leading |8__chars | + base+skip_leading |bbbbbbbbb | + base+skip_trailing | short | + base+skip_trailing | 8__chars | + base+skip_trailing | bbbbbbbbbb| + base+skip_leading+skip_trailing |short | + base+skip_leading+skip_trailing |8__chars | + base+skip_leading+skip_trailing |bbbbbbbbbbb| + base+align_right | short | + base+align_right | 8__chars | + base+align_right | bbbbbbbb | + base+skip_leading+align_right | short | + base+skip_leading+align_right | 8__chars | + base+skip_leading+align_right |bbbbbbbbb | + base+skip_trailing+align_right | short| + base+skip_trailing+align_right | 8__chars| + base+skip_trailing+align_right | bbbbbbbbbb| + base+skip_leading+skip_trailing+align_right | short| + base+skip_leading+skip_trailing+align_right | 8__chars| + base+skip_leading+skip_trailing+align_right |bbbbbbbbbbb| --=20 2.53.0 From nobody Sun Apr 19 12:42:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1776439073; cv=none; d=zohomail.com; s=zohoarc; b=QcykbEC5/TzFc/x42B2/E6O+zAE0mam55TKnNayEsoAsv/hfAihVCej9trgHSnW20TalPjkKSmv920yCrpL/+FOgMyBA5jbsRz6AobWkv7loAp2D3jPJFPcsVuceqskBi8HGHs4WRXb+esK8tLQljfiBJraOGuHEbSB6NwSeJos= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776439073; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=ZHlHWjhoVaoWEtq6xFHRvXzI0SzAzz2RcqkTJw2Fqe8=; b=kC1/CkRF5DnsE9mDWZBWJD37GevuD2qTaz+oXQDvEe7rUmmSkgtWRhMIgab0y+nVeAYSj2e9OHrZZIHMG0CZRkH8oM1Ugg2kDm4449ljWIL4kBvD4N+VrflAEtGkUerNBWB/w5i9HxXGCAayWNUTYpUI3ogzRCYOodT3xZMDQyw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1776439073123886.6715516740085; Fri, 17 Apr 2026 08:17:53 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D807D41807; Fri, 17 Apr 2026 11:17:51 -0400 (EDT) Received: from [172.19.199.6] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 2961E418C0; Fri, 17 Apr 2026 11:10:58 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9510341818; Fri, 17 Apr 2026 11:10:47 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 4D31F41915 for ; Fri, 17 Apr 2026 11:09:44 -0400 (EDT) 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-264-YKv-67NtOhSMfzsl_QlJWw-1; Fri, 17 Apr 2026 11:09:36 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 D24801800EF3 for ; Fri, 17 Apr 2026 15:09:35 +0000 (UTC) Received: from speedmetal.lan (unknown [10.44.24.20]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 26D521800352 for ; Fri, 17 Apr 2026 15:09:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776438583; 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=ZHlHWjhoVaoWEtq6xFHRvXzI0SzAzz2RcqkTJw2Fqe8=; b=MEqjFKX9sHCqaR0T9wAtnrFNkvX28zJc5bU79lGbAo8TaGzsqEDYmINjyfAdToGj9kkYi8 b8k1HnSVpx/RkSnRQpOnO4K30ArnpZKgUO7L4sjGNclLNn65QbehMOlobnKd4Vlzo1o8H2 ccKhFh5LuJ5BdQoxjCNWJHxBnGmw04I= X-MC-Unique: YKv-67NtOhSMfzsl_QlJWw-1 X-Mimecast-MFC-AGG-ID: YKv-67NtOhSMfzsl_QlJWw_1776438575 To: devel@lists.libvirt.org Subject: [PATCH 7/7] virsh: cmdNodeMemStats: Rework to vshTable Date: Fri, 17 Apr 2026 17:09:25 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: i73cg3CUHxPdEMJ-I6SN3CgeTAkEnXonF3nDF9N92Ak_1776438575 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XKSYSAMTUODX4STL5ICCM633JXA7SGTM X-Message-ID-Hash: XKSYSAMTUODX4STL5ICCM633JXA7SGTM X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Peter Krempa via Devel Reply-To: Peter Krempa X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1776439074081158500 Content-Type: text/plain; charset="utf-8" From: Peter Krempa After recent addition of 'available' field the hardcoded alignments no longer match: $ virsh nodememstats total : 63393452 KiB free : 4046756 KiB available: 35747628 KiB buffers: 2291748 KiB cached : 24086464 KiB To address the issue switch to use dynamicaly aligned columns via vshTable infrastructure: $ virsh nodememstats total : 63393452 KiB free : 3888776 KiB available: 35640268 KiB buffers : 2291768 KiB cached : 24089916 KiB Signed-off-by: Peter Krempa --- tools/virsh-host.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tools/virsh-host.c b/tools/virsh-host.c index dd98917fa8..ef91e22fed 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -33,6 +33,7 @@ #include "virfile.h" #include "virenum.h" #include "virsh-util.h" +#include "vsh-table.h" /* * "capabilities" command @@ -889,6 +890,8 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd) int cellNum =3D VIR_NODE_MEMORY_STATS_ALL_CELLS; g_autofree virNodeMemoryStatsPtr params =3D NULL; virshControl *priv =3D ctl->privData; + g_autoptr(vshTable) table =3D vshTableNew("field", ":", "value", NULL); + g_autofree char *tblstr =3D NULL; if (vshCommandOptInt(ctl, cmd, "cell", &cellNum) < 0) return false; @@ -912,8 +915,18 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd) return false; } - for (i =3D 0; i < nparams; i++) - vshPrint(ctl, "%-7s: %20llu KiB\n", params[i].field, params[i].val= ue); + for (i =3D 0; i < nparams; i++) { + g_autofree char *val =3D g_strdup_printf("%llu KiB", params[i].val= ue); + + vshTableRowAppendFlags(table, + VSH_TABLE_CELL_SKIP_LEADING | VSH_TABLE_CEL= L_SKIP_TRAILING, params[i].field, + VSH_TABLE_CELL_SKIP_LEADING, ":", + VSH_TABLE_CELL_ALIGN_RIGHT, val, + 0, NULL); + } + + tblstr =3D vshTablePrintToString(table, false); + vshPrint(ctl, "%s", tblstr); return true; } --=20 2.53.0