From 54db103455f0601d4c81e0bb368e602f2e77115c Mon Sep 17 00:00:00 2001 From: Arch Librarian Date: Mon, 20 Sep 2004 16:52:19 +0000 Subject: fixed casting bug Author: jgg Date: 1998-12-22 07:58:49 GMT fixed casting bug --- apt-pkg/acquire-method.h | 3 ++- apt-pkg/depcache.cc | 47 ++++++++++++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h index cefb60468..014cfb7f1 100644 --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-method.h,v 1.7 1998/12/05 04:19:02 jgg Exp $ +// $Id: acquire-method.h,v 1.8 1998/12/22 07:58:49 jgg Exp $ /* ###################################################################### Acquire Method - Method helper class + functions @@ -56,6 +56,7 @@ class pkgAcqMethod // Outgoing messages void Fail(bool Transient = false); + inline void Fail(const char *Why, bool Transient = false) {Fail(Why,Transient);}; void Fail(string Why, bool Transient = false); void URIStart(FetchResult &Res); void URIDone(FetchResult &Res,FetchResult *Alt = 0); diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index cd3597ef7..19f30b2c1 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: depcache.cc,v 1.12 1998/12/14 08:07:29 jgg Exp $ +// $Id: depcache.cc,v 1.13 1998/12/22 07:58:50 jgg Exp $ /* ###################################################################### Dependency Cache - Caches Dependency information. @@ -12,6 +12,7 @@ #pragma implementation "apt-pkg/depcache.h" #endif #include +#include #include #include @@ -104,18 +105,40 @@ pkgDepCache::VerIterator pkgDepCache::GetCandidateVer(PkgIterator Pkg) // Try to use an explicit target if (Pkg->TargetVer == 0) { - /* Not source/not automatic versions cannot be a candidate version - unless they are already installed */ - for (VerIterator I = Pkg.VersionList(); I.end() == false; I++) + string DistHack = _config->Find("to"); + + /* If disthack is set then we look for a dist by that name to install + from */ + if (DistHack.empty() == false) { - if (Pkg.CurrentVer() == I) - return I; - for (VerFileIterator J = I.FileList(); J.end() == false; J++) - if ((J.File()->Flags & Flag::NotSource) == 0 && - (J.File()->Flags & Flag::NotAutomatic) == 0) - return I; - } + for (VerIterator I = Pkg.VersionList(); I.end() == false; I++) + { + for (VerFileIterator J = I.FileList(); J.end() == false; J++) + if ((J.File()->Flags & Flag::NotSource) == 0 && + (J.File()->Flags & Flag::NotAutomatic) == 0 && + J.File().Archive() == DistHack) + return I; + } + // Hmm, target is current if there is no alternative. + if (Pkg->CurrentVer != 0) + return Pkg.CurrentVer(); + } + else + { + /* 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 && + (J.File()->Flags & Flag::NotAutomatic) == 0) + return I; + } + } + return VerIterator(*this,0); } else @@ -288,6 +311,8 @@ void pkgDepCache::AddStates(const PkgIterator &Pkg,int Add) { if (State.Mode == ModeDelete) iDelCount += Add; + if (State.Mode == ModeInstall) + iInstCount += Add; return; } -- cgit v1.2.3