[PATCH 2/6] vbox_snapshot_conf: Keep indent in snapshot XML

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
 src/vbox/vbox_snapshot_conf.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/vbox/vbox_snapshot_conf.c b/src/vbox/vbox_snapshot_conf.c
index 467255f77f..9a10b08c3c 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 <libxml/xmlsave.h>
 #include <libxml/xpathInternals.h>
 
 #define VIR_FROM_THIS VIR_FROM_VBOX
@@ -364,12 +365,14 @@ 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;
+    int oldIndentTreeOutput = xmlIndentTreeOutput;
+
+    xmlIndentTreeOutput = 1;
 
     uuid = g_strdup_printf("{%s}", snapshot->uuid);
 
@@ -440,6 +443,8 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
     result = 0;
 
  cleanup:
+    xmlIndentTreeOutput = oldIndentTreeOutput;
+
     if (result < 0) {
         xmlFreeNode(descriptionNode);
         xmlUnlinkNode(snapshotsNode);
@@ -940,12 +945,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 +1134,8 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachine *machine,
     ret = 0;
 
  cleanup:
+    xmlIndentTreeOutput = oldIndentTreeOutput;
+
     VIR_FREE(currentSnapshot);
     VIR_FREE(timeStamp);
 
-- 
2.41.0
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux