X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/a52f938bcf7f31d348c6ce1d462a8ce14a38b8cc..1979e742ad5e2a0b6e547fbe3f4c4066b5a9bd2e:/cmdline/apt-cache.cc diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index a3f840ce3..aea9ebeba 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -71,12 +71,6 @@ void LocalitySort(pkgCache::VerFile **begin, { qsort(begin,Count,Size,LocalityCompare); } - -void LocalitySort(pkgCache::DescFile **begin, - unsigned long Count,size_t Size) -{ - qsort(begin,Count,Size,LocalityCompare); -} /*}}}*/ // UnMet - Show unmet dependencies /*{{{*/ // --------------------------------------------------------------------- @@ -188,14 +182,7 @@ bool DumpPackage(CommandLine &CmdL) { cout << Cur.VerStr(); for (pkgCache::VerFileIterator Vf = Cur.FileList(); Vf.end() == false; Vf++) - cout << " (" << Vf.File().FileName() << ")"; - cout << endl; - for (pkgCache::DescIterator D = Cur.DescriptionList(); D.end() == false; D++) - { - cout << " Description Language: " << D.LanguageCode() << endl - << " File: " << D.FileList().File().FileName() << endl - << " MD5: " << D.md5() << endl; - } + cout << "(" << Vf.File().FileName() << ")"; cout << endl; } @@ -242,7 +229,7 @@ bool DumpPackage(CommandLine &CmdL) 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; @@ -282,24 +269,20 @@ bool Stats(CommandLine &Cmd) 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 << _("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; - cout << _("Total Dependencies: ") << Cache.Head().DependsCount << " (" << + cout << _("Total dependencies: ") << Cache.Head().DependsCount << " (" << 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; - 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 @@ -311,7 +294,7 @@ bool Stats(CommandLine &Cmd) 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++) @@ -325,12 +308,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; - 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 + @@ -338,7 +321,7 @@ bool Stats(CommandLine &Cmd) 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; } @@ -361,12 +344,6 @@ bool Dump(CommandLine &Cmd) for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++) cout << " Depends: " << D.TargetPkg().Name() << ' ' << DeNull(D.TargetVer()) << endl; - for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; D++) - { - cout << " Description Language: " << D.LanguageCode() << endl - << " File: " << D.FileList().File().FileName() << endl - << " MD5: " << D.md5() << endl; - } } } @@ -1215,51 +1192,28 @@ bool DisplayRecord(pkgCache::VerIterator V) if (_error->PendingError() == true) return false; - // Read the record + // Read the record and then write it out again. unsigned char *Buffer = new unsigned char[GCache->HeaderP->MaxVerFileSize+1]; Buffer[V.FileList()->Size] = '\n'; if (PkgF.Seek(V.FileList()->Offset) == false || - PkgF.Read(Buffer,V.FileList()->Size) == false) - { - delete [] Buffer; - return false; - } - - // Strip the Description - unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:"); - *DescP='\0'; - - // Write all the rest - if (fwrite(Buffer,1,V.FileList()->Size+1,stdout) < V.FileList()->Size+1)) + PkgF.Read(Buffer,V.FileList()->Size) == false || + fwrite(Buffer,1,V.FileList()->Size+1,stdout) < (size_t)(V.FileList()->Size+1)) { delete [] Buffer; return false; } - + delete [] Buffer; - // 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; - - pkgRecords::Parser &P = Recs.Lookup(Desc.FileList()); - cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc() << endl; - - return true; } /*}}}*/ // Search - Perform a search /*{{{*/ // --------------------------------------------------------------------- /* This searches the package names and pacakge descriptions for a pattern */ -struct ExDescFile +struct ExVerFile { - pkgCache::DescFile *Df; + pkgCache::VerFile *Vf; bool NameMatch; }; @@ -1299,35 +1253,35 @@ bool Search(CommandLine &CmdL) return false; } - ExDescFile *DFList = new ExDescFile[Cache.HeaderP->PackageCount+1]; - memset(DFList,0,sizeof(*DFList)*Cache.HeaderP->PackageCount+1); + ExVerFile *VFList = new ExVerFile[Cache.HeaderP->PackageCount+1]; + memset(VFList,0,sizeof(*VFList)*Cache.HeaderP->PackageCount+1); // Map versions that we want to write out onto the VerList array. for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++) { - DFList[P->ID].NameMatch = NumPatterns != 0; + VFList[P->ID].NameMatch = NumPatterns != 0; for (unsigned I = 0; I != NumPatterns; I++) { if (regexec(&Patterns[I],P.Name(),0,0,0) == 0) - DFList[P->ID].NameMatch &= true; + VFList[P->ID].NameMatch &= true; else - DFList[P->ID].NameMatch = false; + VFList[P->ID].NameMatch = false; } // Doing names only, drop any that dont match.. - if (NamesOnly == true && DFList[P->ID].NameMatch == false) + if (NamesOnly == true && VFList[P->ID].NameMatch == false) continue; // Find the proper version to use. pkgCache::VerIterator V = Plcy.GetCandidateVer(P); if (V.end() == false) - DFList[P->ID].Df = V.DescriptionList().FileList(); + VFList[P->ID].Vf = V.FileList(); } // Include all the packages that provide matching names too for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++) { - if (DFList[P->ID].NameMatch == false) + if (VFList[P->ID].NameMatch == false) continue; for (pkgCache::PrvIterator Prv = P.ProvidesList() ; Prv.end() == false; Prv++) @@ -1335,18 +1289,18 @@ bool Search(CommandLine &CmdL) pkgCache::VerIterator V = Plcy.GetCandidateVer(Prv.OwnerPkg()); if (V.end() == false) { - DFList[Prv.OwnerPkg()->ID].Df = V.DescriptionList().FileList(); - DFList[Prv.OwnerPkg()->ID].NameMatch = true; + VFList[Prv.OwnerPkg()->ID].Vf = V.FileList(); + VFList[Prv.OwnerPkg()->ID].NameMatch = true; } } } - - LocalitySort(&DFList->Df,Cache.HeaderP->PackageCount,sizeof(*DFList)); + + LocalitySort(&VFList->Vf,Cache.HeaderP->PackageCount,sizeof(*VFList)); // Iterate over all the version records and check them - for (ExDescFile *J = DFList; J->Df != 0; J++) + for (ExVerFile *J = VFList; J->Vf != 0; J++) { - pkgRecords::Parser &P = Recs.Lookup(pkgCache::DescFileIterator(Cache,J->Df)); + pkgRecords::Parser &P = Recs.Lookup(pkgCache::VerFileIterator(Cache,J->Vf)); bool Match = true; if (J->NameMatch == false) @@ -1377,7 +1331,7 @@ bool Search(CommandLine &CmdL) } } - delete [] DFList; + delete [] VFList; for (unsigned I = 0; I != NumPatterns; I++) regfree(&Patterns[I]); if (ferror(stdout)) @@ -1406,19 +1360,6 @@ bool ShowPackage(CommandLine &CmdL) ++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) { @@ -1518,7 +1459,7 @@ bool Policy(CommandLine &CmdL) // 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 @@ -1538,7 +1479,7 @@ bool Policy(CommandLine &CmdL) } // Show any packages have explicit pins - cout << _("Pinned Packages:") << endl; + cout << _("Pinned packages:") << endl; pkgCache::PkgIterator I = Cache.PkgBegin(); for (;I.end() != true; I++) { @@ -1588,7 +1529,7 @@ bool Policy(CommandLine &CmdL) // 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; @@ -1597,7 +1538,7 @@ bool Policy(CommandLine &CmdL) } // Show the priority tables - cout << _(" Version Table:") << endl; + cout << _(" Version table:") << endl; for (V = Pkg.VersionList(); V.end() == false; V++) { if (Pkg.CurrentVer() == V) @@ -1633,10 +1574,11 @@ bool Madison(CommandLine &CmdL) 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) - return false; + _error->Discard(); for (const char **I = CmdL.FileList + 1; *I != 0; I++) {