summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/apt-ftparchive.1.xml20
-rw-r--r--ftparchive/apt-ftparchive.cc13
-rw-r--r--ftparchive/writer.cc12
-rw-r--r--ftparchive/writer.h6
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();
};