]> git.saurik.com Git - apt.git/commitdiff
Switch the TranslationWriter to use MultiCompress to be able to generate
authorDavid Kalnischkies <kalnischkies@gmail.com>
Fri, 26 Mar 2010 21:38:50 +0000 (22:38 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Fri, 26 Mar 2010 21:38:50 +0000 (22:38 +0100)
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.

doc/apt-ftparchive.1.xml
ftparchive/apt-ftparchive.cc
ftparchive/writer.cc
ftparchive/writer.h

index e639924cee3100577755ea7d26489db849c41f74..5bf47f32a0708a61aaa25ce4b69a7732d18982c6 100644 (file)
       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 
       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>
    
       <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
index f3e91d90db330749d354604e8c8339a408ab4493..46831b385a59a8a90b0abaa55d735ab85688cef9 100644 (file)
@@ -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);
 
index b395903b793acce5ae7e19a4076b81039e4da186..45a8d212b54da1334858d0c9820f5fad5b89593a 100644 (file)
@@ -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;
 }
                                                                        /*}}}*/
 
index 2afd1af1f5a3e9176006a24f6f4cd660918660c8..3123a7f466e220fa000384e973284ce215591a31 100644 (file)
@@ -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();
 };