On 2/7/20 12:08 PM, Laurent Vivier wrote:
Le 07/02/2020 à 12:02, Philippe Mathieu-Daudé a écrit :
It would be confusing to have multiple default machines.
Abort if this ever occurs.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
vl.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/vl.c b/vl.c
index 7dcb0879c4..da828188eb 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,6 +2366,11 @@ 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;
+ }
+ if (default_count > 1) {
+ error_printf("Multiple default machines available\n");
+ abort();
}
exit(0);
}
Does it really deserve an abort?
Ideal solution would be to be able to check this at build or in the unit
tests.
This is for developers, not for users. I'll use Marc-André suggestion
and use an assertion.