On 10/21/2015 06:26 AM, Eric Blake wrote:
> In this case migrate help is printed out. So far so good.
> However, you start writing this long migrate command (I bet you
> know the arguments there can get quite long), but then, at some
> point you need to print out the help. Something like this:
>
> virsh # migrate --copy-storage-all --migrate-disks --help
>
> In this specific case you just want to see the format that
> --migrate-disks accepts. So you append --help and expect help to
> be printed out. Well, it will not, because "--help" is taken as
> data to --migrate-disks.
But this is the behavior of ALL applications that use getopt_long():
$ ls --block-size --help
ls: invalid --block-size argument '--help'
NACK; if you use --help in the position where it will be eaten as the
argument to an incomplete long option, that's too bad for you, but we
shouldn't special case it differently than getopt_long().
By the way, you CAN get in the habit of typing '--help --help' any time
you want help but don't know if the first --help will just end up as
filler to an incomplete option. It doesn't globally work, but happens
to work for virsh. For 'virsh migrate --copy-storage-all
--migrate-disks --help --help', we get help output (since we do all
option parsing before any interpretation of the options, then make sure
to interpret --help before any other option once --help is seen in an
option position). Whereas with my ls example, 'ls --block-size --help
--help' doesn't work; arguably something that could be patched in
coreutils to be more user-friendly but not our problem here.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org