summaryrefslogtreecommitdiff
path: root/apt-pkg/algorithms.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r--apt-pkg/algorithms.cc25
1 files changed, 15 insertions, 10 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 68531f3ca..b015ed20e 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -554,18 +554,23 @@ bool pkgMinimizeUpgrade(pkgDepCache &Cache)
}
/*}}}*/
// APT::Upgrade::Upgrade - Upgrade using a specific strategy /*{{{*/
-bool APT::Upgrade::Upgrade(pkgDepCache &Cache, APT::Upgrade::UpgradeMode mode)
+bool APT::Upgrade::Upgrade(pkgDepCache &Cache, int mode)
{
- switch(mode) {
- case APT::Upgrade::NO_INSTALL_OR_REMOVE:
- return pkgAllUpgradeNoNewPackages(Cache);
- case APT::Upgrade::ALLOW_NEW_INSTALLS:
- return pkgAllUpgradeWithNewPackages(Cache);
- case APT::Upgrade::ALLOW_REMOVAL_AND_NEW_INSTALLS:
- return pkgDistUpgrade(Cache);
- default:
- _error->Error("pkgAllUpgrade called with unknwon mode %i", mode);
+ if (mode == 0)
+ {
+ return pkgDistUpgrade(Cache);
+ }
+ else if ((mode & ~FORBID_REMOVE_PACKAGES) == 0)
+ {
+ return pkgAllUpgradeWithNewPackages(Cache);
+ }
+ else if ((mode & ~(FORBID_REMOVE_PACKAGES|FORBID_NEW_INSTALL_PACKAGES)) == 0)
+ {
+ return pkgAllUpgradeNoNewPackages(Cache);
}
+ else
+ _error->Error("pkgAllUpgrade called with unsupported mode %i", mode);
+
return false;
}
/*}}}*/