diff -up apt-0.5.15lorg3.94pt/apt-pkg/acquire-item.cc.xz apt-0.5.15lorg3.94pt/apt-pkg/acquire-item.cc --- apt-0.5.15lorg3.94pt/apt-pkg/acquire-item.cc.xz 2014-11-14 03:05:15.518216255 +0100 +++ apt-0.5.15lorg3.94pt/apt-pkg/acquire-item.cc 2014-11-14 03:06:10.273702411 +0100 @@ -30,6 +30,8 @@ #include <assert.h> using namespace std; +#include <rpm/rpmfileutil.h> + #include <apti18n.h> #include <sys/stat.h> @@ -382,13 +384,31 @@ void pkgAcqIndex::Done(string Message,of Decompression = true; DestFile += ".decomp"; + + rpmCompressedMagic compressed = COMPRESSED_OTHER; + int rc = rpmFileIsCompressed(FileName.c_str(), &compressed); + string ComprMeth = Repository->GetComprMethod(RealURI); - if ((ComprMeth == "gz") || (ComprMeth == "cz")) { - Desc.URI = "gzip:" + FileName; - Mode = "gzip"; - } else if (ComprMeth == "bz2") { - Desc.URI = "bzip2:" + FileName; - Mode = "bzip2"; + if ((ComprMeth == "gz") || (ComprMeth == "cz") || (ComprMeth == "bz2")) + { + switch(compressed) + { + case COMPRESSED_BZIP2: + Desc.URI = "bzip2:" + FileName; + Mode = "bzip2"; + break; + + case COMPRESSED_LZMA: + case COMPRESSED_XZ: + Desc.URI = "xz:" + FileName; + Mode = "xz"; + break; + + case COMPRESSED_OTHER: + default: + Desc.URI = "gzip:" + FileName; + Mode = "gzip"; + } } else { Desc.URI = "copy:" + FileName; Mode = "copy"; diff -up apt-0.5.15lorg3.94pt/methods/Makefile.am.xz apt-0.5.15lorg3.94pt/methods/Makefile.am --- apt-0.5.15lorg3.94pt/methods/Makefile.am.xz 2009-02-24 11:46:07.000000000 +0100 +++ apt-0.5.15lorg3.94pt/methods/Makefile.am 2014-11-14 03:05:18.125191791 +0100 @@ -1,7 +1,7 @@ AM_CPPFLAGS = -DGPG=\"@GPG@\" methodsdir=${libdir}/apt/methods -methods_PROGRAMS = cdrom copy file ftp gpg gzip bzip2 http rsh ssh +methods_PROGRAMS = cdrom copy file ftp gpg gzip bzip2 http rsh ssh xz LDADD = ../apt-pkg/libapt-pkg.la @@ -11,6 +11,7 @@ file_SOURCES = file.cc gpg_SOURCES = gpg.cc gzip_SOURCES = gzip.cc bzip2_SOURCES = $(gzip_SOURCES) +xz_SOURCES = $(gzip_SOURCES) rsh_SOURCES = rsh.cc rsh.h ssh_SOURCES = $(rsh_SOURCES)