From nobody Mon Feb 9 10:11:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1614612597; cv=none; d=zohomail.com; s=zohoarc; b=OvgTQelrnngv+pia1HzeKYE9dvyVsgSlAWJHaI7WpeyG0QV++PUMts9pyqOCliuUKHMXugUSdXX6ybM3/R3yBRuUxA2wq05wC5mIn70J9xIAT/y2fnR6+qgBzpAY9i8TevnXc+ZFwENJshxdu/dAOb0Latc9vtzBtQMDG/ATFio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614612597; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qkXf8TMx+G6u0C9BEMxvQXVvj0ZNJMk26x36FpIij8k=; b=dr16mZJ3yzz6qV4r1jTC+QrjkkrB2YQfTwPUcQ/czMVPOt8TdvaO1N/1BJJwwUrjEv6xXTNmOiW4BzE+FIoCKbpSb7cGU65IWSZpEJzuCtzNok8CxKHJ2Yf7c5FLk5mHXQU1Aa/BSxwZVipOE75BhiN0TeyTUgJApWZqYrGK5Oo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1614612597223426.47149430742377; Mon, 1 Mar 2021 07:29:57 -0800 (PST) Received: from localhost ([::1]:40918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGkUd-0007u9-6k for importer@patchew.org; Mon, 01 Mar 2021 10:29:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59462) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGkTl-0006SF-37 for qemu-devel@nongnu.org; Mon, 01 Mar 2021 10:29:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:49555) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lGkTi-0000XO-RV for qemu-devel@nongnu.org; Mon, 01 Mar 2021 10:29:00 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-134-ImYnYpnUN-ikRCY4RECL9Q-1; Mon, 01 Mar 2021 10:28:47 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 431DA50741; Mon, 1 Mar 2021 15:28:46 +0000 (UTC) Received: from virtlab511.virt.lab.eng.bos.redhat.com (virtlab511.virt.lab.eng.bos.redhat.com [10.19.152.198]) by smtp.corp.redhat.com (Postfix) with ESMTP id AF3D35C1D1; Mon, 1 Mar 2021 15:28:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1614612537; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qkXf8TMx+G6u0C9BEMxvQXVvj0ZNJMk26x36FpIij8k=; b=NJeDb0Yzp9KuY9TWO9/bKSlivnQHs6aF/KyS2YcNBU+YHPJ8Vjz0shs4DJMDzWijGAB/GU jByUiEHvfYN/vxAb7NnhO5mORRe3qjWxpvnkQx1lt5QF6UqqqUgGUGqq6DnrM8zNkINM7Z +PC5lOZGBrMrYXPO2REh0MN9KAnAN5I= X-MC-Unique: ImYnYpnUN-ikRCY4RECL9Q-1 From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH v2 1/2] storage-daemon: report unexpected arguments on the fly Date: Mon, 1 Mar 2021 10:28:43 -0500 Message-Id: <20210301152844.291799-2-pbonzini@redhat.com> In-Reply-To: <20210301152844.291799-1-pbonzini@redhat.com> References: <20210301152844.291799-1-pbonzini@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pbonzini@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" If the first character of optstring is '-', then each nonoption argv element is handled as if it were the argument of an option with character code 1. This removes the reordering of the argv array, and enables usage of loc_set_cmdline to provide better error messages. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake --- storage-daemon/qemu-storage-daemon.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index 9021a46b3a..9aa82e7d96 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -174,7 +174,7 @@ static void process_options(int argc, char *argv[]) * they are given on the command lines. This means that things must be * defined first before they can be referenced in another option. */ - while ((c =3D getopt_long(argc, argv, "hT:V", long_options, NULL)) != =3D -1) { + while ((c =3D getopt_long(argc, argv, "-hT:V", long_options, NULL)) != =3D -1) { switch (c) { case '?': exit(EXIT_FAILURE); @@ -275,14 +275,13 @@ static void process_options(int argc, char *argv[]) qobject_unref(args); break; } + case 1: + error_report("Unexpected argument: %s", optarg); + exit(EXIT_FAILURE); default: g_assert_not_reached(); } } - if (optind !=3D argc) { - error_report("Unexpected argument: %s", argv[optind]); - exit(EXIT_FAILURE); - } } =20 int main(int argc, char *argv[]) --=20 2.26.2 From nobody Mon Feb 9 10:11:50 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1614612597; cv=none; d=zohomail.com; s=zohoarc; b=NAWZ9EwS/nOReBLZ7H6h+0oTRT/raKwRA2IAnmYIizQPPibffpyuBYZv/ro/lKG1+67K1te1APt/a++yaJmW0vjm9Mf4O3HaHkmTTz0eB8LQ4EFgyU+usByBA9+gtoG0Eq7Jw65GiLuNQn6eDE1Fp3xD/6jh1ErcHLveLHp7v6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614612597; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8vxB2MXdaMZhI7BdafX/tKGqJnl3A7mH+lShSOfLT+g=; b=U6ZgcEsAZ/8BqB5p4If0w1JEXot/cf1/wlFNVm9JyM8588OHPxYkmiOPtWZZYqptLTu8zHiFtDaxS+bu0jOab6Cikg5sewX1TvGXlsfYo8OZozCCkTGbIr8YmZFKaoF9FWgHcqQ8/1wm4r+SXawb1yW3HVAeQlG0pHAtoPN1Bk4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1614612597156655.029186581242; Mon, 1 Mar 2021 07:29:57 -0800 (PST) Received: from localhost ([::1]:40952 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lGkUe-0007uv-3D for importer@patchew.org; Mon, 01 Mar 2021 10:29:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59454) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lGkTk-0006RN-Ih for qemu-devel@nongnu.org; Mon, 01 Mar 2021 10:29:00 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:49242) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1lGkTc-0000V9-Jf for qemu-devel@nongnu.org; Mon, 01 Mar 2021 10:29:00 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-217-mc9TI1FqO6C5z0TsVwzE_A-1; Mon, 01 Mar 2021 10:28:47 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9315F1009617; Mon, 1 Mar 2021 15:28:46 +0000 (UTC) Received: from virtlab511.virt.lab.eng.bos.redhat.com (virtlab511.virt.lab.eng.bos.redhat.com [10.19.152.198]) by smtp.corp.redhat.com (Postfix) with ESMTP id 339725C3E9; Mon, 1 Mar 2021 15:28:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1614612529; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8vxB2MXdaMZhI7BdafX/tKGqJnl3A7mH+lShSOfLT+g=; b=ipezAP6+XryLMehy1tZsK9xusctR5LuAAHfZofs5zlYLSECgdlBe+5fV9jO1fixitYv8hn 8Zpi5t4MjJZureld1XWw01HmUKla30uDDeY8ZputvzkvrAstFddpqpNl57z97qlhPtXQHj NMOjQQIahS1gHAAKaXADYHc2kthHA7M= X-MC-Unique: mc9TI1FqO6C5z0TsVwzE_A-1 From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH v2 2/2] storage-daemon: include current command line option in the errors Date: Mon, 1 Mar 2021 10:28:44 -0500 Message-Id: <20210301152844.291799-3-pbonzini@redhat.com> In-Reply-To: <20210301152844.291799-1-pbonzini@redhat.com> References: <20210301152844.291799-1-pbonzini@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pbonzini@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Use the location management facilities that the emulator uses, so that the current command line option appears in the error message. Before: $ storage-daemon/qemu-storage-daemon --nbd key..=3D qemu-storage-daemon: Invalid parameter 'key..' After: $ storage-daemon/qemu-storage-daemon --nbd key..=3D qemu-storage-daemon: --nbd key..=3D: Invalid parameter 'key..' Reviewed-by: Eric Blake Signed-off-by: Paolo Bonzini --- storage-daemon/qemu-storage-daemon.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index 9aa82e7d96..78ddf619d4 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -152,6 +152,20 @@ static void init_qmp_commands(void) qmp_marshal_qmp_capabilities, QCO_ALLOW_PRECONFIG= ); } =20 +static int getopt_set_loc(int argc, char **argv, const char *optstring, + const struct option *longopts) +{ + int c, save_index; + + optarg =3D NULL; + save_index =3D optind; + c =3D getopt_long(argc, argv, optstring, longopts, NULL); + if (optarg) { + loc_set_cmdline(argv, save_index, MAX(1, optind - save_index)); + } + return c; +} + static void process_options(int argc, char *argv[]) { int c; @@ -174,7 +188,7 @@ static void process_options(int argc, char *argv[]) * they are given on the command lines. This means that things must be * defined first before they can be referenced in another option. */ - while ((c =3D getopt_long(argc, argv, "-hT:V", long_options, NULL)) != =3D -1) { + while ((c =3D getopt_set_loc(argc, argv, "-hT:V", long_options)) !=3D = -1) { switch (c) { case '?': exit(EXIT_FAILURE); @@ -275,12 +289,13 @@ static void process_options(int argc, char *argv[]) break; } case 1: - error_report("Unexpected argument: %s", optarg); + error_report("Unexpected argument"); exit(EXIT_FAILURE); default: g_assert_not_reached(); } } + loc_set_none(); } =20 int main(int argc, char *argv[]) --=20 2.26.2