X-Git-Url: https://git.hcoop.net/ntk/apt.git/blobdiff_plain/0dfd2728dea9b0a6a92f1272ecaa475adc2f9276..1ac89b1ae1c0cdab8b02bad36795a3a799a31c9a:/ftparchive/apt-ftparchive.cc diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index 287f40a1..f1a182e5 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -1,19 +1,15 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: apt-ftparchive.cc,v 1.11 2003/12/26 22:50:52 mdz Exp $ +// $Id: apt-ftparchive.cc,v 1.8.2.3 2004/01/02 22:01:48 mdz Exp $ /* ###################################################################### - apt-scanpackages - Efficient work-alike for dpkg-scanpackages + apt-ftparchive - Efficient work-alike for dpkg-scanpackages Let contents be disabled from the conf ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-ftparchive.h" -#endif - #include "apt-ftparchive.h" #include @@ -24,6 +20,7 @@ #include #include +#include #include #include @@ -56,6 +53,9 @@ struct PackageMap string BinCacheDB; string BinOverride; string ExtraOverride; + + // We generate for this given arch + string Arch; // Stuff for the Source File string SrcFile; @@ -158,11 +158,12 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) // Create a package writer object. PackagesWriter Packages(flCombine(CacheDir,BinCacheDB), flCombine(OverrideDir,BinOverride), - flCombine(OverrideDir,ExtraOverride)); + flCombine(OverrideDir,ExtraOverride), + Arch); if (PkgExt.empty() == false && Packages.SetExts(PkgExt) == false) return _error->Error(_("Package extension list is too long")); if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); Packages.PathPrefix = PathPrefix; Packages.DirStrip = ArchiveDir; @@ -176,7 +177,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) PkgCompress,Permissions); Packages.Output = Comp.Input; if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); c0out << ' ' << BaseDir << ":" << flush; @@ -199,7 +200,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) if (Comp.Finalize(Size) == false) { c0out << endl; - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); } if (Size != 0) @@ -249,7 +250,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) if (SrcExt.empty() == false && Sources.SetExts(SrcExt) == false) return _error->Error(_("Source extension list is too long")); if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); Sources.PathPrefix = PathPrefix; Sources.DirStrip = ArchiveDir; @@ -263,7 +264,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) SrcCompress,Permissions); Sources.Output = Comp.Input; if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); c0out << ' ' << BaseDir << ":" << flush; @@ -285,7 +286,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) if (Comp.Finalize(Size) == false) { c0out << endl; - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); } if (Size != 0) @@ -332,7 +333,7 @@ bool PackageMap::GenContents(Configuration &Setup, gettimeofday(&StartTime,0); // Create a package writer object. - ContentsWriter Contents(""); + ContentsWriter Contents("", Arch); if (PkgExt.empty() == false && Contents.SetExts(PkgExt) == false) return _error->Error(_("Package extension list is too long")); if (_error->PendingError() == true) @@ -394,7 +395,7 @@ bool PackageMap::GenContents(Configuration &Setup, if (Comp.Finalize(Size) == false || _error->PendingError() == true) { c0out << endl; - return _error->Error(_("Error Processing Contents %s"), + return _error->Error(_("Error processing contents %s"), this->Contents.c_str()); } @@ -489,6 +490,7 @@ void LoadTree(vector &PkgList,Configuration &Setup) Itm.BaseDir = SubstVar(Block.Find("Directory",DDir.c_str()),Vars); Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars); Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars); + Itm.Arch = Arch; Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars); Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars); Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars); @@ -542,8 +544,8 @@ void LoadBinDir(vector &PkgList,Configuration &Setup) /* */ bool ShowHelp(CommandLine &CmdL) { - 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; @@ -585,7 +587,7 @@ bool ShowHelp(CommandLine &CmdL) " --no-delink Enable delinking debug mode\n" " --contents Control contents file generation\n" " -c=? Read this configuration file\n" - " -o=? Set an arbitary configuration option") << endl; + " -o=? Set an arbitrary configuration option") << endl; return true; } @@ -604,7 +606,7 @@ bool SimpleGenPackages(CommandLine &CmdL) // Create a package writer object. PackagesWriter Packages(_config->Find("APT::FTPArchive::DB"), - Override, ""); + Override, "", _config->Find("APT::FTPArchive::Architecture")); if (_error->PendingError() == true) return false; @@ -627,7 +629,7 @@ bool SimpleGenContents(CommandLine &CmdL) return ShowHelp(CmdL); // Create a package writer object. - ContentsWriter Contents(_config->Find("APT::FTPArchive::DB")); + ContentsWriter Contents(_config->Find("APT::FTPArchive::DB"), _config->Find("APT::FTPArchive::Architecture")); if (_error->PendingError() == true) return false; @@ -681,11 +683,15 @@ bool SimpleGenRelease(CommandLine &CmdL) if (CmdL.FileSize() < 2) return ShowHelp(CmdL); + string Dir = CmdL.FileList[1]; + ReleaseWriter Release(""); + Release.DirStrip = Dir; + if (_error->PendingError() == true) return false; - if (Release.RecursiveScan(CmdL.FileList[1]) == false) + if (Release.RecursiveScan(Dir) == false) return false; Release.Finish(); @@ -786,7 +792,7 @@ bool Generate(CommandLine &CmdL) if (_config->FindB("APT::FTPArchive::Contents",true) == false) return true; - c1out << "Done Packages, Starting contents." << endl; + c1out << "Packages done, Starting contents." << endl; // Sort the contents file list by date string ArchiveDir = Setup.FindDir("Dir::ArchiveDir"); @@ -892,6 +898,7 @@ bool Clean(CommandLine &CmdL) int main(int argc, const char *argv[]) { + setlocale(LC_ALL, ""); CommandLine::Args Args[] = { {'h',"help","help",0}, {0,"md5","APT::FTPArchive::MD5",0}, @@ -903,6 +910,7 @@ int main(int argc, const char *argv[]) {0,"delink","APT::FTPArchive::DeLinkAct",0}, {0,"readonly","APT::FTPArchive::ReadOnlyDB",0}, {0,"contents","APT::FTPArchive::Contents",0}, + {'a',"arch","APT::FTPArchive::Architecture",CommandLine::HasArg}, {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0}};