From 4b70f9d213e8cb71bc225a73494625e31dfaa721 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 4 Dec 2014 23:05:44 +0100 Subject: util/DivideString: add option "strip" --- src/output/plugins/AoOutputPlugin.cxx | 2 +- src/util/DivideString.cxx | 13 ++++++++++++- src/util/DivideString.hxx | 6 +++++- 3 files changed, 18 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/output/plugins/AoOutputPlugin.cxx b/src/output/plugins/AoOutputPlugin.cxx index 689e7de7c..4b98f4a77 100644 --- a/src/output/plugins/AoOutputPlugin.cxx +++ b/src/output/plugins/AoOutputPlugin.cxx @@ -128,7 +128,7 @@ AoOutput::Configure(const config_param ¶m, Error &error) value = param.GetBlockValue("options", nullptr); if (value != nullptr) { for (const auto &i : SplitString(value, ';')) { - const DivideString ss(i.c_str(), '='); + const DivideString ss(i.c_str(), '=', true); if (!ss.IsDefined()) { error.Format(ao_output_domain, diff --git a/src/util/DivideString.cxx b/src/util/DivideString.cxx index d30dfaa16..f781d141f 100644 --- a/src/util/DivideString.cxx +++ b/src/util/DivideString.cxx @@ -18,10 +18,11 @@ */ #include "DivideString.hxx" +#include "StringUtil.hxx" #include -DivideString::DivideString(const char *s, char separator) +DivideString::DivideString(const char *s, char separator, bool strip) :first(nullptr) { const char *x = strchr(s, separator); @@ -31,6 +32,16 @@ DivideString::DivideString(const char *s, char separator) size_t length = x - s; second = x + 1; + if (strip) + second = StripLeft(second); + + if (strip) { + const char *end = s + length; + s = StripLeft(s); + end = StripRight(s, end); + length = end - s; + } + first = new char[length + 1]; memcpy(first, s, length); first[length] = 0; diff --git a/src/util/DivideString.hxx b/src/util/DivideString.hxx index d8d911691..126aa45d1 100644 --- a/src/util/DivideString.hxx +++ b/src/util/DivideString.hxx @@ -33,7 +33,11 @@ class DivideString { const char *second; public: - DivideString(const char *s, char separator); + /** + * @param strip strip the first part and left-strip the second + * part? + */ + DivideString(const char *s, char separator, bool strip=false); ~DivideString() { delete[] first; -- cgit v1.2.3