]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/algorithms.cc
El Te Dee Patch
[apt.git] / apt-pkg / algorithms.cc
index 596473a6526055fc1544999d022289b3ae7e6ee9..adcbbd40c31f307cef5f55e7470c514005781dd9 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: algorithms.cc,v 1.26 1999/10/22 04:05:47 jgg Exp $
+// $Id: algorithms.cc,v 1.30 2000/05/10 05:56:23 jgg Exp $
 /* ######################################################################
 
    Algorithms - A set of misc algorithms
@@ -284,7 +284,7 @@ bool pkgDistUpgrade(pkgDepCache &Cache)
    pkgProblemResolver Fix(Cache);
 
    // Hold back held packages.
-   if (_config->FindB("APT::Ingore-Hold",false) == false)
+   if (_config->FindB("APT::Ignore-Hold",false) == false)
    {
       for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
       {
@@ -574,7 +574,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
               /* We let the algorithm deal with conflicts on its next iteration,
                it is much smarter than us */
               if (Start->Type == pkgCache::Dep::Conflicts)
-                 continue;
+                 break;
               
               if (Debug == true)
                  clog << "    Reinst Failed early because of " << Start.TargetPkg().Name() << endl;
@@ -738,7 +738,10 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
               if (InOr == true)
               {
                  if (OldEnd == LEnd && OrOp == OrRemove)
-                    Cache.MarkDelete(I);
+                 {
+                    if ((Flags[I->ID] & Protected) != Protected)
+                       Cache.MarkDelete(I);
+                 }               
                  if (OldEnd == LEnd && OrOp == OrKeep)
                     Cache.MarkKeep(I);
               }
@@ -799,7 +802,11 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
                  if ((Flags[I->ID] & Protected) == Protected)
                  {
                     if (DoUpgrade(Pkg) == true)
+                    {
                        Scores[Pkg->ID] = Scores[I->ID];
+                       break;
+                    }
+                    
                     continue;
                  }