X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/bc0a5999a7ec4f23bfbb7f26f065251c4eb79146..1e7ec0d86200b496257fbb6688e866dea354784d:/apt-private/private-upgrade.cc?ds=sidebyside

diff --git a/apt-private/private-upgrade.cc b/apt-private/private-upgrade.cc
index 85b5a492a..31f067576 100644
--- a/apt-private/private-upgrade.cc
+++ b/apt-private/private-upgrade.cc
@@ -1,47 +1,66 @@
+// Includes								/*{{{*/
+#include <config.h>
 
-#include <apt-pkg/algorithms.h>
+#include <apt-pkg/upgrade.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
 
-#include "private-install.h"
-#include "private-cachefile.h"
-#include "private-upgrade.h"
-#include "private-output.h"
+#include <apt-private/private-install.h>
+#include <apt-private/private-cachefile.h>
+#include <apt-private/private-upgrade.h>
+#include <apt-private/private-output.h>
 
+#include <iostream>
 
-// DoUpgradeNoNewPackages - Upgrade all packages        		/*{{{*/
-// ---------------------------------------------------------------------
-/* Upgrade all packages without installing new packages or erasing old
-   packages */
-bool DoUpgradeNoNewPackages(CommandLine &CmdL)
+#include <apti18n.h>
+									/*}}}*/
+
+// this is actually performing the various upgrade operations 
+static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
 {
    CacheFile Cache;
    if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
       return false;
 
-   // Do the upgrade
-   if (pkgAllUpgrade(Cache) == false)
-   {
-      ShowBroken(c1out,Cache,false);
-      return _error->Error(_("Internal error, AllUpgrade broke stuff"));
-   }
-   
+   c0out << _("Calculating upgrade... ") << std::flush;
+   if(!DoCacheManipulationFromCommandLine(CmdL, Cache, UpgradeFlags))
+      return false;
+   c0out << _("Done") << std::endl;
+
    return InstallPackages(Cache,true);
 }
-									/*}}}*/
 
+// DoDistUpgrade - Automatic smart upgrader				/*{{{*/
+// ---------------------------------------------------------------------
+/* Intelligent upgrader that will install and remove packages at will */
+bool DoDistUpgrade(CommandLine &CmdL)
+{
+   return UpgradeHelper(CmdL, 0);
+}
+									/*}}}*/
+bool DoUpgrade(CommandLine &CmdL)					/*{{{*/
+{
+   if (_config->FindB("APT::Get::Upgrade-Allow-New", false) == true)
+      return DoUpgradeWithAllowNewPackages(CmdL);
+   else
+      return DoUpgradeNoNewPackages(CmdL);
+}
+									/*}}}*/
+// DoUpgradeNoNewPackages - Upgrade all packages			/*{{{*/
+// ---------------------------------------------------------------------
+/* Upgrade all packages without installing new packages or erasing old
+   packages */
+bool DoUpgradeNoNewPackages(CommandLine &CmdL)
+{
+   // Do the upgrade
+   return UpgradeHelper(CmdL, 
+                        APT::Upgrade::FORBID_REMOVE_PACKAGES|
+                        APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES);
+}
+									/*}}}*/
 // DoSafeUpgrade - Upgrade all packages with install but not remove	/*{{{*/
 bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL)
 {
-   CacheFile Cache;
-   if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
-      return false;
-
-   // Do the upgrade
-   if (pkgAllUpgradeNoDelete(Cache) == false)
-   {
-      ShowBroken(c1out,Cache,false);
-      return _error->Error(_("Internal error, AllUpgrade broke stuff"));
-   }
-   
-   return InstallPackages(Cache,true);
+   return UpgradeHelper(CmdL, APT::Upgrade::FORBID_REMOVE_PACKAGES);
 }
 									/*}}}*/