[libvirt] [PATCH 12/14] snapshot: indent domain xml when nesting, round 12

Eric Blake eblake at redhat.com
Thu Sep 22 20:42:48 UTC 2011


All character-like devices.

* src/conf/domain_conf.c (virDomainSmartcardDefFormat)
(virDomainChrSourceDefFormat, virDomainChrDefFormat)
(virDomainRedirdevDefFormat): Alter signature.
(virDomainDefFormatInternal): Adjust caller.
---
 src/conf/domain_conf.c |  104 +++++++++++++++++++++++++++---------------------
 1 files changed, 58 insertions(+), 46 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 64bb337..16feb27 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9590,6 +9590,7 @@ static int
 virDomainChrSourceDefFormat(virBufferPtr buf,
                             virDomainChrSourceDefPtr def,
                             bool tty_compat,
+                            int indent,
                             unsigned int flags)
 {
     const char *type = virDomainChrTypeToString(def->type);
@@ -9600,7 +9601,7 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
         return -1;
     }

-    /* Compat with legacy  <console tty='/dev/pts/5'/> syntax */
+    /* Compat with legacy <console tty='/dev/pts/5'/> syntax */
     virBufferAsprintf(buf, " type='%s'", type);
     if (tty_compat) {
         virBufferEscapeString(buf, " tty='%s'",
@@ -9623,8 +9624,9 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
         if (def->type != VIR_DOMAIN_CHR_TYPE_PTY ||
             (def->data.file.path &&
              !(flags & VIR_DOMAIN_XML_INACTIVE))) {
-            virBufferEscapeString(buf, "      <source path='%s'/>\n",
-                                  def->data.file.path);
+            virBufferIndentEscapeString(buf, indent + 2,
+                                        "<source path='%s'/>\n",
+                                        def->data.file.path);
         }
         break;

@@ -9632,48 +9634,49 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
         if (def->data.udp.bindService &&
             def->data.udp.bindHost) {
             virBufferAsprintf(buf,
-                              "      <source mode='bind' host='%s' "
-                              "service='%s'/>\n",
+                              "%*s<source mode='bind' host='%s' "
+                              "service='%s'/>\n", indent + 2, "",
                               def->data.udp.bindHost,
                               def->data.udp.bindService);
         } else if (def->data.udp.bindHost) {
-            virBufferAsprintf(buf, "      <source mode='bind' host='%s'/>\n",
-                              def->data.udp.bindHost);
+            virBufferAsprintf(buf, "%*s<source mode='bind' host='%s'/>\n",
+                              indent + 2, "", def->data.udp.bindHost);
         } else if (def->data.udp.bindService) {
-            virBufferAsprintf(buf, "      <source mode='bind' service='%s'/>\n",
-                              def->data.udp.bindService);
+            virBufferAsprintf(buf, "%*s<source mode='bind' service='%s'/>\n",
+                              indent + 2, "", def->data.udp.bindService);
         }

         if (def->data.udp.connectService &&
             def->data.udp.connectHost) {
             virBufferAsprintf(buf,
-                              "      <source mode='connect' host='%s' "
-                              "service='%s'/>\n",
+                              "%*s<source mode='connect' host='%s' "
+                              "service='%s'/>\n", indent + 2, "",
                               def->data.udp.connectHost,
                               def->data.udp.connectService);
         } else if (def->data.udp.connectHost) {
-            virBufferAsprintf(buf, "      <source mode='connect' host='%s'/>\n",
-                              def->data.udp.connectHost);
+            virBufferAsprintf(buf, "%*s<source mode='connect' host='%s'/>\n",
+                              indent + 2, "", def->data.udp.connectHost);
         } else if (def->data.udp.connectService) {
             virBufferAsprintf(buf,
-                              "      <source mode='connect' service='%s'/>\n",
-                              def->data.udp.connectService);
+                              "%*s<source mode='connect' service='%s'/>\n",
+                              indent + 2, "", def->data.udp.connectService);
         }
         break;

     case VIR_DOMAIN_CHR_TYPE_TCP:
         virBufferAsprintf(buf,
-                          "      <source mode='%s' host='%s' service='%s'/>\n",
+                          "%*s<source mode='%s' host='%s' service='%s'/>\n",
+                          indent + 2, "",
                           def->data.tcp.listen ? "bind" : "connect",
                           def->data.tcp.host,
                           def->data.tcp.service);
-        virBufferAsprintf(buf, "      <protocol type='%s'/>\n",
+        virBufferAsprintf(buf, "%*s<protocol type='%s'/>\n", indent + 2, "",
                           virDomainChrTcpProtocolTypeToString(
                               def->data.tcp.protocol));
         break;

     case VIR_DOMAIN_CHR_TYPE_UNIX:
-        virBufferAsprintf(buf, "      <source mode='%s'",
+        virBufferAsprintf(buf, "%*s<source mode='%s'", indent + 2, "",
                           def->data.nix.listen ? "bind" : "connect");
         virBufferEscapeString(buf, " path='%s'/>\n",
                               def->data.nix.path);
@@ -9686,6 +9689,7 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
 static int
 virDomainChrDefFormat(virBufferPtr buf,
                       virDomainChrDefPtr def,
+                      int indent,
                       unsigned int flags)
 {
     const char *elementName = virDomainChrDeviceTypeToString(def->deviceType);
@@ -9702,13 +9706,14 @@ virDomainChrDefFormat(virBufferPtr buf,
         return -1;
     }

-    virBufferAsprintf(buf, "    <%s", elementName);
+    virBufferAsprintf(buf, "%*s<%s", indent, "", elementName);
     tty_compat = (def->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
                   def->target.port == 0 &&
                   def->source.type == VIR_DOMAIN_CHR_TYPE_PTY &&
                   !(flags & VIR_DOMAIN_XML_INACTIVE) &&
                   def->source.data.file.path);
-    if (virDomainChrSourceDefFormat(buf, &def->source, tty_compat, flags) < 0)
+    if (virDomainChrSourceDefFormat(buf, &def->source, tty_compat, indent,
+                                    flags) < 0)
         return -1;

     /* Format <target> block */
@@ -9719,7 +9724,8 @@ virDomainChrDefFormat(virBufferPtr buf,
                                  _("Could not format channel target type"));
             return -1;
         }
-        virBufferAsprintf(buf, "      <target type='%s'", targetType);
+        virBufferAsprintf(buf, "%*s<target type='%s'", indent + 2, "",
+                          targetType);

         switch (def->targetType) {
         case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: {
@@ -9754,25 +9760,25 @@ virDomainChrDefFormat(virBufferPtr buf,

     case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
         virBufferAsprintf(buf,
-                          "      <target type='%s' port='%d'/>\n",
+                          "%*s<target type='%s' port='%d'/>\n",
+                          indent + 2, "",
                           virDomainChrTargetTypeToString(def->deviceType,
                                                          def->targetType),
                           def->target.port);
         break;

     default:
-        virBufferAsprintf(buf, "      <target port='%d'/>\n",
+        virBufferAsprintf(buf, "%*s<target port='%d'/>\n", indent + 2, "",
                           def->target.port);
         break;
     }

     if (virDomainDeviceInfoIsSet(&def->info, flags)) {
-        if (virDomainDeviceInfoFormat(buf, &def->info, 6, flags) < 0)
+        if (virDomainDeviceInfoFormat(buf, &def->info, indent + 2, flags) < 0)
             return -1;
     }

-    virBufferAsprintf(buf, "    </%s>\n",
-                      elementName);
+    virBufferAsprintf(buf, "%*s</%s>\n", indent, "", elementName);

     return ret;
 }
@@ -9780,6 +9786,7 @@ virDomainChrDefFormat(virBufferPtr buf,
 static int
 virDomainSmartcardDefFormat(virBufferPtr buf,
                             virDomainSmartcardDefPtr def,
+                            int indent,
                             unsigned int flags)
 {
     const char *mode = virDomainSmartcardTypeToString(def->type);
@@ -9791,7 +9798,7 @@ virDomainSmartcardDefFormat(virBufferPtr buf,
         return -1;
     }

-    virBufferAsprintf(buf, "    <smartcard mode='%s'", mode);
+    virBufferAsprintf(buf, "%*s<smartcard mode='%s'", indent, "", mode);
     switch (def->type) {
     case VIR_DOMAIN_SMARTCARD_TYPE_HOST:
         if (!virDomainDeviceInfoIsSet(&def->info, flags)) {
@@ -9804,16 +9811,17 @@ virDomainSmartcardDefFormat(virBufferPtr buf,
     case VIR_DOMAIN_SMARTCARD_TYPE_HOST_CERTIFICATES:
         virBufferAddLit(buf, ">\n");
         for (i = 0; i < VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES; i++)
-            virBufferEscapeString(buf, "      <certificate>%s</certificate>\n",
-                                  def->data.cert.file[i]);
-        if (def->data.cert.database)
-            virBufferEscapeString(buf, "      <database>%s</database>\n",
-                                  def->data.cert.database);
+            virBufferIndentEscapeString(buf, indent + 2,
+                                        "<certificate>%s</certificate>\n",
+                                        def->data.cert.file[i]);
+        virBufferIndentEscapeString(buf, indent + 2,
+                                    "<database>%s</database>\n",
+                                    def->data.cert.database);
         break;

     case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH:
         if (virDomainChrSourceDefFormat(buf, &def->data.passthru, false,
-                                        flags) < 0)
+                                        indent, flags) < 0)
             return -1;
         break;

@@ -9822,9 +9830,9 @@ virDomainSmartcardDefFormat(virBufferPtr buf,
                              _("unexpected smartcard type %d"), def->type);
         return -1;
     }
-    if (virDomainDeviceInfoFormat(buf, &def->info, 6, flags) < 0)
+    if (virDomainDeviceInfoFormat(buf, &def->info, indent + 2, flags) < 0)
         return -1;
-    virBufferAddLit(buf, "    </smartcard>\n");
+    virBufferIndentAddLit(buf, indent, "</smartcard>\n");
     return 0;
 }

@@ -10412,18 +10420,20 @@ virDomainHostdevDefFormat(virBufferPtr buf,
 static int
 virDomainRedirdevDefFormat(virBufferPtr buf,
                            virDomainRedirdevDefPtr def,
+                           int indent,
                            unsigned int flags)
 {
     const char *bus;

     bus = virDomainRedirdevBusTypeToString(def->bus);

-    virBufferAsprintf(buf, "    <redirdev bus='%s'", bus);
-    if (virDomainChrSourceDefFormat(buf, &def->source.chr, false, flags) < 0)
+    virBufferAsprintf(buf, "%*s<redirdev bus='%s'", indent, "", bus);
+    if (virDomainChrSourceDefFormat(buf, &def->source.chr, false, indent,
+                                    flags) < 0)
         return -1;
-    if (virDomainDeviceInfoFormat(buf, &def->info, 6, flags) < 0)
+    if (virDomainDeviceInfoFormat(buf, &def->info, indent + 2, flags) < 0)
         return -1;
-    virBufferAddLit(buf, "    </redirdev>\n");
+    virBufferIndentAddLit(buf, indent, "</redirdev>\n");

     return 0;
 }
@@ -10805,20 +10815,21 @@ virDomainDefFormatInternal(virDomainDefPtr def,
             goto cleanup;

     for (n = 0 ; n < def->nsmartcards ; n++)
-        if (virDomainSmartcardDefFormat(buf, def->smartcards[n], flags) < 0) /* XXX indent */
+        if (virDomainSmartcardDefFormat(buf, def->smartcards[n], indent,
+                                        flags) < 0)
             goto cleanup;

     for (n = 0 ; n < def->nserials ; n++)
-        if (virDomainChrDefFormat(buf, def->serials[n], flags) < 0) /* XXX indent */
+        if (virDomainChrDefFormat(buf, def->serials[n], indent, flags) < 0)
             goto cleanup;

     for (n = 0 ; n < def->nparallels ; n++)
-        if (virDomainChrDefFormat(buf, def->parallels[n], flags) < 0) /* XXX indent */
+        if (virDomainChrDefFormat(buf, def->parallels[n], indent, flags) < 0)
             goto cleanup;

     /* If there's a PV console that's preferred.. */
     if (def->console) {
-        if (virDomainChrDefFormat(buf, def->console, flags) < 0) /* XXX indent */
+        if (virDomainChrDefFormat(buf, def->console, indent, flags) < 0)
             goto cleanup;
     } else if (def->nserials != 0) {
         /* ..else for legacy compat duplicate the first serial device as a
@@ -10826,12 +10837,12 @@ virDomainDefFormatInternal(virDomainDefPtr def,
         virDomainChrDef console;
         memcpy(&console, def->serials[0], sizeof(console));
         console.deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE;
-        if (virDomainChrDefFormat(buf, &console, flags) < 0) /* XXX indent */
+        if (virDomainChrDefFormat(buf, &console, indent, flags) < 0)
             goto cleanup;
     }

     for (n = 0 ; n < def->nchannels ; n++)
-        if (virDomainChrDefFormat(buf, def->channels[n], flags) < 0) /* XXX indent */
+        if (virDomainChrDefFormat(buf, def->channels[n], indent, flags) < 0)
             goto cleanup;

     for (n = 0 ; n < def->ninputs ; n++)
@@ -10869,7 +10880,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
             goto cleanup;

     for (n = 0 ; n < def->nredirdevs ; n++)
-        if (virDomainRedirdevDefFormat(buf, def->redirdevs[n], flags) < 0) /* XXX indent */
+        if (virDomainRedirdevDefFormat(buf, def->redirdevs[n], indent,
+                                       flags) < 0)
             goto cleanup;

     for (n = 0 ; n < def->nhubs ; n++)
-- 
1.7.4.4




More information about the libvir-list mailing list