From: Kevin Wolf <kwolf@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Gabriel L. Somlo" <gsomlo@gmail.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] help parsing qemu options
Date: Wed, 11 Mar 2015 12:59:40 +0100 [thread overview]
Message-ID: <20150311115940.GF6628@noname.str.redhat.com> (raw)
In-Reply-To: <87oao0rmxp.fsf@blackfin.pond.sub.org>
Am 11.03.2015 um 08:52 hat Markus Armbruster geschrieben:
> "Gabriel L. Somlo" <gsomlo@gmail.com> writes:
>
> > On Tue, Mar 10, 2015 at 09:40:09AM +0100, Markus Armbruster wrote:
> >> "Gabriel L. Somlo" <gsomlo@gmail.com> writes:
> >> > Assuming the above is correct (and that the appropriate glue is added
> >> > to qemu-options.hx to tie "-foo name=abc,file=xyz" to QEMU_OPTION_foo),
> >> > I'm wondering about preventing "name" and "file" from being turned
> >> > into Booleans should their arguments be omitted on the command line.
> >> >
> >> > To clarify:
> >> >
> >> > -foo abcxyz results in a parse error generated by qemu_opts_parse()
> >> > which is as it should be
> >> >
> >> > -foo file=abc,name=xyz results in a call to foo_option_add("xyz", "abc")
> >> > which is the desired behavior
> >> >
> >> > -foo file=,name= results in a call to foo_option_add("", "")
> >> > which is also OK, as I can sanity-check my
> >> > arguments from within foo_option_add()
> >> >
> >> > However,
> >> >
> >> > -foo file,name results in a call to foo_option_add("on", "on")
> >> > i.e., in the absence of string values, both
> >> > "file" and "name" are converted into Booleans
> >> > and given the string value "on" by qemu_opts_parse()
> >> > which is NOT what I want, and I'm wondering if
> >> > that behavior can somehow be turned off for
> >> > any given QemuOptsList ?
> >> >
> >> > I guess I could be looking for a file named "on" in the current
> >> > directory, and attempt to use the value "on" to insert the object
> >> > from the given file (and fail if no file named "on" could be found,
> >> > but this is not as clean as I would like it to be, and I'm wondering
> >> > if there's a better way).
> >>
> >> Reproduced:
> >>
> >> $ upstream-qemu -nodefaults -S -display vnc=:0 -monitor stdio
> >> -name process=foo,guest
> >> QEMU 2.2.50 monitor - type 'help' for more information
> >> (qemu) info name
> >> on
> >>
> >> QemuOpts is baroque.
> >>
> >> No, you can't switch it off. I'm afraid adding such a switch is not a
> >> good idea, because it would make QemuOpts even more baroque.
> >>
> >> Perhaps we can limit the convenience syntax "omitted value means =on" to
> >> boolean options. Could be hairy, because .desc can be empty, which
> >> defers part of the checking until later.
> >
> > Maybe adding a .default field to .desc, so if the parameter is defined
> > but no value is assigned, the .default value (which could be NULL) is
> > used instead of always defaulting to "on" ?
>
> Introduces a second way to do defaults. The existing way is to provide
> them separately for each use, like this:
>
> int port = qdict_get_try_int(qdict, "port", -1);
>
> or this:
>
> const char *device = qdict_get_try_str(qdict, "device");
> if (!device)
> device = "tcp::" DEFAULT_GDBSTUB_PORT;
>
> Adding another way begs the question what to do when *both* ways provide
> a default, and they differ.
>
> Getting the semantics consistent could be hairy, because .desc can be
> empty, which defers part of the checking until later.
>
> Prior mention of the idea:
> https://lists.nongnu.org/archive/html/qemu-devel/2013-03/msg03813.html
> which elaborates on
> https://lists.nongnu.org/archive/html/qemu-devel/2013-01/msg04598.html
def_value_str exists in the current codebase, and it seems to take
precedence when a different default is specified by the caller.
Kevin
next prev parent reply other threads:[~2015-03-11 11:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-09 17:50 [Qemu-devel] help parsing qemu options Gabriel L. Somlo
2015-03-10 8:40 ` Markus Armbruster
2015-03-10 17:35 ` Gabriel L. Somlo
2015-03-11 7:52 ` Markus Armbruster
2015-03-11 11:59 ` Kevin Wolf [this message]
2015-03-11 12:40 ` Gabriel L. Somlo
2015-03-11 12:53 ` Gabriel L. Somlo
2015-03-11 13:17 ` Kevin Wolf
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=20150311115940.GF6628@noname.str.redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=gsomlo@gmail.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).