[PATCH v2] vl: Abort if multiple machines are registered as default

Philippe Mathieu-Daudé posted 1 patch 5 years, 9 months ago
Test docker-quick@centos7 passed
Test docker-mingw@fedora passed
Test checkpatch passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200207112729.28554-1-philmd@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>
vl.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH v2] vl: Abort if multiple machines are registered as default
Posted by Philippe Mathieu-Daudé 5 years, 9 months ago
It would be confusing to have multiple default machines.
Abort if this ever occurs.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: Use assert() instead of human friendly message (Marc-André)

Cc: Marc-André Lureau <marcandre.lureau@gmail.com>
Cc: Laurent Vivier <laurent@vivier.eu>
---
 vl.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/vl.c b/vl.c
index 7dcb0879c4..b3e0f7af25 100644
--- a/vl.c
+++ b/vl.c
@@ -2354,6 +2354,8 @@ static MachineClass *machine_parse(const char *name, GSList *machines)
     GSList *el;
 
     if (is_help_option(name)) {
+        int default_count = 0;
+
         printf("Supported machines are:\n");
         machines = g_slist_sort(machines, machine_class_cmp);
         for (el = machines; el; el = el->next) {
@@ -2364,7 +2366,9 @@ static MachineClass *machine_parse(const char *name, GSList *machines)
             printf("%-20s %s%s%s\n", mc->name, mc->desc,
                    mc->is_default ? " (default)" : "",
                    mc->deprecation_reason ? " (deprecated)" : "");
+            default_count += !!mc->is_default;
         }
+        assert(default_count <= 1);
         exit(0);
     }
 
-- 
2.21.1


Re: [PATCH v2] vl: Abort if multiple machines are registered as default
Posted by Richard Henderson 5 years, 9 months ago
On 2/7/20 11:27 AM, Philippe Mathieu-Daudé wrote:
> +            default_count += !!mc->is_default;

I'd prefer we simply change mc->is_default to bool.
There's no good reason for it to be type int, afaics.

In the meantime, there are no settings of is_default outside {0,1}, so you
could just drop the !! for now.


r~