| Message ID | 20260902221547.1812481-15-farosas@suse.de |
|---|---|
| State | New |
| Headers | show |
| Series | migration: MigrationParameters changes | expand |
On Wed, Sep 02, 2026 at 07:15:42PM -0300, Fabiano Rosas wrote: > The migrate_set_parameter_completion function is the last user of the > MigrationParameter enum. Write the code using an output visitor and > QDict instead so we can remove the enum in a future patch. > > Signed-off-by: Fabiano Rosas <farosas@suse.de> > --- > migration/migration-hmp-cmds.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c > index dff69650a0c..d0adda25090 100644 > --- a/migration/migration-hmp-cmds.c > +++ b/migration/migration-hmp-cmds.c > @@ -791,14 +791,19 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args, > void migrate_set_parameter_completion(ReadLineState *rs, int nb_args, > const char *str) > { > + g_autoptr(MigrationParameters) params = g_new0(MigrationParameters, 1); > + g_autoptr(QDict) d = migrate_params_to_dict(params, NULL); When I played with this branch a bit then I found set_parameter completion broke, then I found indeed the prior test didn't add set_parameter completion test.. can add one too. Here IIUC d is empty dict. One possible fix: --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -787,19 +787,19 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args, void migrate_set_parameter_completion(ReadLineState *rs, int nb_args, const char *str) { - g_autoptr(MigrationParameters) params = g_new0(MigrationParameters, 1); - g_autoptr(QDict) d = migrate_params_to_dict(params, NULL); + g_autoptr(QDict) d; const QDictEntry *e; size_t len; + /* Temporarily borrow the global parameters */ + d = migrate_params_to_dict(&migrate_get_current()->parameters, + &error_abort); len = strlen(str); readline_set_completion_index(rs, len); if (nb_args == 2) { for (e = qdict_first(d); e; e = qdict_next(d, e)) { const char *key = qdict_entry_key(e); - if (!g_str_has_prefix(key, "has-")) { - readline_add_completion_of(rs, str, key); - } + readline_add_completion_of(rs, str, key); } } } > + const QDictEntry *e; > size_t len; > > len = strlen(str); > readline_set_completion_index(rs, len); > if (nb_args == 2) { > - int i; > - for (i = 0; i < MIGRATION_PARAMETER__MAX; i++) { > - readline_add_completion_of(rs, str, MigrationParameter_str(i)); > + for (e = qdict_first(d); e; e = qdict_next(d, e)) { > + const char *key = qdict_entry_key(e); > + if (!g_str_has_prefix(key, "has-")) { > + readline_add_completion_of(rs, str, key); > + } > } > } > } > -- > 2.53.0 >
diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c index dff69650a0c..d0adda25090 100644 --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -791,14 +791,19 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args, void migrate_set_parameter_completion(ReadLineState *rs, int nb_args, const char *str) { + g_autoptr(MigrationParameters) params = g_new0(MigrationParameters, 1); + g_autoptr(QDict) d = migrate_params_to_dict(params, NULL); + const QDictEntry *e; size_t len; len = strlen(str); readline_set_completion_index(rs, len); if (nb_args == 2) { - int i; - for (i = 0; i < MIGRATION_PARAMETER__MAX; i++) { - readline_add_completion_of(rs, str, MigrationParameter_str(i)); + for (e = qdict_first(d); e; e = qdict_next(d, e)) { + const char *key = qdict_entry_key(e); + if (!g_str_has_prefix(key, "has-")) { + readline_add_completion_of(rs, str, key); + } } } }
The migrate_set_parameter_completion function is the last user of the MigrationParameter enum. Write the code using an output visitor and QDict instead so we can remove the enum in a future patch. Signed-off-by: Fabiano Rosas <farosas@suse.de> --- migration/migration-hmp-cmds.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)