Format the attributes in a separate buffer and only
print the element if it's not empty.
---
src/conf/domain_conf.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index af1c12e..1e694fd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -20252,6 +20252,7 @@ virDomainFSDefFormat(virBufferPtr buf,
const char *fsdriver = virDomainFSDriverTypeToString(def->fsdriver);
const char *wrpolicy = virDomainFSWrpolicyTypeToString(def->wrpolicy);
const char *src = def->src->path;
+ virBuffer driverBuf = VIR_BUFFER_INITIALIZER;
if (!type) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -20271,16 +20272,21 @@ virDomainFSDefFormat(virBufferPtr buf,
type, accessmode);
virBufferAdjustIndent(buf, 2);
if (def->fsdriver) {
- virBufferAsprintf(buf, "<driver type='%s'", fsdriver);
+ virBufferAsprintf(&driverBuf, " type='%s'", fsdriver);
if (def->format)
- virBufferAsprintf(buf, " format='%s'",
+ virBufferAsprintf(&driverBuf, " format='%s'",
virStorageFileFormatTypeToString(def->format));
/* Don't generate anything if wrpolicy is set to default */
if (def->wrpolicy)
- virBufferAsprintf(buf, " wrpolicy='%s'", wrpolicy);
+ virBufferAsprintf(&driverBuf, " wrpolicy='%s'",
wrpolicy);
+
+ }
+ if (virBufferUse(&driverBuf)) {
+ virBufferAddLit(buf, "<driver");
+ virBufferAddBuffer(buf, &driverBuf);
virBufferAddLit(buf, "/>\n");
}
--
2.7.3