]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-cache.cc
Provide "apt-get full-upgrade" to match "apt full-upgrade"
[apt.git] / cmdline / apt-cache.cc
index 117a4429235c07aad383f6ec692086b0c2a806a8..f7abb823d6d671befb1847f56b4580af4ccc0f29 100644 (file)
@@ -310,10 +310,15 @@ static void ShowHashTableStats(std::string Type,
 // Stats - Dump some nice statistics                                   /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-static bool Stats(CommandLine &)
+static bool Stats(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
    pkgCache *Cache = CacheFile.GetPkgCache();
+
+   if (CmdL.FileSize() > 1) {
+      _error->Error(_("apt-cache stats does not take any arguments"));
+      return false;
+   }
    if (unlikely(Cache == NULL))
       return false;
 
@@ -1327,6 +1332,7 @@ static bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V)
 struct ExDescFile
 {
    pkgCache::DescFile *Df;
+   pkgCache::VerIterator V;
    map_id_t ID;
 };
 
@@ -1412,6 +1418,7 @@ static bool Search(CommandLine &CmdL)
         if (D.end() == true)
            continue;
         DFList[G->ID].Df = D.FileList();
+        DFList[G->ID].V = V;
         DFList[G->ID].ID = G->ID;
       }
 
@@ -1431,11 +1438,12 @@ static bool Search(CommandLine &CmdL)
         if (D.end() == true)
            continue;
         DFList[id].Df = D.FileList();
+        DFList[id].V = V;
         DFList[id].ID = id;
 
         size_t const PrvPatternOffset = id * NumPatterns;
         for (unsigned I = 0; I < NumPatterns; ++I)
-           PatternMatch[PrvPatternOffset + I] = PatternMatch[PatternOffset + I];
+           PatternMatch[PrvPatternOffset + I] |= PatternMatch[PatternOffset + I];
       }
    }
 
@@ -1472,13 +1480,7 @@ static bool Search(CommandLine &CmdL)
       if (matchedAll == true)
       {
         if (ShowFull == true)
-        {
-           const char *Start;
-           const char *End;
-           P.GetRec(Start,End);
-           fwrite(Start,End-Start,1,stdout);
-           putc('\n',stdout);
-        }       
+           DisplayRecord(CacheFile, J->V);
         else
            printf("%s - %s\n",P.Name().c_str(),P.ShortDesc().c_str());
       }