diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2010-05-29 12:04:51 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2010-05-29 12:04:51 +0200 |
commit | e1430400bf012ab7e29b00c78796a14ce9f97107 (patch) | |
tree | 67fbd7a72c808c8f46c7eb74ecc430d091db698e | |
parent | 8fa7eefb8a320e8fa4a26c4718fa606d4d27a56f (diff) |
* apt-pkg/indexrecords.{cc,h}:
- add a constant Exists check for MetaKeys
* apt-pkg/acquire-item.cc:
- do not try PDiff if it is not listed in the Meta file
-rw-r--r-- | apt-pkg/acquire-item.cc | 13 | ||||
-rw-r--r-- | apt-pkg/indexrecords.cc | 5 | ||||
-rw-r--r-- | apt-pkg/indexrecords.h | 2 | ||||
-rw-r--r-- | debian/changelog | 6 |
4 files changed, 20 insertions, 6 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index c035b9163..9e29f8189 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -1105,13 +1105,16 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ return; } } - - // Queue Packages file (either diff or full packages files, depending - // on the users option) - if(_config->FindB("Acquire::PDiffs",true) == true) + + /* Queue Packages file (either diff or full packages files, depending + on the users option) - we also check if the PDiff Index file is listed + in the Meta-Index file. Ideal would be if pkgAcqDiffIndex would test this + instead, but passing the required info to it is to much hassle */ + if(_config->FindB("Acquire::PDiffs",true) == true && (verify == false || + MetaIndexParser->Exists(string((*Target)->MetaKey).append(".diff/Index")) == true)) new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); - else + else new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); } diff --git a/apt-pkg/indexrecords.cc b/apt-pkg/indexrecords.cc index 1fc27b1a1..9a9600531 100644 --- a/apt-pkg/indexrecords.cc +++ b/apt-pkg/indexrecords.cc @@ -31,6 +31,11 @@ const indexRecords::checkSum *indexRecords::Lookup(const string MetaKey) return Entries[MetaKey]; } +bool indexRecords::Exists(string const &MetaKey) const +{ + return Entries.count(MetaKey) == 1; +} + bool indexRecords::Load(const string Filename) /*{{{*/ { FileFd Fd(Filename, FileFd::ReadOnly); diff --git a/apt-pkg/indexrecords.h b/apt-pkg/indexrecords.h index 468d2bd0f..2e3103b70 100644 --- a/apt-pkg/indexrecords.h +++ b/apt-pkg/indexrecords.h @@ -34,6 +34,8 @@ class indexRecords // Lookup function virtual const checkSum *Lookup(const string MetaKey); + /** \brief tests if a checksum for this file is available */ + bool Exists(string const &MetaKey) const; std::vector<std::string> MetaKeys(); virtual bool Load(string Filename); diff --git a/debian/changelog b/debian/changelog index 66c41ef5f..1fa254b0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,8 +12,12 @@ apt (0.7.26~exp6) UNRELEASED; urgency=low - try harder to find the other pseudo versions for autoremove multiarch * apt-pkg/aptconfiguration.cc: - remove duplicate architectures in getArchitectures() + * apt-pkg/indexrecords.{cc,h}: + - add a constant Exists check for MetaKeys + * apt-pkg/acquire-item.cc: + - do not try PDiff if it is not listed in the Meta file - -- David Kalnischkies <kalnischkies@gmail.com> Fri, 28 May 2010 19:03:30 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Sat, 29 May 2010 12:03:20 +0200 apt (0.7.26~exp5) experimental; urgency=low |