Skip to content

Commit

Permalink
Refactor String-Escape in repositoryutility
Browse files Browse the repository at this point in the history
fixes #10989
  • Loading branch information
Crunsher committed Feb 9, 2016
1 parent 14d805e commit 4d87c96
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 19 deletions.
3 changes: 1 addition & 2 deletions lib/base/configwriter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ class I2_BASE_API ConfigWriter
static void EmitFunctionCall(std::ostream& fp, const String& name, const Array::Ptr& arguments);

static const std::vector<String>& GetKeywords(void);
static String EscapeIcingaString(const String& str);
private:
ConfigWriter(void);

static String EscapeIcingaString(const String& str);
};

}
Expand Down
20 changes: 4 additions & 16 deletions lib/cli/repositoryutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -683,7 +684,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";
Expand Down Expand Up @@ -712,19 +713,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<Array>()) {
Expand All @@ -733,11 +721,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)
Expand Down
1 change: 0 additions & 1 deletion lib/cli/repositoryutility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ class I2_CLI_API RepositoryUtility

/* 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);

Expand Down

0 comments on commit 4d87c96

Please sign in to comment.