// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: apt-cache.cc,v 1.12 1998/11/14 07:20:29 jgg Exp $
+// $Id: apt-cache.cc,v 1.14 1998/12/04 22:56:53 jgg Exp $
/* ######################################################################
apt-cache - Manages the cache files
/* */
bool UnMet(pkgCache &Cache)
{
+ bool Important = _config->FindB("Important",false);
+
for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
{
for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; V++)
{
bool Header = false;
- for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++)
+ for (pkgCache::DepIterator D = V.DependsList(); D.end() == false;)
{
// Collect or groups
pkgCache::DepIterator Start;
pkgCache::DepIterator End;
D.GlobOr(Start,End);
- // Skip everything but depends
+/* cout << "s: Check " << Start.TargetPkg().Name() << ',' <<
+ End.TargetPkg().Name() << endl;*/
+
+ // Skip conflicts and replaces
if (End->Type != pkgCache::Dep::PreDepends &&
End->Type != pkgCache::Dep::Depends &&
End->Type != pkgCache::Dep::Suggests &&
End->Type != pkgCache::Dep::Recommends)
continue;
+ // Important deps only
+ if (Important == true)
+ if (End->Type != pkgCache::Dep::PreDepends &&
+ End->Type != pkgCache::Dep::Depends)
+ continue;
+
// Verify the or group
bool OK = false;
pkgCache::DepIterator RealStart = Start;
return true;
}
/*}}}*/
+// Check - Check some things about the cache /*{{{*/
+// ---------------------------------------------------------------------
+/* Debug aide mostly */
+bool Check(pkgCache &Cache)
+{
+ pkgCache::PkgIterator Pkg = Cache.PkgBegin();
+ for (;Pkg.end() != true; Pkg++)
+ {
+ if (Pkg.Section() == 0 && Pkg->VersionList != 0)
+ cout << "Bad section " << Pkg.Name() << endl;
+
+ for (pkgCache::VerIterator Cur = Pkg.VersionList();
+ Cur.end() != true; Cur++)
+ {
+ if (Cur->Priority < 1 || Cur->Priority > 5)
+ cout << "Bad prio " << Pkg.Name() << ',' << Cur.VerStr() << " == " << (int)Cur->Priority << endl;
+ }
+ }
+ return true;
+}
+ /*}}}*/
// Dump - show everything /*{{{*/
// ---------------------------------------------------------------------
/* */
return _error->Error("You must give at least one file name");
// Open the cache
- FileFd CacheF(_config->FindFile("Dir::Cache::srcpkgcache"),FileFd::WriteAny);
+ FileFd CacheF(_config->FindFile("Dir::Cache::pkgcache"),FileFd::WriteAny);
if (_error->PendingError() == true)
return false;
for (const char **I = CmdL.FileList + 1; *I != 0; I++)
{
Progress.OverallProgress(I - CmdL.FileList,Length,1,"Generating cache");
-
+ Progress.SubProgress(Length);
+
// Do the merge
FileFd TagF(*I,FileFd::ReadOnly);
debListParser Parser(TagF);
cout << " dump - Show the entire file in a terse form" << endl;
cout << " dumpavail - Print an available file to stdout" << endl;
cout << " unmet - Show unmet dependencies" << endl;
+ cout << " check - Check the cache a bit" << endl;
cout << endl;
cout << "Options:" << endl;
cout << " -h This help text." << endl;
{'p',"pkg-cache","Dir::Cache::pkgcache",CommandLine::HasArg},
{'s',"src-cache","Dir::Cache::srcpkgcache",CommandLine::HasArg},
{'q',"quiet","quiet",CommandLine::IntLevel},
+ {'i',"important","Important",0},
{'c',"config-file",0,CommandLine::ConfigFile},
{'o',"option",0,CommandLine::ArbItem},
{0,0,0,0}};
UnMet(Cache);
break;
}
+
+ if (strcmp(CmdL.FileList[0],"check") == 0)
+ {
+ Check(Cache);
+ break;
+ }
_error->Error("Invalid operation %s", CmdL.FileList[0]);
break;