summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-05-29 12:04:51 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-05-29 12:04:51 +0200
commite1430400bf012ab7e29b00c78796a14ce9f97107 (patch)
tree67fbd7a72c808c8f46c7eb74ecc430d091db698e
parent8fa7eefb8a320e8fa4a26c4718fa606d4d27a56f (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.cc13
-rw-r--r--apt-pkg/indexrecords.cc5
-rw-r--r--apt-pkg/indexrecords.h2
-rw-r--r--debian/changelog6
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