Browse Source

Made DEFAULT_STRIP_CHARSET const char[]

Tatsuhiro Tsujikawa 13 years ago
parent
commit
a8c0794640
3 changed files with 14 additions and 20 deletions
  1. 3 4
      src/util.cc
  2. 9 13
      src/util.h
  3. 2 3
      test/FeatureConfigTest.cc

+ 3 - 4
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<std::string::const_iterator,
             std::string::const_iterator> 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<std::string::iterator, std::string::iterator> 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) {

+ 9 - 13
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<typename InputIterator>
 std::pair<InputIterator, InputIterator> 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<typename InputIterator, typename InputIterator2>
+template<typename InputIterator>
 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<typename InputIterator>
 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<typename InputIterator>
 void divide

+ 2 - 3
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());
 }