]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/depcache.cc
Minor fixes
[apt.git] / apt-pkg / depcache.cc
index 9535a79f160119f2e88d43056ddecbf57aa60358..81127efb9a88b57f1d394989368007f654af7c37 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: depcache.cc,v 1.9 1998/12/07 23:54:42 jgg Exp $
+// $Id: depcache.cc,v 1.14 1998/12/22 08:01:04 jgg Exp $
 /* ######################################################################
 
    Dependency Cache - Caches Dependency information.
@@ -25,6 +25,12 @@ pkgDepCache::pkgDepCache(MMap &Map,OpProgress &Prog) :
 {
    if (_error->PendingError() == false)
       Init(&Prog);
+}
+pkgDepCache::pkgDepCache(MMap &Map) :
+             pkgCache(Map), PkgState(0), DepState(0)
+{
+   if (_error->PendingError() == false)
+      Init(0);
 }
                                                                        /*}}}*/
 // DepCache::~pkgDepCache - Destructor                                 /*{{{*/
@@ -98,14 +104,15 @@ pkgDepCache::VerIterator pkgDepCache::GetCandidateVer(PkgIterator Pkg)
    // Try to use an explicit target
    if (Pkg->TargetVer == 0)
    {
-      /* Not source versions cannot be a candidate version unless they
-         are already installed */
+      /* Not source/not automatic versions cannot be a candidate version 
+         unless they are already installed */
       for (VerIterator I = Pkg.VersionList(); I.end() == false; I++)
       {
         if (Pkg.CurrentVer() == I)
            return I;
         for (VerFileIterator J = I.FileList(); J.end() == false; J++)
-           if ((J.File()->Flags & Flag::NotSource) == 0)
+           if ((J.File()->Flags & Flag::NotSource) == 0 &&
+               (J.File()->Flags & Flag::NotAutomatic) == 0)
                return I;
       }
         
@@ -582,7 +589,10 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg)
    RemoveSizes(Pkg);
    RemoveStates(Pkg);
    
-   P.Mode = ModeDelete;
+   if (Pkg->CurrentVer == 0)
+      P.Mode = ModeKeep;
+   else
+      P.Mode = ModeDelete;
    P.InstallVer = 0;
    P.Flags &= Flag::Auto;