From 45ad0487564591a88299a829940719bd65308be4 Mon Sep 17 00:00:00 2001 From: Misa Date: Wed, 3 Jun 2020 09:54:05 -0700 Subject: [PATCH] Add FILESYSTEM_saveTiXml2Document() This will eventually replace FILESYSTEM_saveTiXmlDocument(). Read it as "save TinyXML2 Document", not "save TinyXML to Document". --- desktop_version/src/FileSystemUtils.cpp | 15 +++++++++++++++ desktop_version/src/FileSystemUtils.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/desktop_version/src/FileSystemUtils.cpp b/desktop_version/src/FileSystemUtils.cpp index 8ee23505..4e6d59b0 100644 --- a/desktop_version/src/FileSystemUtils.cpp +++ b/desktop_version/src/FileSystemUtils.cpp @@ -282,6 +282,21 @@ bool FILESYSTEM_loadTiXmlDocument(const char *name, TiXmlDocument *doc) return true; } +bool FILESYSTEM_saveTiXml2Document(const char *name, tinyxml2::XMLDocument& doc) +{ + /* XMLDocument.SaveFile doesn't account for Unicode paths, PHYSFS does */ + tinyxml2::XMLPrinter printer; + doc.Print(&printer); + PHYSFS_File* handle = PHYSFS_openWrite(name); + if (handle == NULL) + { + return false; + } + PHYSFS_writeBytes(handle, printer.CStr(), printer.CStrSize() - 1); // subtract one because CStrSize includes terminating null + PHYSFS_close(handle); + return true; +} + std::vector FILESYSTEM_getLevelDirFileNames() { std::vector list; diff --git a/desktop_version/src/FileSystemUtils.h b/desktop_version/src/FileSystemUtils.h index eefab861..72d1497f 100644 --- a/desktop_version/src/FileSystemUtils.h +++ b/desktop_version/src/FileSystemUtils.h @@ -5,6 +5,7 @@ #include #include "tinyxml.h" +#include "tinyxml2.h" int FILESYSTEM_init(char *argvZero, char* baseDir, char* assetsPath); void FILESYSTEM_deinit(); @@ -21,6 +22,7 @@ void FILESYSTEM_loadFileToMemory(const char *name, unsigned char **mem, void FILESYSTEM_freeMemory(unsigned char **mem); bool FILESYSTEM_saveTiXmlDocument(const char *name, TiXmlDocument *doc); bool FILESYSTEM_loadTiXmlDocument(const char *name, TiXmlDocument *doc); +bool FILESYSTEM_saveTiXml2Document(const char *name, tinyxml2::XMLDocument& doc); std::vector FILESYSTEM_getLevelDirFileNames();