From 5b8c90bf2216cc819f3eb99387d88d4a712059d9 Mon Sep 17 00:00:00 2001 From: Arch Librarian Date: Mon, 20 Sep 2004 16:53:13 +0000 Subject: Fixed dumpavail some more Author: jgg Date: 1999-03-18 04:52:51 GMT Fixed dumpavail some more --- cmdline/apt-cache.cc | 17 ++++++++++++----- dselect/update | 3 +++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 8f47739a5..a235ad9a1 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: apt-cache.cc,v 1.29 1999/03/17 03:25:25 jgg Exp $ +// $Id: apt-cache.cc,v 1.30 1999/03/18 04:52:51 jgg Exp $ /* ###################################################################### apt-cache - Manages the cache files @@ -333,15 +333,19 @@ bool Dump(CommandLine &Cmd) /*}}}*/ // GetCandidateVer - Returns the Candidate install version /*{{{*/ // --------------------------------------------------------------------- -/* This should really use the DepCache or something.. Copied from there. */ -static pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator Pkg) +/* This should really use the DepCache or something.. Copied from there. + Allow current is required to filter out the status file when emitting + an available file. */ +static pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator Pkg, + bool AllowCurrent = true) { /* Not source/not automatic versions cannot be a candidate version unless they are already installed */ for (pkgCache::VerIterator I = Pkg.VersionList(); I.end() == false; I++) { - if (Pkg.CurrentVer() == I) + if (Pkg.CurrentVer() == I && AllowCurrent == true) return I; + for (pkgCache::VerFileIterator J = I.FileList(); J.end() == false; J++) if ((J.File()->Flags & pkgCache::Flag::NotSource) == 0 && (J.File()->Flags & pkgCache::Flag::NotAutomatic) == 0) @@ -361,6 +365,9 @@ bool DumpAvail(CommandLine &Cmd) for (pkgCache::PkgFileIterator I = Cache.FileBegin(); I.end() == false; I++) { + if ((I->Flags & pkgCache::Flag::NotSource) != 0) + continue; + if (I.IsOk() == false) { delete [] Buffer; @@ -379,7 +386,7 @@ bool DumpAvail(CommandLine &Cmd) for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++) { // Find the proper version to use. We should probably use the DepCache. - pkgCache::VerIterator V = GetCandidateVer(P); + pkgCache::VerIterator V = GetCandidateVer(P,false); if (V.end() == true || V.FileList().File() != I) continue; diff --git a/dselect/update b/dselect/update index ec5e78cc2..87dc21aa1 100755 --- a/dselect/update +++ b/dselect/update @@ -14,6 +14,9 @@ RES=`apt-config shell OPTS DSelect::UpdateOptions \ PROMPT DSelect::PromptAfterUpdate` eval $RES +# It looks slightly ugly to have a double / in the dpkg output +CACHEDIR=`echo $CACHEDIR | sed -e "s|/$||"` + $APTGET $OPTS update echo "Merging Available information" -- cgit v1.2.3