]> xenbits.xensource.com Git - libvirt.git/commitdiff
vbox_snapshot_conf: Keep indent in snapshot XML
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 21 Nov 2023 09:40:36 +0000 (10:40 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 21 Nov 2023 13:43:29 +0000 (14:43 +0100)
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 <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/vbox/vbox_snapshot_conf.c

index 467255f77f4321dd8d5b1438f12acbe25d31dcd6..89cd685954524f5447a8f74d4850c00c2f5a9249 100644 (file)
@@ -25,6 +25,7 @@
 #include "virstring.h"
 #include "virxml.h"
 
+#include <libxml/xmlsave.h>
 #include <libxml/xpathInternals.h>
 
 #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);