Refactor the code to use modern XML formatting approach.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/snapshot_conf.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index f896fd1cf2..757af681cd 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -772,33 +772,30 @@ virDomainSnapshotDiskDefFormat(virBufferPtr buf,
virDomainSnapshotDiskDefPtr disk,
virDomainXMLOptionPtr xmlopt)
{
- int type = disk->src->type;
+ g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
+ g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
if (!disk->name)
return 0;
- virBufferEscapeString(buf, "<disk name='%s'", disk->name);
+ virBufferEscapeString(&attrBuf, " name='%s'", disk->name);
if (disk->snapshot > 0)
- virBufferAsprintf(buf, " snapshot='%s'",
+ virBufferAsprintf(&attrBuf, " snapshot='%s'",
virDomainSnapshotLocationTypeToString(disk->snapshot));
- if (!disk->src->path && disk->src->format == 0) {
- virBufferAddLit(buf, "/>\n");
- return 0;
- }
+ if (disk->src->path || disk->src->format != 0) {
+ virBufferAsprintf(&attrBuf, " type='%s'",
virStorageTypeToString(disk->src->type));
- virBufferAsprintf(buf, " type='%s'>\n",
virStorageTypeToString(type));
- virBufferAdjustIndent(buf, 2);
+ if (disk->src->format > 0)
+ virBufferEscapeString(&childBuf, "<driver
type='%s'/>\n",
+
virStorageFileFormatTypeToString(disk->src->format));
- if (disk->src->format > 0)
- virBufferEscapeString(buf, "<driver type='%s'/>\n",
-
virStorageFileFormatTypeToString(disk->src->format));
- if (virDomainDiskSourceFormat(buf, disk->src, "source", 0, false, 0,
- false, false, xmlopt) < 0)
+ if (virDomainDiskSourceFormat(&childBuf, disk->src, "source", 0,
false, 0,
+ false, false, xmlopt) < 0)
return -1;
+ }
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, "</disk>\n");
+ virXMLFormatElement(buf, "disk", &attrBuf, &childBuf);
return 0;
}
--
2.29.2