]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virDomainDeviceCCWAddressParseXML: Use virXMLProp*
authorTim Wiederhake <twiederh@redhat.com>
Wed, 21 Apr 2021 12:08:03 +0000 (14:08 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 21 Apr 2021 13:13:00 +0000 (15:13 +0200)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/device_conf.c

index 801552a9cfc70e33ba174c4e33ec2516b1b475c6..e527899d7dc53e4e56d3bc44d6584da9fffb4f24 100644 (file)
@@ -267,43 +267,36 @@ int
 virDomainDeviceCCWAddressParseXML(xmlNodePtr node,
                                   virDomainDeviceCCWAddress *addr)
 {
-    g_autofree char *cssid = virXMLPropString(node, "cssid");
-    g_autofree char *ssid = virXMLPropString(node, "ssid");
-    g_autofree char *devno = virXMLPropString(node, "devno");
+    int cssid;
+    int ssid;
+    int devno;
 
     memset(addr, 0, sizeof(*addr));
 
+    if ((cssid = virXMLPropUInt(node, "cssid", 0, VIR_XML_PROP_NONE,
+                                &addr->cssid)) < 0)
+        return -1;
+
+    if ((ssid = virXMLPropUInt(node, "ssid", 0, VIR_XML_PROP_NONE,
+                               &addr->ssid)) < 0)
+        return -1;
+
+    if ((devno = virXMLPropUInt(node, "devno", 0, VIR_XML_PROP_NONE,
+                                &addr->devno)) < 0)
+        return -1;
+
+    if (!virDomainDeviceCCWAddressIsValid(addr)) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       _("Invalid specification for virtio ccw address: cssid='0x%x' ssid='0x%x' devno='0x%04x'"),
+                       addr->cssid, addr->ssid, addr->devno);
+        return -1;
+    }
+
     if (cssid && ssid && devno) {
-        if (cssid &&
-            virStrToLong_uip(cssid, NULL, 0, &addr->cssid) < 0) {
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("Cannot parse <address> 'cssid' attribute"));
-            return -1;
-        }
-        if (ssid &&
-            virStrToLong_uip(ssid, NULL, 0, &addr->ssid) < 0) {
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("Cannot parse <address> 'ssid' attribute"));
-            return -1;
-        }
-        if (devno &&
-            virStrToLong_uip(devno, NULL, 0, &addr->devno) < 0) {
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("Cannot parse <address> 'devno' attribute"));
-            return -1;
-        }
-        if (!virDomainDeviceCCWAddressIsValid(addr)) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("Invalid specification for virtio ccw"
-                             " address: cssid='%s' ssid='%s' devno='%s'"),
-                           cssid, ssid, devno);
-            return -1;
-        }
         addr->assigned = true;
     } else if (cssid || ssid || devno) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("Invalid partial specification for virtio ccw"
-                         " address"));
+                       _("Invalid partial specification for virtio ccw address"));
         return -1;
     }