From: Peter Krempa Date: Tue, 5 Mar 2019 12:48:20 +0000 (+0100) Subject: conf: Refactor formating of 'capabilities' features X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4653ae65af0bc56473ac0fb6d1ac01449d5f5221;p=libvirt.git conf: Refactor formating of 'capabilities' features 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 --- 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: