]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-cache.cc
support optional PulseInterval in ListUpdate
[apt.git] / cmdline / apt-cache.cc
index 7f871f0730860c35eb59f3d8693c74a023bf2f1c..c0655da40b5171c8a5a9a3e93c3b2dd9a6614d87 100644 (file)
@@ -102,13 +102,15 @@ bool UnMet(CommandLine &CmdL)
            if (End->Type != pkgCache::Dep::PreDepends &&
                End->Type != pkgCache::Dep::Depends && 
                End->Type != pkgCache::Dep::Suggests &&
            if (End->Type != pkgCache::Dep::PreDepends &&
                End->Type != pkgCache::Dep::Depends && 
                End->Type != pkgCache::Dep::Suggests &&
-               End->Type != pkgCache::Dep::Recommends)
+               End->Type != pkgCache::Dep::Recommends &&
+               End->Type != pkgCache::Dep::DpkgBreaks)
               continue;
 
            // Important deps only
            if (Important == true)
               if (End->Type != pkgCache::Dep::PreDepends &&
               continue;
 
            // Important deps only
            if (Important == true)
               if (End->Type != pkgCache::Dep::PreDepends &&
-                  End->Type != pkgCache::Dep::Depends)
+                  End->Type != pkgCache::Dep::Depends &&
+                  End->Type != pkgCache::Dep::DpkgBreaks)
                  continue;
            
            // Verify the or group
                  continue;
            
            // Verify the or group
@@ -242,7 +244,7 @@ bool DumpPackage(CommandLine &CmdL)
 bool Stats(CommandLine &Cmd)
 {
    pkgCache &Cache = *GCache;
 bool Stats(CommandLine &Cmd)
 {
    pkgCache &Cache = *GCache;
-   cout << _("Total Package Names : ") << Cache.Head().PackageCount << " (" <<
+   cout << _("Total package names : ") << Cache.Head().PackageCount << " (" <<
       SizeToStr(Cache.Head().PackageCount*Cache.Head().PackageSz) << ')' << endl;
 
    int Normal = 0;
       SizeToStr(Cache.Head().PackageCount*Cache.Head().PackageSz) << ')' << endl;
 
    int Normal = 0;
@@ -282,24 +284,24 @@ bool Stats(CommandLine &Cmd)
         continue;
       }
    }
         continue;
       }
    }
-   cout << _("  Normal Packages: ") << Normal << endl;
-   cout << _("  Pure Virtual Packages: ") << Virtual << endl;
-   cout << _("  Single Virtual Packages: ") << DVirt << endl;
-   cout << _("  Mixed Virtual Packages: ") << NVirt << endl;
+   cout << _("  Normal packages: ") << Normal << endl;
+   cout << _("  Pure virtual packages: ") << Virtual << endl;
+   cout << _("  Single virtual packages: ") << DVirt << endl;
+   cout << _("  Mixed virtual packages: ") << NVirt << endl;
    cout << _("  Missing: ") << Missing << endl;
    
    cout << _("  Missing: ") << Missing << endl;
    
-   cout << _("Total Distinct Versions: ") << Cache.Head().VersionCount << " (" <<
+   cout << _("Total distinct versions: ") << Cache.Head().VersionCount << " (" <<
       SizeToStr(Cache.Head().VersionCount*Cache.Head().VersionSz) << ')' << endl;
    cout << _("Total Distinct Descriptions: ") << Cache.Head().DescriptionCount << " (" <<
       SizeToStr(Cache.Head().DescriptionCount*Cache.Head().DescriptionSz) << ')' << endl;
       SizeToStr(Cache.Head().VersionCount*Cache.Head().VersionSz) << ')' << endl;
    cout << _("Total Distinct Descriptions: ") << Cache.Head().DescriptionCount << " (" <<
       SizeToStr(Cache.Head().DescriptionCount*Cache.Head().DescriptionSz) << ')' << endl;
-   cout << _("Total Dependencies: ") << Cache.Head().DependsCount << " (" << 
+   cout << _("Total dependencies: ") << Cache.Head().DependsCount << " (" << 
       SizeToStr(Cache.Head().DependsCount*Cache.Head().DependencySz) << ')' << endl;
    
       SizeToStr(Cache.Head().DependsCount*Cache.Head().DependencySz) << ')' << endl;
    
-   cout << _("Total Ver/File relations: ") << Cache.Head().VerFileCount << " (" <<
+   cout << _("Total ver/file relations: ") << Cache.Head().VerFileCount << " (" <<
       SizeToStr(Cache.Head().VerFileCount*Cache.Head().VerFileSz) << ')' << endl;
    cout << _("Total Desc/File relations: ") << Cache.Head().DescFileCount << " (" <<
       SizeToStr(Cache.Head().DescFileCount*Cache.Head().DescFileSz) << ')' << endl;
       SizeToStr(Cache.Head().VerFileCount*Cache.Head().VerFileSz) << ')' << endl;
    cout << _("Total Desc/File relations: ") << Cache.Head().DescFileCount << " (" <<
       SizeToStr(Cache.Head().DescFileCount*Cache.Head().DescFileSz) << ')' << endl;
-   cout << _("Total Provides Mappings: ") << Cache.Head().ProvidesCount << " (" <<
+   cout << _("Total Provides mappings: ") << Cache.Head().ProvidesCount << " (" <<
       SizeToStr(Cache.Head().ProvidesCount*Cache.Head().ProvidesSz) << ')' << endl;
    
    // String list stats
       SizeToStr(Cache.Head().ProvidesCount*Cache.Head().ProvidesSz) << ')' << endl;
    
    // String list stats
@@ -311,7 +313,7 @@ bool Stats(CommandLine &Cmd)
       Count++;
       Size += strlen(Cache.StrP + I->String) + 1;
    }
       Count++;
       Size += strlen(Cache.StrP + I->String) + 1;
    }
-   cout << _("Total Globbed Strings: ") << Count << " (" << SizeToStr(Size) << ')' << endl;
+   cout << _("Total globbed strings: ") << Count << " (" << SizeToStr(Size) << ')' << endl;
 
    unsigned long DepVerSize = 0;
    for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
 
    unsigned long DepVerSize = 0;
    for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
@@ -325,12 +327,12 @@ bool Stats(CommandLine &Cmd)
         }
       }
    }
         }
       }
    }
-   cout << _("Total Dependency Version space: ") << SizeToStr(DepVerSize) << endl;
+   cout << _("Total dependency version space: ") << SizeToStr(DepVerSize) << endl;
    
    unsigned long Slack = 0;
    for (int I = 0; I != 7; I++)
       Slack += Cache.Head().Pools[I].ItemSize*Cache.Head().Pools[I].Count;
    
    unsigned long Slack = 0;
    for (int I = 0; I != 7; I++)
       Slack += Cache.Head().Pools[I].ItemSize*Cache.Head().Pools[I].Count;
-   cout << _("Total Slack space: ") << SizeToStr(Slack) << endl;
+   cout << _("Total slack space: ") << SizeToStr(Slack) << endl;
    
    unsigned long Total = 0;
    Total = Slack + Size + Cache.Head().DependsCount*Cache.Head().DependencySz + 
    
    unsigned long Total = 0;
    Total = Slack + Size + Cache.Head().DependsCount*Cache.Head().DependencySz + 
@@ -338,7 +340,7 @@ bool Stats(CommandLine &Cmd)
            Cache.Head().PackageCount*Cache.Head().PackageSz + 
            Cache.Head().VerFileCount*Cache.Head().VerFileSz +
            Cache.Head().ProvidesCount*Cache.Head().ProvidesSz;
            Cache.Head().PackageCount*Cache.Head().PackageSz + 
            Cache.Head().VerFileCount*Cache.Head().VerFileSz +
            Cache.Head().ProvidesCount*Cache.Head().ProvidesSz;
-   cout << _("Total Space Accounted for: ") << SizeToStr(Total) << endl;
+   cout << _("Total space accounted for: ") << SizeToStr(Total) << endl;
    
    return true;
 }
    
    return true;
 }
@@ -869,6 +871,7 @@ bool XVcg(CommandLine &CmdL)
                     then show the relation but do not recurse */
                  if (Hit == false && 
                      (D->Type == pkgCache::Dep::Conflicts ||
                     then show the relation but do not recurse */
                  if (Hit == false && 
                      (D->Type == pkgCache::Dep::Conflicts ||
+                      D->Type == pkgCache::Dep::DpkgBreaks ||
                       D->Type == pkgCache::Dep::Obsoletes))
                  {
                     if (Show[D.TargetPkg()->ID] == None && 
                       D->Type == pkgCache::Dep::Obsoletes))
                  {
                     if (Show[D.TargetPkg()->ID] == None && 
@@ -890,6 +893,9 @@ bool XVcg(CommandLine &CmdL)
                  case pkgCache::Dep::Conflicts:
                    printf("label: \"conflicts\" color: lightgreen }\n");
                    break;
                  case pkgCache::Dep::Conflicts:
                    printf("label: \"conflicts\" color: lightgreen }\n");
                    break;
+                 case pkgCache::Dep::DpkgBreaks:
+                   printf("label: \"breaks\" color: lightgreen }\n");
+                   break;
                  case pkgCache::Dep::Obsoletes:
                    printf("label: \"obsoletes\" color: lightgreen }\n");
                    break;
                  case pkgCache::Dep::Obsoletes:
                    printf("label: \"obsoletes\" color: lightgreen }\n");
                    break;
@@ -1225,31 +1231,41 @@ bool DisplayRecord(pkgCache::VerIterator V)
       return false;
    }
 
       return false;
    }
 
-   // Strip the Description
-   unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:");
-   *DescP='\0';
+   // Get a pointer to start of Description field
+   const unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:");
 
 
-   // Write all the rest
-   if (fwrite(Buffer,1,V.FileList()->Size+1,stdout) < (size_t)(V.FileList()->Size+1))
+   // Write all but Description
+   if (fwrite(Buffer,1,DescP - Buffer,stdout) < (size_t)(DescP - Buffer))
    {
       delete [] Buffer;
       return false;
    }
 
    {
       delete [] Buffer;
       return false;
    }
 
-   delete [] Buffer;
-
    // Show the right description
    pkgRecords Recs(*GCache);
    // Show the right description
    pkgRecords Recs(*GCache);
-   pkgCache::DescIterator DescDefault = V.DescriptionList();
-   pkgCache::DescIterator Desc = DescDefault;
-   for (; Desc.end() == false; Desc++)
-      if (pkgIndexFile::LanguageCode() == Desc.LanguageCode())
-        break;
-   if (Desc.end() == true) Desc = DescDefault;
-
+   pkgCache::DescIterator Desc = V.TranslatedDescription();
    pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
    pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
-   cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc() << endl;
+   cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc();
+
+   // Find the first field after the description (if there is any)
+   for(DescP++;DescP != &Buffer[V.FileList()->Size];DescP++) 
+   {
+      if(*DescP == '\n' && *(DescP+1) != ' ') 
+      {
+        // write the rest of the buffer
+        const unsigned char *end=&Buffer[V.FileList()->Size];
+        if (fwrite(DescP,1,end-DescP,stdout) < (size_t)(end-DescP)) 
+        {
+           delete [] Buffer;
+           return false;
+        }
 
 
+        break;
+      }
+   }
+   // write a final newline (after the description)
+   cout<<endl;
+   delete [] Buffer;
 
    return true;
 }
 
    return true;
 }
@@ -1406,19 +1422,6 @@ bool ShowPackage(CommandLine &CmdL)
 
       ++found;
 
 
       ++found;
 
