summaryrefslogtreecommitdiff
path: root/src/BtDependency.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-09 15:10:26 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-09 15:10:26 +0000
commite2704bd823e44000b81e42fc05b58b8d0bc9ddda (patch)
tree4f9a5a0299521877e03bff090bdbc80ba43486c3 /src/BtDependency.cc
parented6851636f38a1959186b92b1c619c4706ad4cca (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.cc15
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.",