|
|
@@ -969,8 +969,10 @@ void pkgAcqIndex::Init(string const &URI, string const &URIDesc, string const &S
|
|
|
std::string const comprExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
|
|
|
if (comprExt == "uncompressed")
|
|
|
Desc.URI = URI;
|
|
|
- else
|
|
|
+ else {
|
|
|
Desc.URI = URI + '.' + comprExt;
|
|
|
+ DestFile = DestFile + '.' + comprExt;
|
|
|
+ }
|
|
|
|
|
|
Desc.Description = URIDesc;
|
|
|
Desc.Owner = this;
|
|
|
@@ -984,10 +986,11 @@ void pkgAcqIndex::Init(string const &URI, string const &URIDesc, string const &S
|
|
|
/* The only header we use is the last-modified header. */
|
|
|
string pkgAcqIndex::Custom600Headers()
|
|
|
{
|
|
|
+ std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
|
|
|
string Final = _config->FindDir("Dir::State::lists");
|
|
|
Final += URItoFileName(RealURI);
|
|
|
if (_config->FindB("Acquire::GzipIndexes",false))
|
|
|
- Final += ".gz";
|
|
|
+ Final += compExt;
|
|
|
|
|
|
string msg = "\nIndex-File: true";
|
|
|
// FIXME: this really should use "IndexTarget::IsOptional()" but that
|
|
|
@@ -1027,8 +1030,8 @@ std::string pkgAcqIndex::GetFinalFilename(std::string const &URI,
|
|
|
{
|
|
|
std::string FinalFile = _config->FindDir("Dir::State::lists");
|
|
|
FinalFile += URItoFileName(URI);
|
|
|
- if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz")
|
|
|
- FinalFile += ".gz";
|
|
|
+ if (_config->FindB("Acquire::GzipIndexes",false) == true)
|
|
|
+ FinalFile += '.' + compExt;
|
|
|
return FinalFile;
|
|
|
}
|
|
|
/*}}}*/
|
|
|
@@ -1036,8 +1039,8 @@ std::string pkgAcqIndex::GetFinalFilename(std::string const &URI,
|
|
|
void pkgAcqIndex::ReverifyAfterIMS(std::string const &FileName)
|
|
|
{
|
|
|
std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
|
|
|
- if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz")
|
|
|
- DestFile += ".gz";
|
|
|
+ if (_config->FindB("Acquire::GzipIndexes",false) == true)
|
|
|
+ DestFile += compExt;
|
|
|
|
|
|
string FinalFile = GetFinalFilename(RealURI, compExt);
|
|
|
Rename(FinalFile, FileName);
|
|
|
@@ -1080,7 +1083,7 @@ void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash,
|
|
|
/* Always verify the index file for correctness (all indexes must
|
|
|
* have a Package field) (LP: #346386) (Closes: #627642)
|
|
|
*/
|
|
|
- FileFd fd(DestFile, FileFd::ReadOnlyGzip);
|
|
|
+ FileFd fd(DestFile, FileFd::ReadOnly, FileFd::Extension);
|
|
|
// Only test for correctness if the file is not empty (empty is ok)
|
|
|
if (fd.Size() > 0)
|
|
|
{
|
|
|
@@ -1104,8 +1107,8 @@ void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash,
|
|
|
will work OK */
|
|
|
DestFile = _config->FindDir("Dir::State::lists") + "partial/";
|
|
|
DestFile += URItoFileName(RealURI);
|
|
|
- if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz")
|
|
|
- DestFile += ".gz";
|
|
|
+ if (_config->FindB("Acquire::GzipIndexes",false))
|
|
|
+ DestFile += '.' + compExt;
|
|
|
|
|
|
// Remove the compressed version.
|
|
|
if (Erase == true)
|
|
|
@@ -1146,16 +1149,23 @@ void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash,
|
|
|
// matching the Release file
|
|
|
if (!Local && StringToBool(LookupTag(Message,"IMS-Hit"),false) == true)
|
|
|
{
|
|
|
+ // set destfile to the final destfile
|
|
|
+ if(_config->FindB("Acquire::GzipIndexes",false) == false)
|
|
|
+ {
|
|
|
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
|
|
|
+ DestFile += URItoFileName(RealURI);
|
|
|
+ }
|
|
|
+
|
|
|
ReverifyAfterIMS(FileName);
|
|
|
return;
|
|
|
}
|
|
|
string decompProg;
|
|
|
|
|
|
// If we enable compressed indexes, queue for hash verification
|
|
|
- if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz" && !Local)
|
|
|
+ if (_config->FindB("Acquire::GzipIndexes",false))
|
|
|
{
|
|
|
DestFile = _config->FindDir("Dir::State::lists");
|
|
|
- DestFile += URItoFileName(RealURI) + ".gz";
|
|
|
+ DestFile += URItoFileName(RealURI) + '.' + compExt;
|
|
|
|
|
|
Decompression = true;
|
|
|
Desc.URI = "copy:" + FileName;
|
|
|
@@ -1201,11 +1211,11 @@ pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner, IndexTarget const *Target,
|
|
|
// ---------------------------------------------------------------------
|
|
|
string pkgAcqIndexTrans::Custom600Headers()
|
|
|
{
|
|
|
+ std::string const compExt = CompressionExtension.substr(0, CompressionExtension.find(' '));
|
|
|
string Final = _config->FindDir("Dir::State::lists");
|
|
|
Final += URItoFileName(RealURI);
|
|
|
-
|
|
|
if (_config->FindB("Acquire::GzipIndexes",false))
|
|
|
- Final += ".gz";
|
|
|
+ Final += compExt;
|
|
|
|
|
|
struct stat Buf;
|
|
|
if (stat(Final.c_str(),&Buf) != 0)
|
|
|
@@ -1552,8 +1562,12 @@ void pkgAcqMetaIndex::AuthDone(string Message) /*{{{*/
|
|
|
URItoFileName((*Target)->URI);
|
|
|
unlink(index.c_str());
|
|
|
// and also old gzipindexes
|
|
|
- index += ".gz";
|
|
|
- unlink(index.c_str());
|
|
|
+ std::vector<std::string> types = APT::Configuration::getCompressionTypes();
|
|
|
+ for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t)
|
|
|
+ {
|
|
|
+ index += '.' + (*t);
|
|
|
+ unlink(index.c_str());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|