From nobody Sun Feb 8 23:06:12 2026 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) 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 1710511404441245.82071642602443; Fri, 15 Mar 2024 07:03:24 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 458A517DD; Fri, 15 Mar 2024 10:03:23 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 0D7671D7C; Fri, 15 Mar 2024 09:46:15 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 49EBB190C; Fri, 15 Mar 2024 09:45:32 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.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 683231B56 for ; Fri, 15 Mar 2024 09:44:51 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-P0SrvqrMMfidKAn6Tu2osA-1; Fri, 15 Mar 2024 09:44:48 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2BB3E101A552 for ; Fri, 15 Mar 2024 13:44:48 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.5]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9AE56C15772 for ; Fri, 15 Mar 2024 13:44:47 +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=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: P0SrvqrMMfidKAn6Tu2osA-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 25/28] virt-admin: Annodate 'unwanted_positional' arguments Date: Fri, 15 Mar 2024 14:44:20 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: 35EZDJVFH7RYNETP3ZLUKGF6SYSIM6ET X-Message-ID-Hash: 35EZDJVFH7RYNETP3ZLUKGF6SYSIM6ET 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: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1710511404949100001 Historically the command parser in virsh parses/fills even optional arguments with values as if they were positional unless opted out using VSH_OFLAG_REQ_OPT. This creates unexpected situations when commands can break in this unwanted semantics: $ virsh snapshot-create-as --print-xml 1 2 3 2 3 To prevent any further addition annotate the rest of the arguments with the 'unwanted_positional' flag, so that the parser can keep parsing them as such but any further optional argument will not have this behaviour. Certain arguments where it makes sense are annotated as 'positional' too in this patch. Signed-off-by: Peter Krempa --- tools/virt-admin.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/virt-admin.c b/tools/virt-admin.c index 3e3361fbf1..514f434c94 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -425,14 +425,17 @@ static const vshCmdOptDef opts_srv_threadpool_set[] = =3D { }, {.name =3D "min-workers", .type =3D VSH_OT_INT, + .unwanted_positional =3D true, .help =3D N_("Change bottom limit to number of workers."), }, {.name =3D "max-workers", .type =3D VSH_OT_INT, + .unwanted_positional =3D true, .help =3D N_("Change upper limit to number of workers."), }, {.name =3D "priority-workers", .type =3D VSH_OT_INT, + .unwanted_positional =3D true, .help =3D N_("Change the current number of priority workers"), }, {.name =3D NULL} @@ -812,11 +815,13 @@ static const vshCmdOptDef opts_srv_clients_set[] =3D { }, {.name =3D "max-clients", .type =3D VSH_OT_INT, + .unwanted_positional =3D true, .help =3D N_("Change the upper limit to overall number of clients " "connected to the server."), }, {.name =3D "max-unauth-clients", .type =3D VSH_OT_INT, + .unwanted_positional =3D true, .help =3D N_("Change the upper limit to number of clients waiting for= " "authentication to be connected to the server"), }, @@ -954,6 +959,7 @@ static const vshCmdInfo info_daemon_log_filters =3D { static const vshCmdOptDef opts_daemon_log_filters[] =3D { {.name =3D "filters", .type =3D VSH_OT_STRING, + .positional =3D true, .help =3D N_("redefine the existing set of logging filters"), .flags =3D VSH_OFLAG_EMPTY_OK }, @@ -1037,6 +1043,7 @@ static const vshCmdInfo info_daemon_timeout =3D { static const vshCmdOptDef opts_daemon_log_outputs[] =3D { {.name =3D "outputs", .type =3D VSH_OT_STRING, + .positional =3D true, .help =3D N_("redefine the existing set of logging outputs"), .flags =3D VSH_OFLAG_EMPTY_OK }, --=20 2.44.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org