From 8fe80169b3e4fc38ad98b21c09959bcd0a161382 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 5 May 2009 03:20:56 +0000 Subject: [PATCH] 2009-05-05 Tatsuhiro Tsujikawa In DefaultBtContext::getActualBasePath(), return first FileEntry::getPath() for single file torrent. * src/DefaultBtContext.cc * test/DefaultBtContextTest.cc --- ChangeLog | 7 +++++++ src/DefaultBtContext.cc | 6 +++++- test/DefaultBtContextTest.cc | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6ddfc714..87eeb653 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-05-05 Tatsuhiro Tsujikawa + + In DefaultBtContext::getActualBasePath(), return first + FileEntry::getPath() for single file torrent. + * src/DefaultBtContext.cc + * test/DefaultBtContextTest.cc + 2009-05-04 Tatsuhiro Tsujikawa Removed directIOAllowed() from BinaryStream, DiskWriter, diff --git a/src/DefaultBtContext.cc b/src/DefaultBtContext.cc index 7bc86e54..6ffea462 100644 --- a/src/DefaultBtContext.cc +++ b/src/DefaultBtContext.cc @@ -418,7 +418,11 @@ size_t DefaultBtContext::getNumPieces() const { std::string DefaultBtContext::getActualBasePath() const { - return _dir+"/"+name; + if(fileEntries.size() == 1) { + return fileEntries.front()->getPath(); + } else { + return _dir+"/"+name; + } } void DefaultBtContext::computeFastSet diff --git a/test/DefaultBtContextTest.cc b/test/DefaultBtContextTest.cc index 2548480a..31236077 100644 --- a/test/DefaultBtContextTest.cc +++ b/test/DefaultBtContextTest.cc @@ -43,6 +43,7 @@ class DefaultBtContextTest:public CppUnit::TestFixture { CPPUNIT_TEST(testLoadFromMemory_joinPathMulti); CPPUNIT_TEST(testLoadFromMemory_joinPathSingle); CPPUNIT_TEST(testGetNodes); + CPPUNIT_TEST(testGetActualBasePath); CPPUNIT_TEST_SUITE_END(); public: void setUp() { @@ -74,6 +75,7 @@ public: void testLoadFromMemory_joinPathMulti(); void testLoadFromMemory_joinPathSingle(); void testGetNodes(); + void testGetActualBasePath(); }; @@ -532,4 +534,18 @@ void DefaultBtContextTest::testGetNodes() } +void DefaultBtContextTest::testGetActualBasePath() +{ + DefaultBtContext singleCtx; + singleCtx.load("single.torrent"); + singleCtx.setFilePathWithIndex(1, "new-path"); + CPPUNIT_ASSERT_EQUAL(std::string("new-path"), singleCtx.getActualBasePath()); + + DefaultBtContext multiCtx; + multiCtx.setDir("downloads"); + multiCtx.load("test.torrent"); + CPPUNIT_ASSERT_EQUAL(std::string("downloads/aria2-test"), + multiCtx.getActualBasePath()); +} + } // namespace aria2