Made DEFAULT_STRIP_CHARSET const char[]

pull/28/head
Tatsuhiro Tsujikawa 2012-09-24 23:54:41 +09:00
parent 656a766bb0
commit a8c0794640
3 changed files with 14 additions and 20 deletions

View File

@ -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) {

View File

@ -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

View File

@ -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());
}