[libvirt] [PATCH] virsh: detect programming errors with option parsing
eblake at redhat.com
Wed Aug 28 20:51:36 UTC 2013
On 08/28/2013 10:31 AM, Michal Privoznik wrote:
> On 17.08.2013 00:14, Eric Blake wrote:
>> Noticed while reviewing another patch that had an accidental
>> mismatch due to refactoring. An audit of the code showed that
>> very few callers of vshCommandOpt were expecting a return of
>> -2, indicating programmer error, and of those that DID check,
>> they just propagated that status to yet another caller that
>> did not check. Fix this by making the code blatantly warn
>> the programmer, rather than silently ignoring it and possibly
>> doing the wrong thing downstream.
>> I know that we frown on assert()/abort() inside libvirtd
>> (libraries should NEVER kill the program that linked them),
>> but as virsh is an app rather than the library, and as this
>> is not the first use of assert() in virsh, I think this
>> approach is okay.
>> * tools/virsh.h (vshCommandOpt): Drop declaration.
>> * tools/virsh.c (vshCommandOpt): Make static, and add a
>> parameter. Abort on programmer errors rather than making callers
>> repeat that logic.
>> (vshCommandOptInt, vshCommandOptUInt, vshCommandOptUL)
>> (vshCommandOptString, vshCommandOptStringReq)
>> (vshCommandOptLongLong, vshCommandOptULongLong)
>> (vshCommandOptBool): Adjust callers.
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> In response to my observation on Don's email:
>> tools/virsh.c | 97 +++++++++++++++++++++--------------------------------------
>> tools/virsh.h | 5 +--
>> 2 files changed, 35 insertions(+), 67 deletions(-)
> ACK and safe for freeze.
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 621 bytes
Desc: OpenPGP digital signature
More information about the libvir-list