From e39698a485e332742b935292dc4329abf19cbb53 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 17 Apr 2014 11:39:58 +0200 Subject: pass Target/MetaIndexParser around into pkgAcqDiffIndex so that this can be used to create a proper pkgAcqIndex() with size information --- apt-pkg/acquire-item.cc | 46 ++++++++++++++++++++++++++-------------------- apt-pkg/acquire-item.h | 11 +++++++++-- 2 files changed, 35 insertions(+), 22 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index f9dd74445..1443380a1 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -343,21 +343,24 @@ bool pkgAcqSubIndex::ParseIndex(string const &IndexFile) /*{{{*/ * the original packages file */ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner, - string URI,string URIDesc,string ShortDesc, - HashString ExpectedHash) - : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash), - Description(URIDesc) + IndexTarget const *Target, + HashString ExpectedHash, + indexRecords *MetaIndexParser) + : Item(Owner), ExpectedHash(ExpectedHash), Target(Target), + MetaIndexParser(MetaIndexParser) + { Debug = _config->FindB("Debug::pkgAcquire::Diffs",false); - Desc.Description = URIDesc + "/DiffIndex"; + RealURI = Target->URI; Desc.Owner = this; - Desc.ShortDesc = ShortDesc; - Desc.URI = URI + ".diff/Index"; + Desc.Description = Target->Description + "/DiffIndex"; + Desc.ShortDesc = Target->ShortDesc; + Desc.URI = Target->URI + ".diff/Index"; DestFile = _config->FindDir("Dir::State::lists") + "partial/"; - DestFile += URItoFileName(URI) + string(".DiffIndex"); + DestFile += URItoFileName(Target->URI) + string(".DiffIndex"); if(Debug) std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl; @@ -560,8 +563,7 @@ void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig * /*Cnf*/)/ std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << " with " << Message << std::endl << "Falling back to normal index file acquire" << std::endl; - new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc, - ExpectedHash); + new pkgAcqIndex(Owner, Target, ExpectedHash, MetaIndexParser); Complete = false; Status = StatDone; @@ -920,7 +922,8 @@ void pkgAcqIndexMergeDiffs::Done(string Message,unsigned long long Size,string M pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, string URI,string URIDesc,string ShortDesc, HashString ExpectedHash, string comprExt) - : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash) + : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash), Target(0), + MetaIndexParser(0) { if(comprExt.empty() == true) { @@ -983,18 +986,23 @@ void pkgAcqIndex::Init(string const &URI, string const &URIDesc, string const &S if (comprExt == "uncompressed") { Desc.URI = URI; - MetaKey = string(Target->MetaKey); + if(Target) + MetaKey = string(Target->MetaKey); } else { Desc.URI = URI + '.' + comprExt; - MetaKey = string(Target->MetaKey) + '.' + comprExt; + if(Target) + MetaKey = string(Target->MetaKey) + '.' + comprExt; } // load the filesize - indexRecords::checkSum *Record = MetaIndexParser->Lookup(MetaKey); - if(Record) - FileSize = Record->Size; + if(MetaIndexParser) + { + indexRecords::checkSum *Record = MetaIndexParser->Lookup(MetaKey); + if(Record) + FileSize = Record->Size; + } Desc.Description = URIDesc; Desc.Owner = this; @@ -1643,8 +1651,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ { if (_config->FindB("Acquire::PDiffs",true) == true && transInRelease == true && MetaIndexParser->Exists((*Target)->MetaKey + ".diff/Index") == true) - new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, - (*Target)->ShortDesc, ExpectedIndexHash); + new pkgAcqDiffIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser); else new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser); } @@ -1657,8 +1664,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ instead, but passing the required info to it is to much hassle */ if(_config->FindB("Acquire::PDiffs",true) == true && (verify == false || MetaIndexParser->Exists((*Target)->MetaKey + ".diff/Index") == true)) - new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, - (*Target)->ShortDesc, ExpectedIndexHash); + new pkgAcqDiffIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser); else new pkgAcqIndex(Owner, *Target, ExpectedIndexHash, MetaIndexParser); } diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index ab4a69c13..eab5bb222 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -405,6 +405,11 @@ class pkgAcqDiffIndex : public pkgAcquire::Item */ std::string Description; + /** \brief Pointer to the IndexTarget data + */ + const struct IndexTarget * Target; + indexRecords *MetaIndexParser; + public: // Specialized action members virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); @@ -438,8 +443,10 @@ class pkgAcqDiffIndex : public pkgAcquire::Item * * \param ExpectedHash The list file's MD5 signature. */ - pkgAcqDiffIndex(pkgAcquire *Owner,std::string URI,std::string URIDesc, - std::string ShortDesc, HashString ExpectedHash); + pkgAcqDiffIndex(pkgAcquire *Owner, + struct IndexTarget const * const Target, + HashString ExpectedHash, + indexRecords *MetaIndexParser); }; /*}}}*/ /** \brief An item that is responsible for fetching client-merge patches {{{ -- cgit v1.2.3