提交 dccb2629 编写于 作者: J Jiri Denemark

qemu: Separate formatting from saving into caps cache

We will need to use the formatter directly for testing QEMU capabilities
code.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 800c98af
......@@ -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, "<qemuCaps>\n");
virBufferAdjustIndent(&buf, 2);
virBufferAsprintf(&buf, "<qemuctime>%llu</qemuctime>\n",
(long long)qemuCaps->ctime);
(long long) qemuCaps->ctime);
virBufferAsprintf(&buf, "<selfctime>%llu</selfctime>\n",
(long long)virGetSelfLastChanged());
(long long) selfCTime);
virBufferAsprintf(&buf, "<selfvers>%lu</selfvers>\n",
(unsigned long)LIBVIR_VERSION_NUMBER);
(unsigned long) selfVersion);
if (qemuCaps->usedQMP)
virBufferAddLit(&buf, "<usedQMP/>\n");
......@@ -3094,10 +3095,22 @@ virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename)
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</qemuCaps>\n");
if (virBufferCheckError(&buf) < 0)
goto cleanup;
if (virBufferCheckError(&buf) == 0)
ret = virBufferContentAndReset(&buf);
return ret;
}
static int
virQEMUCapsSaveCache(virQEMUCapsPtr qemuCaps, const char *filename)
{
char *xml = NULL;
int ret = -1;
xml = virBufferContentAndReset(&buf);
xml = virQEMUCapsFormatCache(qemuCaps,
virGetSelfLastChanged(),
LIBVIR_VERSION_NUMBER);
if (virFileWriteStr(filename, xml, 0600) < 0) {
virReportSystemError(errno,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册