From ee3f790a24ec16308e016f9e7dc1cc5e29a6a525 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 21 Nov 2023 10:40:36 +0100 Subject: [PATCH 3/8] vbox_snapshot_conf: Keep indent in snapshot XML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As mentioned in previous commit, VirtualBox has its own snapshot XML which we parse, change and then format back. During this, we ought to keep the indentation to produce better looking result (especially when we want to compare the output in tests later on, like we do in vboxsnapshotxmltest). Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko (cherry picked from commit d1f58b10f687050dd097c5a60becf62c35deee68) --- src/vbox/vbox_snapshot_conf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vbox/vbox_snapshot_conf.c b/src/vbox/vbox_snapshot_conf.c index 467255f77f..89cd685954 100644 --- a/src/vbox/vbox_snapshot_conf.c +++ b/src/vbox/vbox_snapshot_conf.c @@ -25,6 +25,7 @@ #include "virstring.h" #include "virxml.h" +#include #include #define VIR_FROM_THIS VIR_FROM_VBOX @@ -364,12 +365,11 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node, xmlParserErrors parseError = XML_ERR_OK; char *uuid = NULL; char *timeStamp = NULL; - g_auto(GStrv) firstRegex = NULL; int firstRegexResult = 0; g_auto(GStrv) secondRegex = NULL; int secondRegexResult = 0; - const int parseFlags = XML_PARSE_NONET; + const int parseFlags = XML_PARSE_NONET | XML_PARSE_NOBLANKS; uuid = g_strdup_printf("{%s}", snapshot->uuid); @@ -940,12 +940,14 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachine *machine, xmlParserErrors parseError = XML_ERR_OK; char *currentSnapshot = NULL; char *timeStamp = NULL; - g_auto(GStrv) firstRegex = NULL; int firstRegexResult = 0; g_auto(GStrv) secondRegex = NULL; int secondRegexResult = 0; - const int parseFlags = XML_PARSE_NONET; + const int parseFlags = XML_PARSE_NONET | XML_PARSE_NOBLANKS; + int oldIndentTreeOutput = xmlIndentTreeOutput; + + xmlIndentTreeOutput = 1; if (machine == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -1127,6 +1129,8 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachine *machine, ret = 0; cleanup: + xmlIndentTreeOutput = oldIndentTreeOutput; + VIR_FREE(currentSnapshot); VIR_FREE(timeStamp); -- 2.43.0