2007-11-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

Trim announce URL
	* src/DefaultBtContext.cc
	* test/ShaVisitorTest.cc
	
	Trim argument s. Give trimed s to exception constructor.
	* src/Util.cc (parseInt)(parseLLInt)
	* test/UtilTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2007-11-22 14:44:40 +00:00
parent b27c529549
commit 194f45a3c3
8 changed files with 28 additions and 15 deletions

View File

@ -1,3 +1,13 @@
2007-11-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Trim announce URL
* src/DefaultBtContext.cc
* test/ShaVisitorTest.cc
Trim argument s. Give trimed s to exception constructor.
* src/Util.cc (parseInt)(parseLLInt)
* test/UtilTest.cc
2007-11-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Set precision back to 1.

1
TODO
View File

@ -54,6 +54,7 @@
DownloadFailureException .... RequestGroup should halt.
FatalException .... Program should abort.
* replace strtol with Util::parseInt
* do performance tuning against Xml2MetalinkProcessor
-- remaining issues to be implemented for 0.12.0 release
* Update translation

View File

@ -161,7 +161,7 @@ void DefaultBtContext::extractFileEntries(Dictionary* infoDic,
void DefaultBtContext::extractAnnounce(Data* announceData) {
Strings urls;
urls.push_back(announceData->toString());
urls.push_back(Util::trim(announceData->toString()));
announceTiers.push_back(AnnounceTierHandle(new AnnounceTier(urls)));
}
@ -173,7 +173,7 @@ void DefaultBtContext::extractAnnounceList(List* announceListData) {
for(MetaList::const_iterator elemItr = elem->getList().begin();
elemItr != elem->getList().end(); elemItr++) {
const Data* data = (Data*)*elemItr;
urls.push_back(data->toString());
urls.push_back(Util::trim(data->toString()));
}
if(urls.size()) {
AnnounceTierHandle tier(new AnnounceTier(urls));

View File

@ -462,38 +462,40 @@ void Util::unfoldRange(const string& src, Integers& range) {
int32_t Util::parseInt(const string& s, int32_t base)
{
if(s.empty()) {
string trimed = Util::trim(s);
if(trimed.empty()) {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"empty string");
}
char* stop;
errno = 0;
long int v = strtol(s.c_str(), &stop, base);
long int v = strtol(trimed.c_str(), &stop, base);
if(*stop != '\0') {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"illegal character");
trimed.c_str());
} else if((v == LONG_MIN || v == LONG_MAX) && errno == ERANGE || v > INT32_MAX || v < INT32_MIN) {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"overflow/underflow");
trimed.c_str());
}
return v;
}
int64_t Util::parseLLInt(const string& s, int32_t base)
{
if(s.empty()) {
string trimed = Util::trim(s);
if(trimed.empty()) {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"empty string");
}
char* stop;
errno = 0;
int64_t v = strtoll(s.c_str(), &stop, base);
int64_t v = strtoll(trimed.c_str(), &stop, base);
if(*stop != '\0') {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"illegal character");
trimed.c_str());
} else if((v == INT64_MIN || v == INT64_MAX) && errno == ERANGE) {
throw new DlAbortEx(MSG_STRING_INTEGER_CONVERSION_FAILURE,
"overflow/underflow");
trimed.c_str());
}
return v;
}

View File

@ -57,6 +57,6 @@ void ShaVisitorTest::testVisitCompound() {
int len = 0;
v.getHash(md, len);
string hashHex = hexHash(md, len);
CPPUNIT_ASSERT_EQUAL(string("36a58c6ab3eb02caa952f4345f57fabb06a39511"),
CPPUNIT_ASSERT_EQUAL(string("5a2bf55fb6ec71a9cd3e06537aa7795cafccffab"),
hashHex);
}

View File

@ -514,7 +514,7 @@ void UtilTest::testParseIntRange_invalidRange()
void UtilTest::testParseInt()
{
CPPUNIT_ASSERT_EQUAL((int32_t)-1, Util::parseInt("-1"));
CPPUNIT_ASSERT_EQUAL((int32_t)-1, Util::parseInt(" -1 "));
CPPUNIT_ASSERT_EQUAL((int32_t)2147483647, Util::parseInt("2147483647"));
try {
Util::parseInt("2147483648");
@ -548,7 +548,7 @@ void UtilTest::testParseInt()
void UtilTest::testParseLLInt()
{
CPPUNIT_ASSERT_EQUAL((int64_t)-1, Util::parseLLInt("-1"));
CPPUNIT_ASSERT_EQUAL((int64_t)-1, Util::parseLLInt(" -1 "));
CPPUNIT_ASSERT_EQUAL((int64_t)9223372036854775807LL,
Util::parseLLInt("9223372036854775807"));
try {

View File

@ -1 +1 @@
d8:announce36:http://aria.rednoah.com/announce.php7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee
d8:announce37:http://aria.rednoah.com/announce.php 7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee

View File

@ -1 +1 @@
d8:announce36:http://aria.rednoah.com/announce.php13:announce-listll15:http://tracker1el15:http://tracker2el15:http://tracker3ee7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod5:filesld6:lengthi284e4:pathl5:aria23:src6:aria2ceed6:lengthi100e4:pathl19:aria2-0.2.2.tar.bz2eee4:name10:aria2-test12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee
d8:announce36:http://aria.rednoah.com/announce.php13:announce-listll16:http://tracker1 el15:http://tracker2el15:http://tracker3ee7:comment17:REDNOAH.COM RULES13:creation datei1123456789e4:infod5:filesld6:lengthi284e4:pathl5:aria23:src6:aria2ceed6:lengthi100e4:pathl19:aria2-0.2.2.tar.bz2eee4:name10:aria2-test12:piece lengthi128e6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCee