From bd1fa36322ac27f5715433b388742893d6524516 Mon Sep 17 00:00:00 2001 From: Igor Pavlov Date: Thu, 6 Dec 2007 00:00:00 +0000 Subject: 4.57 --- CPP/7zip/Archive/Zip/ZipHeader.h | 1 + CPP/7zip/Archive/Zip/ZipIn.cpp | 20 +++++++++++++++++--- CPP/7zip/Archive/Zip/ZipIn.h | 1 + CPP/7zip/Archive/Zip/ZipItemEx.h | 5 +++++ CPP/7zip/Archive/Zip/ZipUpdate.cpp | 5 ++++- CPP/7zip/Compress/Deflate/DeflateEncoder.cpp | 6 +++--- CPP/7zip/MyVersion.h | 8 ++++---- CPP/7zip/UI/Common/UpdateProduce.cpp | 2 +- CPP/7zip/UI/FileManager/PanelItemOpen.cpp | 2 +- 9 files changed, 37 insertions(+), 13 deletions(-) (limited to 'CPP') diff --git a/CPP/7zip/Archive/Zip/ZipHeader.h b/CPP/7zip/Archive/Zip/ZipHeader.h index 8ce2718a..98ad17a3 100755 --- a/CPP/7zip/Archive/Zip/ZipHeader.h +++ b/CPP/7zip/Archive/Zip/ZipHeader.h @@ -109,6 +109,7 @@ namespace NFileHeader */ const UInt32 kDataDescriptorSize = 16; + // const UInt32 kDataDescriptor64Size = 16 + 8; /* struct CDataDescriptor { diff --git a/CPP/7zip/Archive/Zip/ZipIn.cpp b/CPP/7zip/Archive/Zip/ZipIn.cpp index bf3764f7..b579f9b4 100755 --- a/CPP/7zip/Archive/Zip/ZipIn.cpp +++ b/CPP/7zip/Archive/Zip/ZipIn.cpp @@ -437,8 +437,21 @@ HRESULT CInArchive::ReadLocalItemAfterCdItemFull(CItemEx &item) if (ReadUInt32() != NSignature::kDataDescriptor) return S_FALSE; UInt32 crc = ReadUInt32(); - UInt32 packSize = ReadUInt32(); - UInt32 unpackSize = ReadUInt32(); + UInt64 packSize, unpackSize; + + /* + if (IsZip64) + { + packSize = ReadUInt64(); + unpackSize = ReadUInt64(); + } + else + */ + { + packSize = ReadUInt32(); + unpackSize = ReadUInt32(); + } + if (crc != item.FileCRC || item.PackSize != packSize || item.UnPackSize != unpackSize) return S_FALSE; } @@ -681,6 +694,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector &items, CProgressVirt *pr // kEndOfCentralDirSignature // m_Position points to next byte after signature + IsZip64 = false; items.Clear(); if (progress != 0) { @@ -722,7 +736,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector &items, CProgressVirt *pr UInt64 zip64EcdStartOffset = m_Position - 4 - m_ArchiveInfo.Base; if(m_Signature == NSignature::kZip64EndOfCentralDir) { - isZip64 = true; + IsZip64 = isZip64 = true; UInt64 recordSize = ReadUInt64(); /* UInt16 versionMade = */ ReadUInt16(); /* UInt16 versionNeedExtract = */ ReadUInt16(); diff --git a/CPP/7zip/Archive/Zip/ZipIn.h b/CPP/7zip/Archive/Zip/ZipIn.h index 62be592b..b5a5a3ef 100755 --- a/CPP/7zip/Archive/Zip/ZipIn.h +++ b/CPP/7zip/Archive/Zip/ZipIn.h @@ -95,6 +95,7 @@ class CInArchive HRESULT ReadLocalsAndCd(CObjectVector &items, CProgressVirt *progress, UInt64 &cdOffset); public: CInArchiveInfo m_ArchiveInfo; + bool IsZip64; HRESULT ReadHeaders(CObjectVector &items, CProgressVirt *progress); HRESULT ReadLocalItemAfterCdItem(CItemEx &item); diff --git a/CPP/7zip/Archive/Zip/ZipItemEx.h b/CPP/7zip/Archive/Zip/ZipItemEx.h index 3cacc0e7..0c5ba0ca 100755 --- a/CPP/7zip/Archive/Zip/ZipItemEx.h +++ b/CPP/7zip/Archive/Zip/ZipItemEx.h @@ -18,6 +18,11 @@ public: UInt64 GetLocalFullSize() const { return FileHeaderWithNameSize + LocalExtraSize + PackSize + (HasDescriptor() ? NFileHeader::kDataDescriptorSize : 0); }; + /* + UInt64 GetLocalFullSize(bool isZip64) const + { return FileHeaderWithNameSize + LocalExtraSize + PackSize + + (HasDescriptor() ? (isZip64 ? NFileHeader::kDataDescriptor64Size : NFileHeader::kDataDescriptorSize) : 0); }; + */ UInt64 GetLocalExtraPosition() const { return LocalHeaderPosition + FileHeaderWithNameSize; }; UInt64 GetDataPosition() const diff --git a/CPP/7zip/Archive/Zip/ZipUpdate.cpp b/CPP/7zip/Archive/Zip/ZipUpdate.cpp index b08545c6..6cfa64e2 100755 --- a/CPP/7zip/Archive/Zip/ZipUpdate.cpp +++ b/CPP/7zip/Archive/Zip/ZipUpdate.cpp @@ -267,6 +267,7 @@ void CMtProgressMixer2::Create(IProgress *progress, bool inSizeIsMain) void CMtProgressMixer2::SetProgressOffset(UInt64 progressOffset) { CriticalSection.Enter(); + InSizes[1] = OutSizes[1] = 0; ProgressOffset = progressOffset; CriticalSection.Leave(); } @@ -323,7 +324,9 @@ STDMETHODIMP CMtProgressMixer::SetRatioInfo(const UInt64 *inSize, const UInt64 * static HRESULT UpdateItemOldData(COutArchive &archive, IInStream *inStream, - const CUpdateItem &updateItem, CItemEx &item, ICompressProgressInfo *progress, + const CUpdateItem &updateItem, CItemEx &item, + /* bool izZip64, */ + ICompressProgressInfo *progress, UInt64 &complexity) { if (updateItem.NewProperties) diff --git a/CPP/7zip/Compress/Deflate/DeflateEncoder.cpp b/CPP/7zip/Compress/Deflate/DeflateEncoder.cpp index 2f72fded..2c623750 100755 --- a/CPP/7zip/Compress/Deflate/DeflateEncoder.cpp +++ b/CPP/7zip/Compress/Deflate/DeflateEncoder.cpp @@ -40,11 +40,11 @@ static const UInt32 kMatchArrayLimit = kMatchArraySize - kMatchMaxLen * 4 * size static const UInt32 kBlockUncompressedSizeThreshold = kMaxUncompressedBlockSize - kMatchMaxLen - kNumOpts; -static const int kMaxCodeBitLength = 15; +static const int kMaxCodeBitLength = 12; static const int kMaxLevelBitLength = 7; -static Byte kNoLiteralStatPrice = 13; -static Byte kNoLenStatPrice = 13; +static Byte kNoLiteralStatPrice = 12; +static Byte kNoLenStatPrice = 12; static Byte kNoPosStatPrice = 6; static Byte g_LenSlots[kNumLenSymbolsMax]; diff --git a/CPP/7zip/MyVersion.h b/CPP/7zip/MyVersion.h index f9ba7a3b..af5c7d31 100755 --- a/CPP/7zip/MyVersion.h +++ b/CPP/7zip/MyVersion.h @@ -1,8 +1,8 @@ #define MY_VER_MAJOR 4 -#define MY_VER_MINOR 56 +#define MY_VER_MINOR 57 #define MY_VER_BUILD 0 -#define MY_VERSION "4.56 beta" -#define MY_7ZIP_VERSION "7-Zip 4.56 beta" -#define MY_DATE "2007-10-24" +#define MY_VERSION "4.57" +#define MY_7ZIP_VERSION "7-Zip 4.57" +#define MY_DATE "2007-12-06" #define MY_COPYRIGHT "Copyright (c) 1999-2007 Igor Pavlov" #define MY_VERSION_COPYRIGHT_DATE MY_VERSION " " MY_COPYRIGHT " " MY_DATE diff --git a/CPP/7zip/UI/Common/UpdateProduce.cpp b/CPP/7zip/UI/Common/UpdateProduce.cpp index 992bbeec..5552161a 100755 --- a/CPP/7zip/UI/Common/UpdateProduce.cpp +++ b/CPP/7zip/UI/Common/UpdateProduce.cpp @@ -24,7 +24,7 @@ void UpdateProduce( pair2.ArchiveItemIndex = pair.ArchiveItemIndex; pair2.DirItemIndex = pair.DirItemIndex; pair2.ExistInArchive = (pair.State != NPairState::kOnlyOnDisk); - pair2.ExistOnDisk = (pair.State != NPairState::kOnlyInArchive); + pair2.ExistOnDisk = (pair.State != NPairState::kOnlyInArchive && pair.State != NPairState::kNotMasked); switch(actionSet.StateActions[pair.State]) { case NPairAction::kIgnore: diff --git a/CPP/7zip/UI/FileManager/PanelItemOpen.cpp b/CPP/7zip/UI/FileManager/PanelItemOpen.cpp index 1795da41..7a42b2d0 100755 --- a/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +++ b/CPP/7zip/UI/FileManager/PanelItemOpen.cpp @@ -145,7 +145,7 @@ static const wchar_t *kStartExtensions[] = { L"exe", L"bat", L"com", L"chm", - L"msi", L"doc", L"xls", L"ppt", + L"msi", L"doc", L"xls", L"ppt", L"wps", L"wpt", L"wks", L"xlr", L"wdb", L"odt", L"ods", L"pdf" }; -- cgit v1.2.3