On 01/21/2016 07:04 PM, 张敏 wrote: >>> - .args_type = "reuse:-n,full:-f,device:B,target:s,format:s?", >>> - .params = "[-n] [-f] device target [format]", >>> + .args_type = >>> "reuse:-n,full:-f,device:B,target:s,bitmap:s?,format:s?", >>> + .params = "[-n] [-f] device target [bitmap] [format]", >> This is HMP, so it may not matter, but this is not backwards compatible. >> Scripts targetting the old style of passing a format will now have that >> format string interpreted as a bitmap name with no format. Better would >> be to stick [bitmap] at the end, not the middle. > > But I have a question: If I don't want to input a 'format', only use 'bitmap', > it will let 'bitmap' as 'format', This problem how to do it.
Several solutions, some nicer than others, some more complicated than
others. I don't have any strong preference, so much as pointing out the
design space:
1. You don't. If you want to use 'bitmap', you MUST supply 'format'
(supplying format is good anyways, as implicit formats have led to CVEs
in the past).
1.a. Possible variation: Teach the command to allow empty '' format to
be a synonym for an implicit format, so that it could look like:
drive_backup device target '' /path/to/bitmap
2. You modify the HMP parser to accept optionally-named arguments, so
that you can then supply later optional arguments by name without having
to provide the earlier optional arguments. Maybe looking something like:
drive_backup device target --bitmap=/path/to/bitmap
3. Instead of trying to overload an existing command, you create a new
command. Particularly since your overload already declared that '-f'
and 'bitmap' are incompatible.
4. maybe something else?
>> Needs {}. Run your patch through scripts/checkpatch.pl, to flag this
>> and other style violations.
>
> I have checked these patches,but I ignored these warnings.
Not a good idea. And even in the rare case that you plan on ignoring
the warnings, you should at least document in the commit message your
justification for doing so.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
