]> xenbits.xensource.com Git - libvirt.git/commitdiff
domain_conf: introduce virDomainGraphicsListensParseXML
authorPavel Hrdina <phrdina@redhat.com>
Wed, 2 Mar 2016 15:27:02 +0000 (16:27 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Fri, 8 Apr 2016 15:36:27 +0000 (17:36 +0200)
Move code, that parses graphics listens, to its own function.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
src/conf/domain_conf.c

index 47311be52662feeb0f9b7741480f499347ed4f7e..9815a2d63f6dae5a2d96f33843ba7d8fe878160d 100644 (file)
@@ -10686,38 +10686,19 @@ virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def,
 }
 
 
-/* Parse the XML definition for a graphics device */
-static virDomainGraphicsDefPtr
-virDomainGraphicsDefParseXML(xmlNodePtr node,
-                             xmlXPathContextPtr ctxt,
-                             unsigned int flags)
+static int
+virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
+                                 xmlNodePtr node,
+                                 xmlXPathContextPtr ctxt,
+                                 unsigned int flags)
 {
-    virDomainGraphicsDefPtr def;
-    char *type = NULL;
     int nListens;
     xmlNodePtr *listenNodes = NULL;
     char *listenAddr = NULL;
     xmlNodePtr save = ctxt->node;
-
-    if (VIR_ALLOC(def) < 0)
-        return NULL;
+    int ret = -1;
 
     ctxt->node = node;
-
-    type = virXMLPropString(node, "type");
-
-    if (!type) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       "%s", _("missing graphics device type"));
-        goto error;
-    }
-
-    if ((def->type = virDomainGraphicsTypeFromString(type)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("unknown graphics device type '%s'"), type);
-        goto error;
-    }
-
     if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC ||
         def->type == VIR_DOMAIN_GRAPHICS_TYPE_RDP ||
         def->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
@@ -10734,10 +10715,10 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
                 goto error;
 
             for (i = 0; i < nListens; i++) {
-                int ret = virDomainGraphicsListenDefParseXML(&def->listens[i],
-                                                             listenNodes[i],
-                                                             flags);
-                if (ret < 0)
+                int rv = virDomainGraphicsListenDefParseXML(&def->listens[i],
+                                                            listenNodes[i],
+                                                            flags);
+                if (rv < 0)
                     goto error;
                 def->nListens++;
             }
@@ -10791,6 +10772,43 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
         }
     }
 
+    ret = 0;
+ error:
+    VIR_FREE(listenNodes);
+    VIR_FREE(listenAddr);
+    ctxt->node = save;
+    return ret;
+}
+
+
+/* Parse the XML definition for a graphics device */
+static virDomainGraphicsDefPtr
+virDomainGraphicsDefParseXML(xmlNodePtr node,
+                             xmlXPathContextPtr ctxt,
+                             unsigned int flags)
+{
+    virDomainGraphicsDefPtr def;
+    char *type = NULL;
+
+    if (VIR_ALLOC(def) < 0)
+        return NULL;
+
+    type = virXMLPropString(node, "type");
+    if (!type) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "%s", _("missing graphics device type"));
+        goto error;
+    }
+
+    if ((def->type = virDomainGraphicsTypeFromString(type)) < 0) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("unknown graphics device type '%s'"), type);
+        goto error;
+    }
+
+    if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0)
+        goto error;
+
     if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
         char *port = virXMLPropString(node, "port");
         char *websocket = virXMLPropString(node, "websocket");
@@ -11241,10 +11259,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
 
  cleanup:
     VIR_FREE(type);
-    VIR_FREE(listenNodes);
-    VIR_FREE(listenAddr);
 
-    ctxt->node = save;
     return def;
 
  error: