diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2010-03-26 22:38:50 +0100 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2010-03-26 22:38:50 +0100 |
commit | 34f1d96cf5657b5e34cd9880dccfa2028fa16b13 (patch) | |
tree | 300bd83cccfc8872e99616826b0753e364450007 | |
parent | 4e794c509becfd7e2bddfddc1205dc81397a48bd (diff) |
Switch the TranslationWriter to use MultiCompress to be able to generate
the compressed files as we want them and to prevent the file to be
replaced without a reason which could save us from steady redownloads
of a file with the same content.
-rw-r--r-- | doc/apt-ftparchive.1.xml | 20 | ||||
-rw-r--r-- | ftparchive/apt-ftparchive.cc | 13 | ||||
-rw-r--r-- | ftparchive/writer.cc | 12 | ||||
-rw-r--r-- | ftparchive/writer.h | 6 |
4 files changed, 33 insertions, 18 deletions
diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index e639924ce..5bf47f32a 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -224,7 +224,13 @@ This is similar to <literal>Packages::Compress</literal> except that it controls the compression for the Contents files.</para></listitem> </varlistentry> - + + <varlistentry><term>Translation::Compress</term> + <listitem><para> + This is similar to <literal>Packages::Compress</literal> + except that it controls the compression for the Translation-en master file.</para></listitem> + </varlistentry> + <varlistentry><term>DeLinkLimit</term> <listitem><para> Specifies the number of kilobytes to delink (and @@ -238,6 +244,12 @@ defaults to 0644. All index files are set to this mode with no regard to the umask.</para></listitem> </varlistentry> + + <varlistentry><term>LongDescription</term> + <listitem><para> + Sets if long descriptions should be included in the Packages file or split + out into a master Translation-en file.</para></listitem> + </varlistentry> </variablelist> </refsect2> @@ -297,12 +309,6 @@ <filename>$(DIST)/$(SECTION)/i18n/Translation-en</filename></para></listitem> </varlistentry> - <varlistentry><term>LongDescription</term> - <listitem><para> - Sets if long descriptions should be included in the Packages file or split - out into a master Translation-en file.</para></listitem> - </varlistentry> - <varlistentry><term>InternalPrefix</term> <listitem><para> Sets the path prefix that causes a symlink to be diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index f3e91d90d..46831b385 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -134,8 +134,6 @@ void PackageMap::GetGeneral(Configuration &Setup,Configuration &Block) PkgExt = Block.Find("Packages::Extensions", Setup.Find("Default::Packages::Extensions",".deb").c_str()); - Permissions = Setup.FindI("Default::FileMode",0644); - if (FLFile.empty() == false) FLFile = flCombine(Setup.Find("Dir::FileListDir"),FLFile); @@ -458,8 +456,11 @@ void LoadTree(vector<PackageMap> &PkgList,Configuration &Setup) string DFLFile = Setup.Find("TreeDefault::FileList", ""); string DSFLFile = Setup.Find("TreeDefault::SourceFileList", ""); - bool const LongDescription = Setup.FindB("TreeDefault::LongDescription", + int const Permissions = Setup.FindI("Default::FileMode",0644); + + bool const LongDescription = Setup.FindB("Default::LongDescription", _config->FindB("APT::FTPArchive::LongDescription", true)); + string const TranslationCompress = Setup.Find("Default::Translation::Compress",". gzip").c_str(); // Process 'tree' type sections const Configuration::Item *Top = Setup.Tree("tree"); @@ -479,13 +480,15 @@ void LoadTree(vector<PackageMap> &PkgList,Configuration &Setup) {"$(SECTION)",&Section}, {"$(ARCH)",&Arch}, {}}; + mode_t const Perms = Block.FindI("FileMode", Permissions); bool const LongDesc = Block.FindB("LongDescription", LongDescription); TranslationWriter *TransWriter; if (DTrans.empty() == false && LongDesc == false) { string const TranslationFile = flCombine(Setup.FindDir("Dir::ArchiveDir"), SubstVar(Block.Find("Translation", DTrans.c_str()), Vars)); - TransWriter = new TranslationWriter(TranslationFile); + string const TransCompress = Block.Find("Translation::Compress", TranslationCompress); + TransWriter = new TranslationWriter(TranslationFile, TransCompress, Perms); } else TransWriter = NULL; @@ -495,7 +498,7 @@ void LoadTree(vector<PackageMap> &PkgList,Configuration &Setup) while (ParseQuoteWord(Archs,Arch) == true) { PackageMap Itm; - + Itm.Permissions = Perms; Itm.BinOverride = SubstVar(Block.Find("BinOverride"),Vars); Itm.InternalPrefix = SubstVar(Block.Find("InternalPrefix",DIPrfx.c_str()),Vars); diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index b395903b7..45a8d212b 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -499,13 +499,15 @@ bool PackagesWriter::DoPackage(string FileName) // TranslationWriter::TranslationWriter - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Create a Translation-Master file for this Packages file */ -TranslationWriter::TranslationWriter(string const &File) : Output(NULL), +TranslationWriter::TranslationWriter(string const &File, string const &TransCompress, + mode_t const &Permissions) : Output(NULL), RefCounter(0) { if (File.empty() == true) return; - Output = fopen(File.c_str(), "w"); + Comp = new MultiCompress(File, TransCompress, Permissions); + Output = Comp->Input; } /*}}}*/ // TranslationWriter::DoPackage - Process a single package /*{{{*/ @@ -536,8 +538,10 @@ bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc, /* */ TranslationWriter::~TranslationWriter() { - if (Output != NULL) - fclose(Output); + if (Comp == NULL) + return; + + delete Comp; } /*}}}*/ diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 2afd1af1f..3123a7f46 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -22,6 +22,7 @@ #include <set> #include "cachedb.h" +#include "multicompress.h" #include "override.h" #include "apt-ftparchive.h" @@ -75,6 +76,7 @@ class FTWScanner class TranslationWriter { + MultiCompress *Comp; FILE *Output; std::set<string> Included; unsigned short RefCounter; @@ -85,8 +87,8 @@ class TranslationWriter unsigned short GetRefCounter() const { return RefCounter; }; bool DoPackage(string const &Pkg, string const &Desc, string const &MD5); - TranslationWriter(string const &File); - TranslationWriter() : Output(NULL), RefCounter(0) {}; + TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions); + TranslationWriter() : Comp(NULL), Output(NULL), RefCounter(0) {}; ~TranslationWriter(); }; |