diff options
-rw-r--r-- | apt-pkg/acquire-item.cc | 9 | ||||
-rw-r--r-- | methods/file.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-apt-update-file | 4 |
3 files changed, 8 insertions, 7 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index b2e578629..0569c6dda 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -437,7 +437,7 @@ bool pkgAcqTransactionItem::TransactionState(TransactionStates const state) } else { if(Debug == true) std::clog << "rm " << DestFile << " # " << DescURI() << std::endl; - if (RemoveFile("TransactionCommit", DestFile) == false) + if (RemoveFile("TransItem::TransactionCommit", DestFile) == false) return false; } break; @@ -470,7 +470,7 @@ bool pkgAcqIndex::TransactionState(TransactionStates const state) break; case TransactionCommit: if (EraseFileName.empty() == false) - RemoveFile("TransactionCommit", EraseFileName); + RemoveFile("AcqIndex::TransactionCommit", EraseFileName); break; } return true; @@ -2748,9 +2748,8 @@ void pkgAcqIndex::StageDownloadDone(string const &Message) // methods like file:// give us an alternative (uncompressed) file else if (Target.KeepCompressed == false && AltFilename.empty() == false) { - if (CurrentCompressionExtension != "uncompressed") - DestFile.erase(DestFile.length() - (CurrentCompressionExtension.length() + 1)); Filename = AltFilename; + EraseFileName.clear(); } // Methods like e.g. "file:" will give us a (compressed) FileName that is // not the "DestFile" we set, in this case we uncompress from the local file @@ -2780,7 +2779,7 @@ void pkgAcqIndex::StageDownloadDone(string const &Message) DestFile = "/dev/null"; } - if (EraseFileName.empty()) + if (EraseFileName.empty() && Filename != AltFilename) EraseFileName = Filename; // queue uri for the next stage diff --git a/methods/file.cc b/methods/file.cc index 4e3410078..36f3c39b9 100644 --- a/methods/file.cc +++ b/methods/file.cc @@ -98,7 +98,7 @@ bool FileMethod::Fetch(FetchItem *Itm) { if (APT::String::Endswith(File, *ext) == true) { - std::string const unfile = File.substr(0, File.length() - ext->length() - 1); + std::string const unfile = File.substr(0, File.length() - ext->length()); if (stat(unfile.c_str(),&Buf) == 0) { AltRes.Size = Buf.st_size; diff --git a/test/integration/test-apt-update-file b/test/integration/test-apt-update-file index 369b40f2f..20f604695 100755 --- a/test/integration/test-apt-update-file +++ b/test/integration/test-apt-update-file @@ -40,7 +40,9 @@ if [ "$(id -u)" = '0' ]; then exit fi chmod 555 aptarchive/dists/unstable/main/binary-all -testsuccess aptget update +testsuccess aptget update -o Debug::pkgAcquire::Worker=1 +cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output +testsuccess grep '%0aAlt-Filename:%20' rootdir/tmp/update.output # the release files aren't an IMS-hit, but the indexes are redatereleasefiles '+1 hour' |