From a8c079464079789132221f093d27706ab973a86a Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 24 Sep 2012 23:54:41 +0900 Subject: [PATCH] Made DEFAULT_STRIP_CHARSET const char[] --- src/util.cc | 7 +++---- src/util.h | 22 +++++++++------------- test/FeatureConfigTest.cc | 5 ++--- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/util.cc b/src/util.cc index 68bc7390..7ecddfab 100644 --- a/src/util.cc +++ b/src/util.cc @@ -185,9 +185,9 @@ std::string nativeToUtf8(const std::string& src) namespace util { -const std::string DEFAULT_STRIP_CHARSET("\r\n\t "); +const char DEFAULT_STRIP_CHARSET[] = "\r\n\t "; -std::string strip(const std::string& str, const std::string& chars) +std::string strip(const std::string& str, const char* chars) { std::pair p = @@ -928,9 +928,8 @@ std::string getContentDispositionFilename(const std::string& header) } else { filenameLast = value.end(); } - static const std::string TRIMMED("\r\n\t '\""); std::pair vi = - util::stripIter(value.begin(), filenameLast, TRIMMED); + util::stripIter(value.begin(), filenameLast, "\r\n\t '\""); value.assign(vi.first, vi.second); value.erase(std::remove(value.begin(), value.end(), '\\'), value.end()); if(!detectDirTraversal(value) && value.find("/") == std::string::npos) { diff --git a/src/util.h b/src/util.h index 86350285..d8abc39d 100644 --- a/src/util.h +++ b/src/util.h @@ -111,21 +111,19 @@ std::string nativeToUtf8(const std::string& src); namespace util { -extern const std::string DEFAULT_STRIP_CHARSET; +extern const char DEFAULT_STRIP_CHARSET[]; template std::pair stripIter (InputIterator first, InputIterator last, - const std::string& chars = DEFAULT_STRIP_CHARSET) + const char* chars = DEFAULT_STRIP_CHARSET) { - for(; first != last && - std::find(chars.begin(), chars.end(), *first) != chars.end(); ++first); + for(; first != last && strchr(chars, *first) != 0; ++first); if(first == last) { return std::make_pair(first, last); } InputIterator left = last-1; - for(; left != first && - std::find(chars.begin(), chars.end(), *left) != chars.end(); --left); + for(; left != first && strchr(chars, *left) != 0; --left); return std::make_pair(first, left+1); } @@ -137,12 +135,11 @@ InputIterator lstripIter return first; } -template +template InputIterator lstripIter -(InputIterator first, InputIterator last, - InputIterator2 cfirst, InputIterator2 clast) +(InputIterator first, InputIterator last, const char* chars) { - for(; first != last && std::find(cfirst, clast, *first) != clast; ++first); + for(; first != last && strchr(chars, *first) != 0; ++first); return first; } @@ -150,12 +147,11 @@ template InputIterator lstripIter (InputIterator first, InputIterator last) { - return lstripIter(first, last, - DEFAULT_STRIP_CHARSET.begin(), DEFAULT_STRIP_CHARSET.end()); + return lstripIter(first, last, DEFAULT_STRIP_CHARSET); } std::string strip -(const std::string& str, const std::string& chars = DEFAULT_STRIP_CHARSET); +(const std::string& str, const char* chars = DEFAULT_STRIP_CHARSET); template void divide diff --git a/test/FeatureConfigTest.cc b/test/FeatureConfigTest.cc index 4b8361c5..f9660bda 100644 --- a/test/FeatureConfigTest.cc +++ b/test/FeatureConfigTest.cc @@ -80,10 +80,9 @@ void FeatureConfigTest::testFeatureSummary() { }; std::string featuresString; - const std::string delim(", "); std::for_each(vbegin(features), vend(features), - StringAppend(featuresString, delim)); - featuresString = util::strip(featuresString, delim); + StringAppend(featuresString, ", ")); + featuresString = util::strip(featuresString, ", "); CPPUNIT_ASSERT_EQUAL(featuresString, featureSummary()); }