-      // Show virtual packages
-      if (Pkg->ProvidesList != 0)
-      {
-        ioprintf(std::cout,_("Package %s is a virtual package provided by:\n"),
-                 Pkg.Name());
-        
-        pkgCache::PrvIterator I = Pkg.ProvidesList();
-        for (; I.end() == false; I++)
-           cout << "  " << I.OwnerPkg().Name() << endl;
-        cout << _("You should explicitly select one to show.") << endl;
-        continue;
-      }
-
       // Find the proper version to use.
       if (_config->FindB("APT::Cache::AllVersions","true") == true)
       {
       // Find the proper version to use.
       if (_config->FindB("APT::Cache::AllVersions","true") == true)
       {
@@ -1518,7 +1521,7 @@ bool Policy(CommandLine &CmdL)
    // Print out all of the package files
    if (CmdL.FileList[1] == 0)
    {
    // Print out all of the package files
    if (CmdL.FileList[1] == 0)
    {
-      cout << _("Package Files:") << endl;   
+      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
       for (pkgCache::PkgFileIterator F = Cache.FileBegin(); F.end() == false; F++)
       {
         // Locate the associated index files so we can derive a description
@@ -1538,7 +1541,7 @@ bool Policy(CommandLine &CmdL)
       }
       
       // Show any packages have explicit pins
       }
       
       // Show any packages have explicit pins
-      cout << _("Pinned Packages:") << endl;
+      cout << _("Pinned packages:") << endl;
       pkgCache::PkgIterator I = Cache.PkgBegin();
       for (;I.end() != true; I++)
       {
       pkgCache::PkgIterator I = Cache.PkgBegin();
       for (;I.end() != true; I++)
       {
@@ -1588,7 +1591,7 @@ bool Policy(CommandLine &CmdL)
       // Pinned version
       if (Plcy.GetPriority(Pkg) != 0)
       {
       // Pinned version
       if (Plcy.GetPriority(Pkg) != 0)
       {
-        cout << _("  Package Pin: ");
+        cout << _("  Package pin: ");
         V = Plcy.GetMatch(Pkg);
         if (V.end() == true)
            cout << _("(not found)") << endl;
         V = Plcy.GetMatch(Pkg);
         if (V.end() == true)
            cout << _("(not found)") << endl;
@@ -1597,7 +1600,7 @@ bool Policy(CommandLine &CmdL)
       }
       
       // Show the priority tables
       }
       
       // Show the priority tables
-      cout << _("  Version Table:") << endl;
+      cout << _("  Version table:") << endl;
       for (V = Pkg.VersionList(); V.end() == false; V++)
       {
         if (Pkg.CurrentVer() == V)
       for (V = Pkg.VersionList(); V.end() == false; V++)
       {
         if (Pkg.CurrentVer() == V)
@@ -1633,10 +1636,11 @@ bool Madison(CommandLine &CmdL)
 
    pkgCache &Cache = *GCache;
 
 
    pkgCache &Cache = *GCache;
 
-   // Create the text record parsers
+   // Create the src text record parsers and ignore errors about missing
+   // deb-src lines that are generated from pkgSrcRecords::pkgSrcRecords
    pkgSrcRecords SrcRecs(*SrcList);
    if (_error->PendingError() == true)
    pkgSrcRecords SrcRecs(*SrcList);
    if (_error->PendingError() == true)
-      return false;
+      _error->Discard();
 
    for (const char **I = CmdL.FileList + 1; *I != 0; I++)
    {
 
    for (const char **I = CmdL.FileList + 1; *I != 0; I++)
    {
@@ -1707,8 +1711,8 @@ bool GenCaches(CommandLine &Cmd)
 /* */
 bool ShowHelp(CommandLine &Cmd)
 {
 /* */
 bool ShowHelp(CommandLine &Cmd)
 {
-   ioprintf(cout,_("%s %s for %s %s compiled on %s %s\n"),PACKAGE,VERSION,
-           COMMON_OS,COMMON_CPU,__DATE__,__TIME__);
+   ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION,
+           COMMON_ARCH,__DATE__,__TIME__);
    
    if (_config->FindB("version") == true)
      return true;
    
    if (_config->FindB("version") == true)
      return true;