|
|
@ -1,6 +1,6 @@ |
|
|
|
// -*- mode: cpp; mode: fold -*-
|
|
|
|
// Description /*{{{*/
|
|
|
|
// $Id: apt-cache.cc,v 1.46 2001/03/07 04:25:35 jgg Exp $
|
|
|
|
// $Id: apt-cache.cc,v 1.47 2001/04/29 05:13:51 jgg Exp $
|
|
|
|
/* ######################################################################
|
|
|
|
|
|
|
|
apt-cache - Manages the cache files |
|
|
@ -39,6 +39,7 @@ |
|
|
|
/*}}}*/ |
|
|
|
|
|
|
|
pkgCache *GCache = 0; |
|
|
|
pkgSourceList *SrcList = 0; |
|
|
|
|
|
|
|
// LocalitySort - Sort a version list by package file locality /*{{{*/
|
|
|
|
// ---------------------------------------------------------------------
|
|
|
@ -1093,6 +1094,125 @@ bool ShowSrcPackage(CommandLine &CmdL) |
|
|
|
while ((Parse = SrcRecs.Find(*I,false)) != 0) |
|
|
|
cout << Parse->AsStr() << endl;; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
/*}}}*/ |
|
|
|
// Policy - Show the results of the preferences file /*{{{*/
|
|
|
|
// ---------------------------------------------------------------------
|
|
|
|
/* */ |
|
|
|
bool Policy(CommandLine &CmdL) |
|
|
|
{ |
|
|
|
if (SrcList == 0) |
|
|
|
return _error->Error("Generate must be enabled for this function"); |
|
|
|
|
|
|
|
pkgCache &Cache = *GCache; |
|
|
|
pkgPolicy Plcy(&Cache); |
|
|
|
if (ReadPinFile(Plcy) == false) |
|
|
|
return false; |
|
|
|
|
|
|
|
// Print out all of the package files
|
|
|
|
if (CmdL.FileList[1] == 0) |
|
|
|
{ |
|
|
|
cout << _("Package Files:") << endl; |
|
|
|
for (pkgCache::PkgFileIterator F = Cache.FileBegin(); F.end() == false; F++) |
|
|
|
{ |
|
|
|
// Locate the associated index files so we can derive a description
|
|
|
|
pkgIndexFile *Indx; |
|
|
|
if (SrcList->FindIndex(F,Indx) == false && |
|
|
|
_system->FindIndex(F,Indx) == false) |
|
|
|
return _error->Error(_("Cache is out of sync, can't x-ref a package file")); |
|
|
|
printf(_("%4i %s\n"), |
|
|
|
Plcy.GetPriority(F),Indx->Describe(true).c_str()); |
|
|
|
|
|
|
|
// Print the reference information for the package
|
|
|
|
string Str = F.RelStr(); |
|
|
|
if (Str.empty() == false) |
|
|
|
printf(" release %s\n",F.RelStr().c_str()); |
|
|
|
if (F.Site() != 0 && F.Site()[0] != 0) |
|
|
|
printf(" origin %s\n",F.Site()); |
|
|
|
} |
|
|
|
|
|
|
|
// Show any packages have explicit pins
|
|
|
|
cout << _("Pinned Packages:") << endl; |
|
|
|
pkgCache::PkgIterator I = Cache.PkgBegin(); |
|
|
|
for (;I.end() != true; I++) |
|
|
|
{ |
|
|
|
if (Plcy.GetPriority(I) == 0) |
|
|
|
continue; |
|
|
|
|
|
|
|
// Print the package name and the version we are forcing to
|
|
|
|
cout << " " << I.Name() << " -> "; |
|
|
|
|
|
|
|
pkgCache::VerIterator V = Plcy.GetMatch(I); |
|
|
|
if (V.end() == true) |
|
|
|
cout << _("(not found)") << endl; |
|
|
|
else |
|
|
|
cout << V.VerStr() << endl; |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
// Print out detailed information for each package
|
|
|
|
for (const char **I = CmdL.FileList + 1; *I != 0; I++) |
|
|
|
{ |
|
|
|
pkgCache::PkgIterator Pkg = Cache.FindPkg(*I); |
|
|
|
if (Pkg.end() == true) |
|
|
|
{ |
|
|
|
_error->Warning(_("Unable to locate package %s"),*I); |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
cout << Pkg.Name() << ":" << endl; |
|
|
|
|
|
|
|
// Installed version
|
|
|
|
cout << _(" Installed: "); |
|
|
|
if (Pkg->CurrentVer == 0) |
|
|
|
cout << _("(none)") << endl; |
|
|
|
else |
|
|
|
cout << Pkg.CurrentVer().VerStr() << endl; |
|
|
|
|
|
|
|
// Candidate Version
|
|
|
|
cout << _(" Candidate: "); |
|
|
|
pkgCache::VerIterator V = Plcy.GetCandidateVer(Pkg); |
|
|
|
if (V.end() == true) |
|
|
|
cout << _("(none)") << endl; |
|
|
|
else |
|
|
|
cout << V.VerStr() << endl; |
|
|
|
|
|
|
|
// Pinned version
|
|
|
|
if (Plcy.GetPriority(Pkg) != 0) |
|
|
|
{ |
|
|
|
cout << _(" Package Pin: "); |
|
|
|
V = Plcy.GetMatch(Pkg); |
|
|
|
if (V.end() == true) |
|
|
|
cout << _("(not found)") << endl; |
|
|
|
else |
|
|
|
cout << V.VerStr() << endl; |
|
|
|
} |
|
|
|
|
|
|
|
// Show the priority tables
|
|
|
|
cout << _(" Version Table:") << endl; |
|
|
|
for (V = Pkg.VersionList(); V.end() == false; V++) |
|
|
|
{ |
|
|
|
if (Pkg.CurrentVer() == V) |
|
|
|
cout << " *** " << V.VerStr(); |
|
|
|
else |
|
|
|
cout << " " << V.VerStr(); |
|
|
|
cout << " " << Plcy.GetPriority(Pkg) << endl; |
|
|
|
for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; VF++) |
|
|
|
{ |
|
|
|
// Locate the associated index files so we can derive a description
|
|
|
|
pkgIndexFile *Indx; |
|
|
|
if (SrcList->FindIndex(VF.File(),Indx) == false && |
|
|
|
_system->FindIndex(VF.File(),Indx) == false) |
|
|
|
return _error->Error(_("Cache is out of sync, can't x-ref a package file")); |
|
|
|
printf(_(" %4i %s\n"),Plcy.GetPriority(VF.File()), |
|
|
|
Indx->Describe(true).c_str()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
/*}}}*/ |
|
|
@ -1194,6 +1314,7 @@ int main(int argc,const char *argv[]) |
|
|
|
{"dotty",&Dotty}, |
|
|
|
{"show",&ShowPackage}, |
|
|
|
{"pkgnames",&ShowPkgNames}, |
|
|
|
{"policy",&Policy}, |
|
|
|
{0,0}}; |
|
|
|
|
|
|
|
CacheInitialize(); |
|
|
@ -1231,12 +1352,12 @@ int main(int argc,const char *argv[]) |
|
|
|
else |
|
|
|
{ |
|
|
|
// Open the cache file
|
|
|
|
pkgSourceList List; |
|
|
|
List.ReadMainList(); |
|
|
|
SrcList = new pkgSourceList; |
|
|
|
SrcList->ReadMainList(); |
|
|
|
|
|
|
|
// Generate it and map it
|
|
|
|
OpProgress Prog; |
|
|
|
pkgMakeStatusCache(List,Prog,&Map,true); |
|
|
|
pkgMakeStatusCache(*SrcList,Prog,&Map,true); |
|
|
|
} |
|
|
|
|
|
|
|
if (_error->PendingError() == false) |
|
|
|