]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: use virXMLFormatElement in virDomainDiskDefFormatMirror
authorPeter Krempa <pkrempa@redhat.com>
Thu, 21 Mar 2019 07:28:35 +0000 (08:28 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 3 Apr 2019 09:58:09 +0000 (11:58 +0200)
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c

index 82473d11570606ed171ea207397a87f79d998123..c8e515abd4c6640df10b586d20a036b89082a025 100644 (file)
@@ -24007,8 +24007,12 @@ virDomainDiskDefFormatMirror(virBufferPtr buf,
                              unsigned int flags,
                              virDomainXMLOptionPtr xmlopt)
 {
+    VIR_AUTOCLEAN(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
+    VIR_AUTOCLEAN(virBuffer) childBuf = VIR_BUFFER_INITIALIZER;
     const char *formatStr = NULL;
 
+    virBufferSetChildIndent(&childBuf, buf);
+
     /* For now, mirroring is currently output-only: we only output it
      * for live domains, therefore we ignore it on input except for
      * the internal parse on libvirtd restart.  We prefer to output
@@ -24022,28 +24026,25 @@ virDomainDiskDefFormatMirror(virBufferPtr buf,
 
     if (disk->mirror->format)
         formatStr = virStorageFileFormatTypeToString(disk->mirror->format);
-    virBufferAsprintf(buf, "<mirror type='%s'",
+    virBufferAsprintf(&attrBuf, " type='%s'",
                       virStorageTypeToString(disk->mirror->type));
     if (disk->mirror->type == VIR_STORAGE_TYPE_FILE &&
         disk->mirrorJob == VIR_DOMAIN_BLOCK_JOB_TYPE_COPY) {
-        virBufferEscapeString(buf, " file='%s'", disk->mirror->path);
-        virBufferEscapeString(buf, " format='%s'", formatStr);
+        virBufferEscapeString(&attrBuf, " file='%s'", disk->mirror->path);
+        virBufferEscapeString(&attrBuf, " format='%s'", formatStr);
     }
-    virBufferEscapeString(buf, " job='%s'",
+    virBufferEscapeString(&attrBuf, " job='%s'",
                           virDomainBlockJobTypeToString(disk->mirrorJob));
-    if (disk->mirrorState) {
-        const char *mirror;
+    if (disk->mirrorState)
+        virBufferEscapeString(&attrBuf, " ready='%s'",
+                              virDomainDiskMirrorStateTypeToString(disk->mirrorState));
 
-        mirror = virDomainDiskMirrorStateTypeToString(disk->mirrorState);
-        virBufferEscapeString(buf, " ready='%s'", mirror);
-    }
-    virBufferAddLit(buf, ">\n");
-    virBufferAdjustIndent(buf, 2);
-    virBufferEscapeString(buf, "<format type='%s'/>\n", formatStr);
-    if (virDomainDiskSourceFormat(buf, disk->mirror, 0, false, 0, xmlopt) < 0)
+    virBufferEscapeString(&childBuf, "<format type='%s'/>\n", formatStr);
+    if (virDomainDiskSourceFormat(&childBuf, disk->mirror, 0, false, 0, xmlopt) < 0)
+        return -1;
+
+    if (virXMLFormatElement(buf, "mirror", &attrBuf, &childBuf) < 0)
         return -1;
-    virBufferAdjustIndent(buf, -2);
-    virBufferAddLit(buf, "</mirror>\n");
 
     return 0;
 }