summaryrefslogtreecommitdiff
path: root/cmdline/apt-cache.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2015-08-12 13:08:51 +0200
committerJulian Andres Klode <jak@debian.org>2015-08-12 13:08:51 +0200
commite595c45791716891b7b21292926f9913b333009d (patch)
treec01e3bd91dfbd096293a4abec409d718d3b66dcf /cmdline/apt-cache.cc
parent10b39ae62db1f0d15a208a286cc86aff06c2fb69 (diff)
apt-cache: Modify policy output to use per-version pins
Also optionally enable old output by setting APT::Policy=0.
Diffstat (limited to 'cmdline/apt-cache.cc')
-rw-r--r--cmdline/apt-cache.cc43
1 files changed, 30 insertions, 13 deletions
diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc
index e61914298..b9da85b34 100644
--- a/cmdline/apt-cache.cc
+++ b/cmdline/apt-cache.cc
@@ -1667,19 +1667,33 @@ static bool Policy(CommandLine &CmdL)
pkgCache::PkgIterator I = Cache->PkgBegin();
for (;I.end() != true; ++I)
{
- if (Plcy->GetPriority(I) == 0)
+ // Old code for debugging
+ if (_config->FindI("APT::Policy", 1) < 1) {
+ if (Plcy->GetPriority(I) == 0)
+ continue;
+
+ // Print the package name and the version we are forcing to
+ cout << " " << I.FullName(true) << " -> ";
+
+ pkgCache::VerIterator V = Plcy->GetMatch(I);
+ if (V.end() == true)
+ cout << _("(not found)") << endl;
+ else
+ cout << V.VerStr() << endl;
+
continue;
+ }
+ // New code
+ for (pkgCache::VerIterator V = I.VersionList(); !V.end(); V++) {
+ auto Prio = Plcy->GetPriority(V, false);
+ if (Prio == 0)
+ continue;
- // Print the package name and the version we are forcing to
- cout << " " << I.FullName(true) << " -> ";
-
- pkgCache::VerIterator V = Plcy->GetMatch(I);
- if (V.end() == true)
- cout << _("(not found)") << endl;
- else
- cout << V.VerStr() << endl;
- }
-
+ // Print the package name and the version we are forcing to
+ cout << " " << I.FullName(true) << " -> ";
+ cout << V.VerStr() << _(" with priority ") << Prio << endl;
+ }
+ }
return true;
}
@@ -1715,7 +1729,7 @@ static bool Policy(CommandLine &CmdL)
cout << V.VerStr() << endl;
// Pinned version
- if (Plcy->GetPriority(Pkg) != 0)
+ if (_config->FindI("APT::Policy", 1) < 1 && Plcy->GetPriority(Pkg) != 0)
{
cout << _(" Package pin: ");
V = Plcy->GetMatch(Pkg);
@@ -1733,7 +1747,10 @@ static bool Policy(CommandLine &CmdL)
cout << " *** " << V.VerStr();
else
cout << " " << V.VerStr();
- cout << " " << Plcy->GetPriority(V) << endl;
+ if (_config->FindI("APT::Policy", 1) < 1)
+ cout << " " << Plcy->GetPriority(Pkg) << endl;
+ else
+ cout << " " << Plcy->GetPriority(V) << endl;
for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; ++VF)
{
// Locate the associated index files so we can derive a description