From 2052edff9f9c9c686837c4ef7773ebeb31b7ff29 Mon Sep 17 00:00:00 2001 From: Jean Flach Date: Tue, 9 Feb 2016 09:38:12 +0100 Subject: [PATCH] Refactor String-Escape in repositoryutility fixes #10989 --- lib/base/configwriter.hpp | 3 +-- lib/cli/repositoryutility.cpp | 20 ++++---------------- lib/cli/repositoryutility.hpp | 1 - 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/lib/base/configwriter.hpp b/lib/base/configwriter.hpp index 7f746e6af..bc7862a48 100644 --- a/lib/base/configwriter.hpp +++ b/lib/base/configwriter.hpp @@ -73,10 +73,9 @@ public: static void EmitFunctionCall(std::ostream& fp, const String& name, const Array::Ptr& arguments); static const std::vector& GetKeywords(void); + static String EscapeIcingaString(const String& str); private: ConfigWriter(void); - - static String EscapeIcingaString(const String& str); }; } diff --git a/lib/cli/repositoryutility.cpp b/lib/cli/repositoryutility.cpp index 89f1e4bcf..3c9e49e9f 100644 --- a/lib/cli/repositoryutility.cpp +++ b/lib/cli/repositoryutility.cpp @@ -22,6 +22,7 @@ #include "base/logger.hpp" #include "base/application.hpp" #include "base/convert.hpp" +#include "base/configwriter.hpp" #include "base/scriptglobal.hpp" #include "base/json.hpp" #include "base/netstring.hpp" @@ -680,7 +681,7 @@ void RepositoryUtility::FormatChangelogEntry(std::ostream& fp, const Dictionary: */ void RepositoryUtility::SerializeObject(std::ostream& fp, const String& name, const String& type, const Dictionary::Ptr& object) { - fp << "object " << type << " \"" << EscapeIcingaString(name) << "\" {\n"; + fp << "object " << type << " \"" << ConfigWriter::EscapeIcingaString(name) << "\" {\n"; if (!object) { fp << "}\n"; @@ -709,19 +710,6 @@ void RepositoryUtility::SerializeObject(std::ostream& fp, const String& name, co fp << "}\n"; } -String RepositoryUtility::EscapeIcingaString(const String& str) -{ - String result = str; - boost::algorithm::replace_all(result, "\\", "\\\\"); - boost::algorithm::replace_all(result, "\n", "\\n"); - boost::algorithm::replace_all(result, "\t", "\\t"); - boost::algorithm::replace_all(result, "\r", "\\r"); - boost::algorithm::replace_all(result, "\b", "\\b"); - boost::algorithm::replace_all(result, "\f", "\\f"); - boost::algorithm::replace_all(result, "\"", "\\\""); - return result; -} - void RepositoryUtility::FormatValue(std::ostream& fp, const Value& val) { if (val.IsObjectType()) { @@ -730,11 +718,11 @@ void RepositoryUtility::FormatValue(std::ostream& fp, const Value& val) } if (val.IsString()) { - fp << "\"" << EscapeIcingaString(val) << "\""; + fp << "\"" << ConfigWriter::EscapeIcingaString(val) << "\""; return; } - fp << EscapeIcingaString(val); + fp << ConfigWriter::EscapeIcingaString(val); } void RepositoryUtility::FormatArray(std::ostream& fp, const Array::Ptr& arr) diff --git a/lib/cli/repositoryutility.hpp b/lib/cli/repositoryutility.hpp index 02ea03dff..23d2a6926 100644 --- a/lib/cli/repositoryutility.hpp +++ b/lib/cli/repositoryutility.hpp @@ -96,7 +96,6 @@ private: /* config print helpers */ static void SerializeObject(std::ostream& fp, const String& name, const String& type, const Dictionary::Ptr& object); - static String EscapeIcingaString(const String& str); static void FormatValue(std::ostream& fp, const Value& val); static void FormatArray(std::ostream& fp, const Array::Ptr& arr);