From debc84b22e6e841119036af7aee91db2b0989ab9 Mon Sep 17 00:00:00 2001 From: Matt Zimmerman Date: Mon, 15 Nov 2004 21:16:15 +0000 Subject: Packages.bz2 support from Michael Vogt First tries Packages.bz2, and if that fails, falls back to Packages.gz --- apt-pkg/acquire-item.cc | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'apt-pkg/acquire-item.cc') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 27e98283f..bf19290c6 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -144,7 +144,7 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, DestFile += URItoFileName(URI); // Create the item - Desc.URI = URI + ".gz"; + Desc.URI = URI + ".bz2"; Desc.Description = URIDesc; Desc.Owner = this; Desc.ShortDesc = ShortDesc; @@ -167,6 +167,21 @@ string pkgAcqIndex::Custom600Headers() return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } /*}}}*/ + +void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) +{ + // no .bz2 found, retry with .gz + if(Desc.URI.substr(Desc.URI.size()-3,Desc.URI.size()-1) == "bz2") { + Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; + QueueURI(Desc); + return; + } + + + Item::Failed(Message,Cnf); +} + + // AcqIndex::Done - Finished a fetch /*{{{*/ // --------------------------------------------------------------------- /* This goes through a number of states.. On the initial fetch the @@ -234,11 +249,22 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string MD5, else Local = true; + string compExt = Desc.URI.substr(Desc.URI.size()-3,Desc.URI.size()-1); + char *decompProg; + if(compExt == "bz2") + decompProg = "bzip2"; + else if(compExt == ".gz") + decompProg = "gzip"; + else { + _error->Error("Unsupported extension: %s", compExt.c_str()); + return; + } + Decompression = true; DestFile += ".decomp"; - Desc.URI = "gzip:" + FileName; + Desc.URI = string(decompProg) + ":" + FileName; QueueURI(Desc); - Mode = "gzip"; + Mode = decompProg; } /*}}}*/ -- cgit v1.2.3