[libvirt PATCH 02/10] virDomainHostdevSubsysUSBDefParseXML: Use virXMLProp*

Laine Stump laine at redhat.com
Tue May 18 16:17:45 UTC 2021


On 5/18/21 11:04 AM, Tim Wiederhake wrote:
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
>   src/conf/domain_conf.c | 23 +++++++++--------------
>   1 file changed, 9 insertions(+), 14 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 734fa584a4..661fa53206 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -6694,28 +6694,23 @@ virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
>                                        virDomainHostdevDef *def)
>   {
>       virDomainHostdevSubsysUSB *usbsrc = &def->source.subsys.u.usb;
> -    g_autofree char *startupPolicy = NULL;
> -    g_autofree char *autoAddress = NULL;
>       xmlNodePtr vendorNode;
>       xmlNodePtr productNode;
>       xmlNodePtr addressNode;
> +    virTristateBool autoAddress;
>       VIR_XPATH_NODE_AUTORESTORE(ctxt)
>   
>       ctxt->node = node;
>   
> -    if ((startupPolicy = virXMLPropString(node, "startupPolicy"))) {
> -        int value = virDomainStartupPolicyTypeFromString(startupPolicy);
> -        if (value <= 0) {
> -            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> -                           _("Unknown startup policy '%s'"),
> -                           startupPolicy);
> -            return -1;
> -        }
> -        def->startupPolicy = value;
> -    }
> +    if (virXMLPropEnum(node, "startupPolicy",
> +                       virDomainStartupPolicyTypeFromString,
> +                       VIR_XML_PROP_NONZERO, &def->startupPolicy) < 0)
> +        return -1;
>   
> -    if ((autoAddress = virXMLPropString(node, "autoAddress")))
> -        ignore_value(virStringParseYesNo(autoAddress, &usbsrc->autoAddress));
> +    if (virXMLPropTristateBool(node, "autoAddress", VIR_XML_PROP_NONE,
> +                               &autoAddress) < 0)
> +        return -1;
> +    usbsrc->autoAddress = autoAddress == VIR_TRISTATE_BOOL_YES;


(my poor eyesight kept seeing that "==" as "=" and I was confused for a 
second! :-)

Too bad we have to do this rather than having a virTristateBool directly 
in the object. But history doesn't permit it (without some *other* extra 
code to set it to ..._NO in the case when it isn't specified).

>   
>       /* Product can validly be 0, so we need some extra help to determine
>        * if it is uninitialized */
> 




More information about the libvir-list mailing list