From 4653ae65af0bc56473ac0fb6d1ac01449d5f5221 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 5 Mar 2019 13:48:20 +0100 Subject: [PATCH] conf: Refactor formating of 'capabilities' features MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Ján Tomko --- 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, "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, "\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.39.5