From: Peter Krempa <[email protected]> 'libxml2' deprecated the 'xmlIndentTreeOutput' thread-local variable as well as the 'xmlThrDefIndentTreeOutput' function for setting the global default, which we use in our code for formatting the metadata sub-XML.
'libxml2' also for now doesn't provide a way to set target indentation level in 'xmlSaveCtxt' which would allow us to use the modern output APIs, we can't replace our use of 'xmlDumpNode'. Since the indentation is enabled by default in libxml2 and most of our code using xmlDumpNode (notably except for the 'test' driver and embedded qemu driver uses) is in standalone processes, which didn't change the default, just removing the override will result in identical behaviour. For the two exeptions, the result of changing the default would be that the <metadata> part would be un-indented, but that is still valid XML. Thus to fix the deprecated use just stop setting 'xmlIndentTreeOutput'. Closes: https://gitlab.com/libvirt/libvirt/-/issues/816 Signed-off-by: Peter Krempa <[email protected]> --- src/util/virxml.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/util/virxml.c b/src/util/virxml.c index 44f11accf3..77c7b5a8f4 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -1920,23 +1920,14 @@ virXMLFormatMetadata(virBuffer *buf, { g_autoptr(xmlBuffer) xmlbuf = NULL; const char *xmlbufContent = NULL; - int oldIndentTreeOutput = xmlIndentTreeOutput; if (!metadata) return 0; - /* Indentation on output requires that we previously set - * xmlKeepBlanksDefault to 0 when parsing; also, libxml does 2 - * spaces per level of indentation of intermediate elements, - * but no leading indentation before the starting element. - * Thankfully, libxml maps what looks like globals into - * thread-local uses, so we are thread-safe. */ - xmlIndentTreeOutput = 1; xmlbuf = virXMLBufferCreate(); if (xmlNodeDump(xmlbuf, metadata->doc, metadata, virBufferGetIndent(buf) / 2, 1) < 0) { - xmlIndentTreeOutput = oldIndentTreeOutput; virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unable to format metadata element")); return -1; @@ -1948,7 +1939,6 @@ virXMLFormatMetadata(virBuffer *buf, virSkipSpaces(&xmlbufContent); virBufferAsprintf(buf, "%s\n", xmlbufContent); - xmlIndentTreeOutput = oldIndentTreeOutput; return 0; } -- 2.51.1
