mirror of https://github.com/aria2/aria2
Made DEFAULT_STRIP_CHARSET const char[]
parent
656a766bb0
commit
a8c0794640
|
@ -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) {
|
||||
|
|
22
src/util.h
22
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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue