[libvirt PATCH 06/10] virDomainSoundDefParseXML: Use virXMLProp*

Tim Wiederhake posted 10 patches 1 month, 3 weeks ago

[libvirt PATCH 06/10] virDomainSoundDefParseXML: Use virXMLProp*

Posted by Tim Wiederhake 1 month, 3 weeks ago
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
---
 src/conf/domain_conf.c | 25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 50ddb293ed..867a83a605 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -13173,20 +13173,14 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt,
 {
     virDomainSoundDef *def;
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
-    g_autofree char *model = NULL;
-    int modelval;
     xmlNodePtr audioNode;
 
     def = g_new0(virDomainSoundDef, 1);
     ctxt->node = node;
 
-    model = virXMLPropString(node, "model");
-    if ((modelval = virDomainSoundModelTypeFromString(model)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("unknown sound model '%s'"), model);
+    if (virXMLPropEnum(node, "model", virDomainSoundModelTypeFromString,
+                       VIR_XML_PROP_REQUIRED, &def->model) < 0)
         goto error;
-    }
-    def->model = modelval;
 
     if (virDomainSoundModelSupportsCodecs(def)) {
         int ncodecs;
@@ -13215,19 +13209,10 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt,
 
     audioNode = virXPathNode("./audio", ctxt);
     if (audioNode) {
-        g_autofree char *tmp = NULL;
-        tmp = virXMLPropString(audioNode, "id");
-        if (!tmp) {
-            virReportError(VIR_ERR_XML_ERROR, "%s",
-                           _("missing audio 'id' attribute"));
-            goto error;
-        }
-        if (virStrToLong_ui(tmp, NULL, 10, &def->audioId) < 0 ||
-            def->audioId == 0) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("Invalid audio 'id' value '%s'"), tmp);
+        if (virXMLPropUInt(audioNode, "id", 10,
+                           VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO,
+                           &def->audioId) < 0)
             goto error;
-        }
     }
 
     if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, &def->info, flags) < 0)
-- 
2.26.3

Re: [libvirt PATCH 06/10] virDomainSoundDefParseXML: Use virXMLProp*

Posted by Peter Krempa 1 month, 3 weeks ago
On Fri, Apr 23, 2021 at 17:39:19 +0200, Tim Wiederhake wrote:
> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
> ---
>  src/conf/domain_conf.c | 25 +++++--------------------
>  1 file changed, 5 insertions(+), 20 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 50ddb293ed..867a83a605 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -13173,20 +13173,14 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt,
>  {
>      virDomainSoundDef *def;
>      VIR_XPATH_NODE_AUTORESTORE(ctxt)
> -    g_autofree char *model = NULL;
> -    int modelval;
>      xmlNodePtr audioNode;
>  
>      def = g_new0(virDomainSoundDef, 1);
>      ctxt->node = node;
>  
> -    model = virXMLPropString(node, "model");
> -    if ((modelval = virDomainSoundModelTypeFromString(model)) < 0) {
> -        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> -                       _("unknown sound model '%s'"), model);

This also fixes use of NULL string with printf's %s modifier.

> +    if (virXMLPropEnum(node, "model", virDomainSoundModelTypeFromString,
> +                       VIR_XML_PROP_REQUIRED, &def->model) < 0)
>          goto error;
> -    }
> -    def->model = modelval;
>  
>      if (virDomainSoundModelSupportsCodecs(def)) {
>          int ncodecs;
> @@ -13215,19 +13209,10 @@ virDomainSoundDefParseXML(virDomainXMLOption *xmlopt,
>  
>      audioNode = virXPathNode("./audio", ctxt);
>      if (audioNode) {
> -        g_autofree char *tmp = NULL;
> -        tmp = virXMLPropString(audioNode, "id");
> -        if (!tmp) {
> -            virReportError(VIR_ERR_XML_ERROR, "%s",
> -                           _("missing audio 'id' attribute"));
> -            goto error;
> -        }
> -        if (virStrToLong_ui(tmp, NULL, 10, &def->audioId) < 0 ||
> -            def->audioId == 0) {
> -            virReportError(VIR_ERR_XML_ERROR,
> -                           _("Invalid audio 'id' value '%s'"), tmp);
> +        if (virXMLPropUInt(audioNode, "id", 10,
> +                           VIR_XML_PROP_REQUIRED | VIR_XML_PROP_NONZERO,
> +                           &def->audioId) < 0)

The commit message lacks justification of removing the support for
wrapping of negative numbers.


>              goto error;
> -        }
>      }
>  
>      if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, &def->info, flags) < 0)
> -- 
> 2.26.3
>