From 93e9ab125bced1374c7d4a03e5bd11a0dc1b2968 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Wed, 30 Dec 2020 19:39:43 +0100 Subject: Skipped empty XML document storage. --- src/common/xml.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/common/xml.c b/src/common/xml.c index 82bb3ac..90c86cd 100644 --- a/src/common/xml.c +++ b/src/common/xml.c @@ -31,10 +31,12 @@ #include #include #include +#include #include "cpp.h" #include "extstr.h" +#include "pathname.h" #ifdef DEBUG @@ -128,11 +130,32 @@ bool load_xml_from_memory(const char *content, size_t length, xmlDocPtr *xdoc, x bool save_xml_file(xmlDocPtr xdoc, const char *filename) { + bool result; /* Bilan à retourner */ int ret; /* Bilan de l'appel */ - ret = xmlSaveFormatFileEnc(filename, xdoc, "UTF-8", 1); + /** + * Le parti est pris de ne pas enregistrer de document vide ! + */ + + if (xmlDocGetRootElement(xdoc) == NULL) + { + ret = unlink(filename); + result = (ret == 0); + } + + else + { + result = mkpath(filename); + if (!result) goto exit; - return (ret != -1); + ret = xmlSaveFormatFileEnc(filename, xdoc, "UTF-8", 1); + result = (ret != -1); + + } + + exit: + + return result; } -- cgit v0.11.2-87-g4458