|
|
@ -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()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|