[libvirt] [PATCH 6/8] conf: split out snapshot disk XML formatting

Ján Tomko jtomko at redhat.com
Thu May 16 11:07:37 UTC 2013


Just to reduce the indentation levels. Remove the unneeded
NULL check for disk->file, as virBufferEscapeString doesn't
print anything with NULL arguments.
---
 src/conf/snapshot_conf.c | 53 ++++++++++++++++++++++++++----------------------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index 5b54a28..324b07f 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -552,6 +552,33 @@ cleanup:
     return ret;
 }
 
+static void
+virDomainSnapshotDiskDefFormat(virBufferPtr buf,
+                               virDomainSnapshotDiskDefPtr disk)
+{
+    if (!disk->name)
+        return;
+
+    virBufferEscapeString(buf, "    <disk name='%s'", disk->name);
+    if (disk->snapshot > 0)
+        virBufferAsprintf(buf, " snapshot='%s'",
+                          virDomainSnapshotLocationTypeToString(disk->snapshot));
+    if (!disk->file && disk->format == 0) {
+        virBufferAddLit(buf, "/>\n");
+        return;
+    }
+
+    virBufferAddLit(buf, ">\n");
+
+    virBufferAdjustIndent(buf, 6);
+    if (disk->format > 0)
+        virBufferEscapeString(buf, "<driver type='%s'/>\n",
+                              virStorageFileFormatTypeToString(disk->format));
+    virBufferEscapeString(buf, "<source file='%s'/>\n", disk->file);
+    virBufferAdjustIndent(buf, -6);
+    virBufferAddLit(buf, "    </disk>\n");
+}
+
 char *virDomainSnapshotDefFormat(const char *domain_uuid,
                                  virDomainSnapshotDefPtr def,
                                  unsigned int flags,
@@ -587,30 +614,8 @@ char *virDomainSnapshotDefFormat(const char *domain_uuid,
     }
     if (def->ndisks) {
         virBufferAddLit(&buf, "  <disks>\n");
-        for (i = 0; i < def->ndisks; i++) {
-            virDomainSnapshotDiskDefPtr disk = &def->disks[i];
-
-            if (!disk->name)
-                continue;
-
-            virBufferEscapeString(&buf, "    <disk name='%s'", disk->name);
-            if (disk->snapshot)
-                virBufferAsprintf(&buf, " snapshot='%s'",
-                                  virDomainSnapshotLocationTypeToString(disk->snapshot));
-            if (disk->file || disk->format > 0) {
-                virBufferAddLit(&buf, ">\n");
-                if (disk->format > 0)
-                    virBufferEscapeString(&buf, "      <driver type='%s'/>\n",
-                                          virStorageFileFormatTypeToString(
-                                              disk->format));
-                if (disk->file)
-                    virBufferEscapeString(&buf, "      <source file='%s'/>\n",
-                                          disk->file);
-                virBufferAddLit(&buf, "    </disk>\n");
-            } else {
-                virBufferAddLit(&buf, "/>\n");
-            }
-        }
+        for (i = 0; i < def->ndisks; i++)
+            virDomainSnapshotDiskDefFormat(&buf, &def->disks[i]);
         virBufferAddLit(&buf, "  </disks>\n");
     }
     if (def->dom) {
-- 
1.8.1.5




More information about the libvir-list mailing list