diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-09 15:10:26 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-09 15:10:26 +0000 |
| commit | e2704bd823e44000b81e42fc05b58b8d0bc9ddda (patch) | |
| tree | 4f9a5a0299521877e03bff090bdbc80ba43486c3 /src/BtDependency.cc | |
| parent | ed6851636f38a1959186b92b1c619c4706ad4cca (diff) | |
2009-03-10 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
FileEntry::getPath() contains store(top level) directory to
simplify path handling operation. In the previous
implementation, store directory is concatenated to
FileEntry::getPath() in DownloadContext.
* src/BtDependency.cc
* src/BtPostDownloadHandler.cc
* src/CopyDiskAdaptor.cc
* src/DefaultBtContext.cc
* src/DirectDiskAdaptor.cc
* src/FileEntry.cc
* src/FileEntry.h
* src/FtpNegotiationCommand.cc
* src/HttpResponse.cc
* src/HttpResponseCommand.cc
* src/Metalink2RequestGroup.cc
* src/MultiDiskAdaptor.cc
* src/MultiDiskAdaptor.h
* src/MultiFileAllocationIterator.cc
* src/RequestGroup.cc
* src/SingleFileDownloadContext.cc
* src/SingleFileDownloadContext.h
* src/download_helper.cc
* test/BtDependencyTest.cc
* test/CopyDiskAdaptorTest.cc
* test/DefaultBtContextTest.cc
* test/DefaultBtProgressInfoFileTest.cc
* test/DirectDiskAdaptorTest.cc
* test/DownloadHelperTest.cc
* test/FileEntryTest.cc
* test/MultiDiskAdaptorTest.cc
* test/MultiFileAllocationIteratorTest.cc
* test/RequestGroupTest.cc
* test/SingleFileDownloadContextTest.cc
Diffstat (limited to 'src/BtDependency.cc')
| -rw-r--r-- | src/BtDependency.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/BtDependency.cc b/src/BtDependency.cc index 75de477e..9ace82e6 100644 --- a/src/BtDependency.cc +++ b/src/BtDependency.cc @@ -65,17 +65,28 @@ bool BtDependency::resolve() // cut reference here _dependee.reset(); DefaultBtContextHandle btContext(new DefaultBtContext()); + btContext->setDir(_dependant->getDownloadContext()->getDir()); try { DiskAdaptorHandle diskAdaptor = dependee->getPieceStorage()->getDiskAdaptor(); diskAdaptor->openExistingFile(); std::string content = Util::toString(diskAdaptor); + + std::string overrideName; + if(Util::startsWith(_dependant->getDownloadContext()->getActualBasePath(), + _dependant->getDownloadContext()->getDir())) { + overrideName = + _dependant->getDownloadContext()->getActualBasePath().substr + (_dependant->getDownloadContext()->getDir().size()); + if(Util::startsWith(overrideName, "/")) { + overrideName = overrideName.substr(1); + } + } btContext->loadFromMemory(content, File(dependee->getFilePath()).getBasename(), - _dependant->getDownloadContext()->getName()); + overrideName); if(_option->defined(PREF_PEER_ID_PREFIX)) { btContext->setPeerIdPrefix(_option->get(PREF_PEER_ID_PREFIX)); } - btContext->setDir(_dependant->getDownloadContext()->getDir()); } catch(RecoverableException& e) { _logger->error(EX_EXCEPTION_CAUGHT, e); _logger->debug("BtDependency for GID#%d failed. Go without Bt.", |
