[PATCH 19/23] conf: Refactor formating of 'capabilities' features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Use virXMLFormatElement for the formatting which allows us to avoid
looking through the array to see if any feature is enabled.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/conf/domain_conf.c | 31 ++++++++++++-------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 90aa02a7ea..beabbace94 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -27928,30 +27928,23 @@ virDomainDefFormatFeatures(virBufferPtr buf,
             break;

         case VIR_DOMAIN_FEATURE_CAPABILITIES:
-            if (def->features[i] == VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT &&
-                !virDomainDefHasCapabilitiesFeatures(def)) {
-                break;
-            }
+            virBufferSetChildIndent(&tmpChildBuf, buf);

-            virBufferAsprintf(buf, "<capabilities policy='%s'",
-                              virDomainCapabilitiesPolicyTypeToString(def->features[i]));
-
-            if (!virDomainDefHasCapabilitiesFeatures(def)) {
-                virBufferAddLit(buf, "/>\n");
-                break;
-            } else {
-                virBufferAddLit(buf, ">\n");
-            }
-            virBufferAdjustIndent(buf, 2);
             for (j = 0; j < VIR_DOMAIN_CAPS_FEATURE_LAST; j++) {
                 if (def->caps_features[j] != VIR_TRISTATE_SWITCH_ABSENT)
-                    virBufferAsprintf(buf, "<%s state='%s'/>\n",
+                    virBufferAsprintf(&tmpChildBuf, "<%s state='%s'/>\n",
                                       virDomainCapsFeatureTypeToString(j),
-                                      virTristateSwitchTypeToString(
-                                          def->caps_features[j]));
+                                      virTristateSwitchTypeToString(def->caps_features[j]));
             }
-            virBufferAdjustIndent(buf, -2);
-            virBufferAddLit(buf, "</capabilities>\n");
+
+            /* the 'default' policy should be printed if any capability is present */
+            if (def->features[i] != VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT ||
+                virBufferUse(&tmpChildBuf))
+                virBufferAsprintf(&tmpAttrBuf, " policy='%s'",
+                                  virDomainCapabilitiesPolicyTypeToString(def->features[i]));
+
+            if (virXMLFormatElement(buf, "capabilities", &tmpAttrBuf, &tmpChildBuf) < 0)
+                return -1;
             break;

         case VIR_DOMAIN_FEATURE_GIC:
-- 
2.20.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux