[libvirt] [PATCH] virsh: don't shorten incorrect arguments

Eric Blake eblake at redhat.com
Wed Apr 24 15:41:57 UTC 2013


On 04/24/2013 05:28 AM, Ján Tomko wrote:
> On 04/23/2013 06:05 PM, Eric Blake wrote:
>> On 04/23/2013 08:08 AM, Ján Tomko wrote:
>>> https://bugzilla.redhat.com/show_bug.cgi?id=949373
>>>
>>> Print the whole incorrect argument as specified by the user
>>> instead of the short option.
>>>
>>
>>>          case 'd':
>>>              if (virStrToLong_i(optarg, NULL, 10, &debug) < 0) {
>>> -                vshError(ctl, "%s", _("option -d takes a numeric argument"));
>>> +                vshError(ctl, _("option %s takes a numeric argument"), argv[optind - 2]);
>>
>> I'm not sure this gives the nicest output.  With short option bundling,
>> this results in
>>
>> $ tools/virsh -rd
>> error: option '-rd' requires an argument
>>
>> even though the -r option was just fine, and it is really just the
>> bundled '-d' option that has a problem.
> 
> The output is even worse with two unrecognized options:
> $ tools/virsh -pm
> error: unsupported option '.../tools/.libs/virsh'. See --help.

Oops - definitely needs fixing :)

> 
>>
>> Also, I wonder if we should be using a non-NULL 5th parameter to
>> getopt_long; if you provide a longindex parameter, then you can provide
>> a nicer error message that mentions the full "--debug" name (rather than
>> the user-typed abbreviation '--debu') by indexing back into the
>> long-option table (of course, do this only when it was a long option
>> that was misused).
> 
> It seems longindex is only set when the option parsing is successful.
> 
> If we removed the ':' from optstring and let getopt handle the errors,
> it would correctly translate --deb to --debug, but keep the short
> options unchanged:
> 
> $ tools/virsh --deb
> .../virsh: option '--debug' requires an argument
> ...
> 
> $ tools/virsh -rd
> .../virsh: option requires an argument -- 'd'
> ...
> 
> Maybe we should revert commit dd71fa1 ([1]) and change the message
> to something more generic, for example:
> error: See virsh --help.

I'm hoping we can do better than that, but yes, it is a reasonable
last-resort patch that would at least avoid confusing error messages.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130424/ba78a51a/attachment-0001.sig>


More information about the libvir-list mailing list