qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: qemu-devel@nongnu.org,  michael.roth@amd.com,  jsnow@redhat.com,
	eblake@redhat.com
Subject: Re: [PATCH v2 15/28] qapi misc: Elide redundant has_FOO in generated C
Date: Tue, 18 Oct 2022 15:01:03 +0200	[thread overview]
Message-ID: <87lepd2smo.fsf@pond.sub.org> (raw)
In-Reply-To: <Y06LNeMvgOmqtl54@work-vm> (David Alan Gilbert's message of "Tue,  18 Oct 2022 12:17:09 +0100")

"Dr. David Alan Gilbert" <dgilbert@redhat.com> writes:

> * Markus Armbruster (armbru@redhat.com) wrote:
>> "Dr. David Alan Gilbert" <dgilbert@redhat.com> writes:
>> 
>> > * Markus Armbruster (armbru@redhat.com) wrote:
>> >> The has_FOO for pointer-valued FOO are redundant, except for arrays.
>> >> They are also a nuisance to work with.  Recent commit "qapi: Start to
>> >> elide redundant has_FOO in generated C" provided the means to elide
>> >> them step by step.  This is the step for qapi/misc.json.
>> >> 
>> >> Said commit explains the transformation in more detail.  The invariant
>> >> violations mentioned there do not occur here.
>> >> 
>> >> Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
>> >> Signed-off-by: Markus Armbruster <armbru@redhat.com>

[...]

>> >> diff --git a/util/qemu-config.c b/util/qemu-config.c
>> >> index 5325f6bf80..95f61fc883 100644
>> >> --- a/util/qemu-config.c
>> >> +++ b/util/qemu-config.c
>> >> @@ -80,14 +80,8 @@ static CommandLineParameterInfoList *query_option_descs(const QemuOptDesc *desc)
>> >>              break;
>> >>          }
>> >>  
>> >> -        if (desc[i].help) {
>> >> -            info->has_help = true;
>> >> -            info->help = g_strdup(desc[i].help);
>> >> -        }
>> >> -        if (desc[i].def_value_str) {
>> >> -            info->has_q_default = true;
>> >> -            info->q_default = g_strdup(desc[i].def_value_str);
>> >> -        }
>> >> +        info->help = g_strdup(desc[i].help);
>> >> +        info->q_default = g_strdup(desc[i].def_value_str);
>> >>  
>> >>          QAPI_LIST_PREPEND(param_list, info);
>> >>      }
>> >> @@ -245,8 +239,7 @@ static QemuOptsList machine_opts = {
>> >>      }
>> >>  };
>> >>  
>> >> -CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
>> >> -                                                          const char *option,
>> >> +CommandLineOptionInfoList *qmp_query_command_line_options(const char *option,
>> >>                                                            Error **errp)
>> >>  {
>> >>      CommandLineOptionInfoList *conf_list = NULL;
>> >> @@ -254,7 +247,7 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
>> >>      int i;
>> >>  
>> >>      for (i = 0; vm_config_groups[i] != NULL; i++) {
>> >> -        if (!has_option || !strcmp(option, vm_config_groups[i]->name)) {
>> >> +        if (!option || !strcmp(option, vm_config_groups[i]->name)) {
>> >
>> > I think that can be g_strcmp0 if you can convince yourself ->name is
>> > non-null
>> 
>> vm_config_groups[i] must not be null.
>> 
>> However, replacing the whole condition by !g_strcmp0() would be wrong:
>> 
>>     option                             |  null   ->name  neither
>>     -----------------------------------+------------------------
>>     !option || !strcmp(option, ->name) |  true     true    false
>>     g_strcmp0(option, ->name)          | false     true    false
>
> Oops yes, sorry these are the other way around as you point out.

I fell into the exact same trap myself :)

[...]



  reply	other threads:[~2022-10-18 13:07 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18  6:28 [PATCH v2 00/28] qapi: Elide redundant has_FOO in generated C Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 01/28] docs/devel/qapi-code-gen: Update example to match current code Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 02/28] qapi: Tidy up whitespace in generated code Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 03/28] docs/devel/qapi-code-gen: Extend example for next commit's change Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 04/28] qapi: Start to elide redundant has_FOO in generated C Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 05/28] qapi tests: Elide " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 06/28] qapi acpi: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 07/28] qapi audio: " Markus Armbruster
2022-10-18 12:15   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 08/28] qapi block: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 09/28] qapi char: " Markus Armbruster
2022-10-18 12:14   ` Philippe Mathieu-Daudé
2022-10-18 12:55     ` Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 10/28] qapi crypto: " Markus Armbruster
2022-10-18 11:57   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 11/28] qapi dump: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 12/28] qapi job: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 13/28] qapi machine: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 14/28] qapi migration: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 15/28] qapi misc: " Markus Armbruster
2022-10-18 10:32   ` Dr. David Alan Gilbert
2022-10-18 11:10     ` Markus Armbruster
2022-10-18 11:17       ` Dr. David Alan Gilbert
2022-10-18 13:01         ` Markus Armbruster [this message]
2022-10-18  6:28 ` [PATCH v2 16/28] qapi net: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 17/28] qapi pci: " Markus Armbruster
2022-10-18 12:12   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 18/28] qapi qdev qom: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 19/28] qapi replay: " Markus Armbruster
2022-10-18 12:11   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 20/28] qapi rocker: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 21/28] qapi run-state: " Markus Armbruster
2022-10-18 12:11   ` Philippe Mathieu-Daudé
2022-10-18 13:04     ` Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 22/28] qapi stats: " Markus Armbruster
2022-10-18 12:02   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 23/28] qapi tpm: " Markus Armbruster
2022-10-18 12:01   ` Philippe Mathieu-Daudé
2022-10-18 12:12     ` Stefan Berger
2022-10-18 12:23       ` Philippe Mathieu-Daudé
2022-10-18 13:06         ` Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 24/28] qapi transaction: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 25/28] qapi ui: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 26/28] qapi virtio: " Markus Armbruster
2022-10-18 12:04   ` Philippe Mathieu-Daudé
2022-10-18  6:28 ` [PATCH v2 27/28] qapi qga: " Markus Armbruster
2022-10-18  6:28 ` [PATCH v2 28/28] qapi: Drop temporary logic to support conversion step by step Markus Armbruster
2022-10-18 12:03   ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lepd2smo.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).