mirror of https://github.com/aria2/aria2
				
				
				
			Added util::istartsWith()
							parent
							
								
									79876af88f
								
							
						
					
					
						commit
						5c88f61269
					
				| 
						 | 
				
			
			@ -765,8 +765,7 @@ std::string getContentDispositionFilename(const std::string& header)
 | 
			
		|||
  for(std::vector<std::string>::const_iterator i = params.begin(),
 | 
			
		||||
        eoi = params.end(); i != eoi; ++i) {
 | 
			
		||||
    const std::string& param = *i;
 | 
			
		||||
    std::string lowparam = toLower(param);
 | 
			
		||||
    if(!startsWith(lowparam.begin(), lowparam.end(),
 | 
			
		||||
    if(!istartsWith(param.begin(), param.end(),
 | 
			
		||||
                   A2_KEYNAME, vend(A2_KEYNAME)-1) ||
 | 
			
		||||
       param.size() == sizeof(A2_KEYNAME)-1) {
 | 
			
		||||
      continue;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								src/util.h
								
								
								
								
							
							
						
						
									
										16
									
								
								src/util.h
								
								
								
								
							| 
						 | 
				
			
			@ -697,6 +697,19 @@ bool startsWith
 | 
			
		|||
  return std::equal(first2, last2, first1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<typename InputIterator1, typename InputIterator2>
 | 
			
		||||
bool istartsWith
 | 
			
		||||
(InputIterator1 first1,
 | 
			
		||||
 InputIterator1 last1,
 | 
			
		||||
 InputIterator2 first2,
 | 
			
		||||
 InputIterator2 last2)
 | 
			
		||||
{
 | 
			
		||||
  if(last1-first1 < last2-first2) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
  return strieq(first1, first1+(last2-first2), first2, last2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<typename InputIterator1, typename InputIterator2>
 | 
			
		||||
bool endsWith
 | 
			
		||||
(InputIterator1 first1,
 | 
			
		||||
| 
						 | 
				
			
			@ -720,8 +733,7 @@ bool iendsWith
 | 
			
		|||
  if(last1-first1 < last2-first2) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
  first1 = last1-(last2-first2);
 | 
			
		||||
  return strieq(first1, last1, first2, last2);
 | 
			
		||||
  return strieq(last1-(last2-first2), last1, first2, last2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void generateRandomData(unsigned char* data, size_t length);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,7 @@ class UtilTest:public CppUnit::TestFixture {
 | 
			
		|||
  CPPUNIT_TEST(testIendsWith);
 | 
			
		||||
  CPPUNIT_TEST(testReplace);
 | 
			
		||||
  CPPUNIT_TEST(testStartsWith);
 | 
			
		||||
  CPPUNIT_TEST(testIstartsWith);
 | 
			
		||||
  // may be moved to other helper class in the future.
 | 
			
		||||
  CPPUNIT_TEST(testGetContentDispositionFilename);
 | 
			
		||||
  CPPUNIT_TEST(testRandomAlpha);
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +105,7 @@ public:
 | 
			
		|||
  void testIendsWith();
 | 
			
		||||
  void testReplace();
 | 
			
		||||
  void testStartsWith();
 | 
			
		||||
  void testIstartsWith();
 | 
			
		||||
  // may be moved to other helper class in the future.
 | 
			
		||||
  void testGetContentDispositionFilename();
 | 
			
		||||
  void testRandomAlpha();
 | 
			
		||||
| 
						 | 
				
			
			@ -780,6 +782,21 @@ void UtilTest::testStartsWith() {
 | 
			
		|||
                                  part.begin(), part.end()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UtilTest::testIstartsWith() {
 | 
			
		||||
  std::string target;
 | 
			
		||||
  std::string part;
 | 
			
		||||
 | 
			
		||||
  target = "abcdefg";
 | 
			
		||||
  part = "aBc";
 | 
			
		||||
  CPPUNIT_ASSERT(util::istartsWith(target.begin(), target.end(),
 | 
			
		||||
                                   part.begin(), part.end()));
 | 
			
		||||
 | 
			
		||||
  target = "abcdefg";
 | 
			
		||||
  part = "abx";
 | 
			
		||||
  CPPUNIT_ASSERT(!util::istartsWith(target.begin(), target.end(),
 | 
			
		||||
                                    part.begin(), part.end()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UtilTest::testGetContentDispositionFilename() {
 | 
			
		||||
  std::string h1 = "attachment; filename=\"aria2.tar.bz2\"";
 | 
			
		||||
  CPPUNIT_ASSERT_EQUAL(std::string("aria2.tar.bz2"), util::getContentDispositionFilename(h1));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue