From 3621b1c70f532c61ccfee6a65c413ee573ed4900 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Wed, 2 Jul 2014 03:10:21 +0200 Subject: Fix ar and tar code to be LFS-safe This is an ABI break. Closes: #742882 --- apt-inst/contrib/arfile.h | 2 +- apt-inst/contrib/extracttar.cc | 13 ++++++------- apt-inst/contrib/extracttar.h | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) (limited to 'apt-inst/contrib') diff --git a/apt-inst/contrib/arfile.h b/apt-inst/contrib/arfile.h index 0f62a34a0..5aa38aedc 100644 --- a/apt-inst/contrib/arfile.h +++ b/apt-inst/contrib/arfile.h @@ -61,7 +61,7 @@ struct ARArchive::Member unsigned long long Size; // Location of the data. - unsigned long Start; + unsigned long long Start; Member *Next; Member() : Start(0), Next(0) {}; diff --git a/apt-inst/contrib/extracttar.cc b/apt-inst/contrib/extracttar.cc index 0ba3f0521..2c86d0d01 100644 --- a/apt-inst/contrib/extracttar.cc +++ b/apt-inst/contrib/extracttar.cc @@ -60,9 +60,8 @@ struct ExtractTar::TarHeader // ExtractTar::ExtractTar - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -ExtractTar::ExtractTar(FileFd &Fd,unsigned long Max,string DecompressionProgram) : File(Fd), - MaxInSize(Max), DecompressProg(DecompressionProgram) - +ExtractTar::ExtractTar(FileFd &Fd,unsigned long long Max,string DecompressionProgram) + : File(Fd), MaxInSize(Max), DecompressProg(DecompressionProgram) { GZPid = -1; Eof = false; @@ -267,7 +266,7 @@ bool ExtractTar::Go(pkgDirStream &Stream) case GNU_LongLink: { - unsigned long Length = Itm.Size; + unsigned long long Length = Itm.Size; unsigned char Block[512]; while (Length > 0) { @@ -286,7 +285,7 @@ bool ExtractTar::Go(pkgDirStream &Stream) case GNU_LongName: { - unsigned long Length = Itm.Size; + unsigned long long Length = Itm.Size; unsigned char Block[512]; while (Length > 0) { @@ -315,11 +314,11 @@ bool ExtractTar::Go(pkgDirStream &Stream) return false; // Copy the file over the FD - unsigned long Size = Itm.Size; + unsigned long long Size = Itm.Size; while (Size != 0) { unsigned char Junk[32*1024]; - unsigned long Read = min(Size,(unsigned long)sizeof(Junk)); + unsigned long Read = min(Size, (unsigned long long)sizeof(Junk)); if (InFd.Read(Junk,((Read+511)/512)*512) == false) return false; diff --git a/apt-inst/contrib/extracttar.h b/apt-inst/contrib/extracttar.h index 4b29df314..472e018f4 100644 --- a/apt-inst/contrib/extracttar.h +++ b/apt-inst/contrib/extracttar.h @@ -39,7 +39,7 @@ class ExtractTar GNU_LongLink = 'K',GNU_LongName = 'L'}; FileFd &File; - unsigned long MaxInSize; + unsigned long long MaxInSize; int GZPid; FileFd InFd; bool Eof; @@ -53,7 +53,7 @@ class ExtractTar bool Go(pkgDirStream &Stream); - ExtractTar(FileFd &Fd,unsigned long Max,std::string DecompressionProgram); + ExtractTar(FileFd &Fd,unsigned long long Max,std::string DecompressionProgram); virtual ~ExtractTar(); }; -- cgit v1.2.3 From 60b64ffc3468579183abc1bac0179943d782a52e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 7 Nov 2014 14:21:35 +0100 Subject: guard ABI changes for LFS in apt-inst Git-Dch: Ignore --- apt-inst/contrib/arfile.h | 5 +++++ apt-inst/contrib/extracttar.cc | 5 +++++ apt-inst/contrib/extracttar.h | 11 ++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'apt-inst/contrib') diff --git a/apt-inst/contrib/arfile.h b/apt-inst/contrib/arfile.h index 5aa38aedc..f53356847 100644 --- a/apt-inst/contrib/arfile.h +++ b/apt-inst/contrib/arfile.h @@ -17,6 +17,7 @@ #include +#include #ifndef APT_8_CLEANER_HEADERS #include #endif @@ -61,7 +62,11 @@ struct ARArchive::Member unsigned long long Size; // Location of the data. +#if APT_PKG_ABI >= 413 unsigned long long Start; +#else + unsigned long Start; +#endif Member *Next; Member() : Start(0), Next(0) {}; diff --git a/apt-inst/contrib/extracttar.cc b/apt-inst/contrib/extracttar.cc index 2c86d0d01..be0b69d96 100644 --- a/apt-inst/contrib/extracttar.cc +++ b/apt-inst/contrib/extracttar.cc @@ -60,8 +60,13 @@ struct ExtractTar::TarHeader // ExtractTar::ExtractTar - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ +#if APT_PKG_ABI >= 413 ExtractTar::ExtractTar(FileFd &Fd,unsigned long long Max,string DecompressionProgram) : File(Fd), MaxInSize(Max), DecompressProg(DecompressionProgram) +#else +ExtractTar::ExtractTar(FileFd &Fd,unsigned long Max,string DecompressionProgram) + : File(Fd), MaxInSize(Max), DecompressProg(DecompressionProgram) +#endif { GZPid = -1; Eof = false; diff --git a/apt-inst/contrib/extracttar.h b/apt-inst/contrib/extracttar.h index 472e018f4..57be956bd 100644 --- a/apt-inst/contrib/extracttar.h +++ b/apt-inst/contrib/extracttar.h @@ -15,6 +15,7 @@ #define PKGLIB_EXTRACTTAR_H #include +#include #include @@ -39,7 +40,11 @@ class ExtractTar GNU_LongLink = 'K',GNU_LongName = 'L'}; FileFd &File; +#if APT_PKG_ABI >= 413 unsigned long long MaxInSize; +#else + unsigned long MaxInSize; +#endif int GZPid; FileFd InFd; bool Eof; @@ -52,8 +57,12 @@ class ExtractTar public: bool Go(pkgDirStream &Stream); - + +#if APT_PKG_ABI >= 413 ExtractTar(FileFd &Fd,unsigned long long Max,std::string DecompressionProgram); +#else + ExtractTar(FileFd &Fd,unsigned long Max,std::string DecompressionProgram); +#endif virtual ~ExtractTar(); }; -- cgit v1.2.3