]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/depcache.cc
Fixed --no-download
[apt.git] / apt-pkg / depcache.cc
index dc03ef68c6572a4d7fdb39df67f657603a29f050..707cb93cd10b5c8aa5cf38f056f737bc102f7055 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: depcache.cc,v 1.19 1999/07/10 04:58:42 jgg Exp $
+// $Id: depcache.cc,v 1.21 1999/10/22 05:58:54 jgg Exp $
 /* ######################################################################
 
    Dependency Cache - Caches Dependency information.
@@ -216,8 +216,9 @@ void pkgDepCache::AddSizes(const PkgIterator &Pkg,long Mult)
    }
    
    // Upgrading
-   if (Pkg->CurrentVer != 0 && P.InstallVer != (Version *)Pkg.CurrentVer() &&
-       P.InstallVer != 0)
+   if (Pkg->CurrentVer != 0 && 
+       (P.InstallVer != (Version *)Pkg.CurrentVer() || 
+       (P.iFlags & ReInstall) == ReInstall) && P.InstallVer != 0)
    {
       iUsrSize += Mult*((signed)P.InstVerIter(*this)->InstalledSize - 
                        (signed)Pkg.CurrentVer()->InstalledSize);
@@ -275,9 +276,13 @@ void pkgDepCache::AddStates(const PkgIterator &Pkg,int Add)
    
    // Installed, no upgrade
    if (State.Upgradable() == false)
-   {
+   {    
       if (State.Mode == ModeDelete)
         iDelCount += Add;
+      else
+        if ((State.iFlags & ReInstall) == ReInstall)
+           iInstCount += Add;
+      
       return;
    }
    
@@ -508,9 +513,10 @@ void pkgDepCache::Update(PkgIterator const &Pkg)
         Update(P.ParentPkg().RevDependsList());
 
    // Update the provides map for the candidate ver
-   for (PrvIterator P = PkgState[Pkg->ID].CandidateVerIter(*this).ProvidesList();
-       P.end() != true; P++)
-      Update(P.ParentPkg().RevDependsList());
+   if (PkgState[Pkg->ID].CandidateVer != 0)
+      for (PrvIterator P = PkgState[Pkg->ID].CandidateVerIter(*this).ProvidesList();
+          P.end() != true; P++)
+        Update(P.ParentPkg().RevDependsList());
 }
 
                                                                        /*}}}*/
@@ -702,7 +708,24 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst)
    }
 }
                                                                        /*}}}*/
-
+// DepCache::SetReInstall - Set the reinstallation flag                        /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To)
+{
+   RemoveSizes(Pkg);
+   RemoveStates(Pkg);
+   
+   StateCache &P = PkgState[Pkg->ID];
+   if (To == true)
+      P.iFlags |= ReInstall;
+   else
+      P.iFlags &= ~ReInstall;
+   
+   AddStates(Pkg);
+   AddSizes(Pkg);
+}
+                                                                       /*}}}*/
 // StateCache::Update - Compute the various static display things      /*{{{*/
 // ---------------------------------------------------------------------
 /* This is called whenever the Candidate version changes. */