On Mon, Sep 20, 2021 at 12:56:40PM +0200, Stefan Reiter wrote: > Adds support for the "-xS" parameter type, where "-x" denotes a flag > name and the "S" suffix indicates that this flag is supposed to take an > arbitrary string parameter. > > These parameters are always optional, the entry in the qdict will be > omitted if the flag is not given. > > Signed-off-by: Stefan Reiter <s.rei...@proxmox.com> > --- > monitor/hmp.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-)
Looks like yet another hack on top of our existing pile of hacks, but it is cleaner in v3 than it was in v2, and I'm not coming up with anything better. > > diff --git a/monitor/hmp.c b/monitor/hmp.c > index d50c3124e1..a32dce7a35 100644 > --- a/monitor/hmp.c > +++ b/monitor/hmp.c > @@ -980,6 +980,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, > { > const char *tmp = p; > int skip_key = 0; > + int ret; > /* option */ > > c = *typestr++; > @@ -1002,8 +1003,22 @@ static QDict *monitor_parse_arguments(Monitor *mon, > } > if (skip_key) { > p = tmp; > + } else if (*typestr == 'S') { > + /* has option with string value */ > + typestr++; > + tmp = p++; > + while (qemu_isspace(*p)) { > + p++; > + } > + ret = get_str(buf, sizeof(buf), &p); > + if (ret < 0) { > + monitor_printf(mon, "%s: value expected for > -%c\n", > + cmd->name, *tmp); > + goto fail; > + } > + qdict_put_str(qdict, key, buf); Do we have any documentation that also needs a matching update? Or is our documentation for the pseudo-grammar of .hx parsing limited to the code? > } else { > - /* has option */ > + /* has boolean option */ > p++; > qdict_put_bool(qdict, key, true); > } Holding my nose a bit, but only because of the mess that this already is, not because of what you added. Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org