summaryrefslogtreecommitdiff
path: root/apt-pkg/algorithms.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-10-05 11:54:08 +0200
committerMichael Vogt <mvo@debian.org>2013-10-05 11:54:08 +0200
commit5ca0cf51194422fb0f094bbf5e61e9f5eb57f013 (patch)
treedb5ab686a7adfcc2bcc0ca48a070d8ce87dacb69 /apt-pkg/algorithms.cc
parentfacea693b2078327b59502e663c238c50118e96a (diff)
cleanup upgrade API some more (thanks for the feedback from David)
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;
}
/*}}}*/