[libvirt] [PATCH]virsh: track alias option and improve error message when option duplicate its alias

Eric Blake eblake at redhat.com
Wed Oct 30 13:59:50 UTC 2013


On 10/30/2013 07:41 AM, Peter Krempa wrote:

>>              if ((*opts_seen & (1 << i)) && opt->type != VSH_OT_ARGV) {
>> -                vshError(ctl, _("option --%s already seen"), name);
>> -                goto cleanup;
>> +                if ((*opts_seen & (1 << (i - 1)))) {
>> +                    vshError(ctl, _("option '--%s' duplicates its alias '--%s'"),
>> +                             cmd->opts[i].name, cmd->opts[i-1].name);
> 
> This is not right. This code depends on the aliased option being right
> before the target option in the array describing the options. If you
> move the options in the array around you may get strange error messages.

We already have a check baked into vshCmddefOptParse that guarantees
that all alias options appear in the list earlier than what the alias
expands to, so the rest of the code base is free to rely on that.

> 
> The idea is good, but you need to make sure that the code doesn't depend
> on ordering of the options in the array.

I haven't looked closely at the patch, but we CAN depend on the order of
options within the array.


-- 
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/20131030/43ab4bbf/attachment-0001.sig>


More information about the libvir-list mailing list