]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-cache.cc
Fixed download only
[apt.git] / cmdline / apt-cache.cc
index 063add348c3a5479711a27fbcf9328163bef49d8..2e1d43dedd19bb0aa4949ecf0600ca391042781b 100644 (file)
@@ -1,6 +1,6 @@
 // -*- 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;
@@ -219,6 +230,27 @@ bool Stats(pkgCache &Cache)
    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                                              /*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -309,7 +341,7 @@ bool DoAdd(CommandLine &CmdL)
       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;
    
@@ -326,7 +358,8 @@ bool DoAdd(CommandLine &CmdL)
    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);
@@ -382,6 +415,7 @@ int ShowHelp()
    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;
@@ -411,6 +445,7 @@ int main(int argc,const char *argv[])
       {'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}};
@@ -487,6 +522,12 @@ int main(int argc,const char *argv[])
         UnMet(Cache);
         break;
       }
+
+      if (strcmp(CmdL.FileList[0],"check") == 0)
+      {
+        Check(Cache);
+        break;
+      }
             
       _error->Error("Invalid operation %s", CmdL.FileList[0]);
       break;