qemu: Separate formatting from saving into caps cache

We will need to use the formatter directly for testing QEMU capabilities
code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Jiri Denemark 2016-04-28 14:59:15 +02:00
parent 800c98af6f
commit dccb2629c3
1 changed files with 23 additions and 10 deletions

View File

@ -3019,23 +3019,24 @@ virQEMUCapsLoadCache(virQEMUCapsPtr qemuCaps, const char *filename,
} }
static int static char *
virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename) virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps,
time_t selfCTime,
unsigned long selfVersion)
{ {
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
char *xml = NULL; char *ret = NULL;
int ret = -1;
size_t i; size_t i;
virBufferAddLit(&buf, "<qemuCaps>\n"); virBufferAddLit(&buf, "<qemuCaps>\n");
virBufferAdjustIndent(&buf, 2); virBufferAdjustIndent(&buf, 2);
virBufferAsprintf(&buf, "<qemuctime>%llu</qemuctime>\n", virBufferAsprintf(&buf, "<qemuctime>%llu</qemuctime>\n",
(long long)qemuCaps->ctime); (long long) qemuCaps->ctime);
virBufferAsprintf(&buf, "<selfctime>%llu</selfctime>\n", virBufferAsprintf(&buf, "<selfctime>%llu</selfctime>\n",
(long long)virGetSelfLastChanged()); (long long) selfCTime);
virBufferAsprintf(&buf, "<selfvers>%lu</selfvers>\n", virBufferAsprintf(&buf, "<selfvers>%lu</selfvers>\n",
(unsigned long)LIBVIR_VERSION_NUMBER); (unsigned long) selfVersion);
if (qemuCaps->usedQMP) if (qemuCaps->usedQMP)
virBufferAddLit(&buf, "<usedQMP/>\n"); virBufferAddLit(&buf, "<usedQMP/>\n");
@ -3094,10 +3095,22 @@ virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename)
virBufferAdjustIndent(&buf, -2); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</qemuCaps>\n"); virBufferAddLit(&buf, "</qemuCaps>\n");
if (virBufferCheckError(&buf) < 0) if (virBufferCheckError(&buf) == 0)
goto cleanup; 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) { if (virFileWriteStr(filename, xml, 0600) < 0) {
virReportSystemError(errno, virReportSystemError(errno,