On 05/01/2014 03:38 AM, Daniel P. Berrange wrote:
>
> The parser already accepts repeated options (well, precisely ONE
> repeated option), by making that option be last in the command
> description and giving it .type = VSH_OT_ARGV. For comparison, see the
> echo command in virsh.c or the send-key command in virsh-domain.c.
That seems rather uneccessarily strict to me. I think it is entirely
valid to allow any --fooo option to be marked as allowing repeats,
not require it to be the final non-option argument.
The repeated option is not required to be last in the user's command
line, only that it is declared last in the C code. However, using a
repeated option in anything other than the last position makes for more
work for the end user. As an example, these two commands are equivalent:
$ virsh echo --shell hello\! world
'hello!' world
$ virsh echo --string hello\! --string world --shell
'hello!' world
Supporting more than one option to be repeated might be possible (you'd
have to patch the option parser to allow it), but using that gets tricky
(you now HAVE to supply the option name for practically all repetitions
of the option; at most one of the repeated options can take advantage of
positional encoding for omitting the option name).
But this particular example doesn't strike me as a case where we need
multiple repeated options - multiple mountpoints is really all the more
this command needs, and that works just fine with the existing
framework, without needing to invent support for a command with two
repeated options.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org