Well, not that we are not formatting invalid XML, rather than not as beautiful as we can: <cpu mode='host-passthrough'> </cpu> If there are no children, let's use the singleton element. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/conf/cpu_conf.c | 19 +++++++++++++------ .../qemuxml2argv-cpu-host-kvmclock.xml | 3 +-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index 9a430ef..1a35185 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -556,6 +556,8 @@ virCPUDefFormatBufFull(virBufferPtr buf, bool updateCPU) { int ret = -1; + virBuffer childrenBuf = VIR_BUFFER_INITIALIZER; + int indent = virBufferGetIndent(buf, false); if (!def) return 0; @@ -585,20 +587,25 @@ virCPUDefFormatBufFull(virBufferPtr buf, virBufferAsprintf(buf, " match='%s'", tmp); } } - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); + virBufferAdjustIndent(&childrenBuf, indent + 2); if (def->arch) - virBufferAsprintf(buf, "<arch>%s</arch>\n", + virBufferAsprintf(&childrenBuf, "<arch>%s</arch>\n", virArchToString(def->arch)); - if (virCPUDefFormatBuf(buf, def, updateCPU) < 0) + if (virCPUDefFormatBuf(&childrenBuf, def, updateCPU) < 0) goto cleanup; - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "</cpu>\n"); + if (virBufferUse(&childrenBuf)) { + virBufferAddLit(buf, ">\n"); + virBufferAddBuffer(buf, &childrenBuf); + virBufferAddLit(buf, "</cpu>\n"); + } else { + virBufferAddLit(buf, "/>\n"); + } ret = 0; cleanup: + virBufferFreeAndReset(&childrenBuf); return ret; } diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml index 89153a5..8954278 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml @@ -8,8 +8,7 @@ <type arch='x86_64' machine='pc'>hvm</type> <boot dev='network'/> </os> - <cpu mode='host-passthrough'> - </cpu> + <cpu mode='host-passthrough'/> <clock offset='utc'> <timer name='kvmclock' present='no'/> </clock> -- 2.0.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list