diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c2ba69dade..f51923b6fd 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3019,23 +3019,24 @@ virQEMUCapsLoadCache(virQEMUCapsPtr qemuCaps, const char *filename, } -static int -virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename) +static char * +virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps, + time_t selfCTime, + unsigned long selfVersion) { virBuffer buf = VIR_BUFFER_INITIALIZER; - char *xml = NULL; - int ret = -1; + char *ret = NULL; size_t i; virBufferAddLit(&buf, "\n"); virBufferAdjustIndent(&buf, 2); virBufferAsprintf(&buf, "%llu\n", - (long long)qemuCaps->ctime); + (long long) qemuCaps->ctime); virBufferAsprintf(&buf, "%llu\n", - (long long)virGetSelfLastChanged()); + (long long) selfCTime); virBufferAsprintf(&buf, "%lu\n", - (unsigned long)LIBVIR_VERSION_NUMBER); + (unsigned long) selfVersion); if (qemuCaps->usedQMP) virBufferAddLit(&buf, "\n"); @@ -3094,10 +3095,22 @@ virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename) virBufferAdjustIndent(&buf, -2); virBufferAddLit(&buf, "\n"); - if (virBufferCheckError(&buf) < 0) - goto cleanup; + if (virBufferCheckError(&buf) == 0) + ret = virBufferContentAndReset(&buf); - xml = virBufferContentAndReset(&buf); + return ret; +} + + +static int +virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename) +{ + char *xml = NULL; + int ret = -1; + + xml = virQEMUCapsFormatCache(qemuCaps, + virGetSelfLastChanged(), + LIBVIR_VERSION_NUMBER); if (virFileWriteStr(filename, xml, 0600) < 0) { virReportSystemError(errno,