It basically implements almost the same thing, so we can replace it with
existing helpers with a few tweaks.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/util/virsysinfo.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 0a622dbbf9..6e7e221f00 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -1481,20 +1481,19 @@ virSysinfoOEMStringsFormat(virBufferPtr buf,
virSysinfoOEMStringsDefPtr def)
int
virSysinfoFormat(virBufferPtr buf, virSysinfoDefPtr def)
{
+ virBuffer attrBuf = VIR_BUFFER_INITIALIZER;
virBuffer childrenBuf = VIR_BUFFER_INITIALIZER;
const char *type = virSysinfoTypeToString(def->type);
- int indent = virBufferGetIndent(buf, false);
- int ret = -1;
if (!type) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected sysinfo type model %d"),
def->type);
virBufferFreeAndReset(buf);
- goto cleanup;
+ return -1;
}
- virBufferAdjustIndent(&childrenBuf, indent + 2);
+ virBufferSetChildIndent(&childrenBuf, buf);
virSysinfoBIOSFormat(&childrenBuf, def->bios);
virSysinfoSystemFormat(&childrenBuf, def->system);
@@ -1504,22 +1503,17 @@ virSysinfoFormat(virBufferPtr buf, virSysinfoDefPtr def)
virSysinfoMemoryFormat(&childrenBuf, def);
virSysinfoOEMStringsFormat(&childrenBuf, def->oemStrings);
- virBufferAsprintf(buf, "<sysinfo type='%s'", type);
- if (virBufferUse(&childrenBuf)) {
- virBufferAddLit(buf, ">\n");
- virBufferAddBuffer(buf, &childrenBuf);
- virBufferAddLit(buf, "</sysinfo>\n");
- } else {
- virBufferAddLit(buf, "/>\n");
+ virBufferAsprintf(&attrBuf, " type='%s'", type);
+
+ if (virXMLFormatElement(buf, "sysinfo", &attrBuf, &childrenBuf)
< 0) {
+ virBufferFreeAndReset(buf);
+ return -1;
}
if (virBufferCheckError(buf) < 0)
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- virBufferFreeAndReset(&childrenBuf);
- return ret;
+ return 0;
}
#define CHECK_FIELD(name, desc) \
--
2.21.0