This commit is contained in:
Igor Pavlov
2007-12-06 00:00:00 +00:00
committed by Kornel Lesiński
parent acd742622d
commit bd1fa36322
12 changed files with 41 additions and 17 deletions

View File

@@ -109,6 +109,7 @@ namespace NFileHeader
*/ */
const UInt32 kDataDescriptorSize = 16; const UInt32 kDataDescriptorSize = 16;
// const UInt32 kDataDescriptor64Size = 16 + 8;
/* /*
struct CDataDescriptor struct CDataDescriptor
{ {

View File

@@ -437,8 +437,21 @@ HRESULT CInArchive::ReadLocalItemAfterCdItemFull(CItemEx &item)
if (ReadUInt32() != NSignature::kDataDescriptor) if (ReadUInt32() != NSignature::kDataDescriptor)
return S_FALSE; return S_FALSE;
UInt32 crc = ReadUInt32(); UInt32 crc = ReadUInt32();
UInt32 packSize = ReadUInt32(); UInt64 packSize, unpackSize;
UInt32 unpackSize = ReadUInt32();
/*
if (IsZip64)
{
packSize = ReadUInt64();
unpackSize = ReadUInt64();
}
else
*/
{
packSize = ReadUInt32();
unpackSize = ReadUInt32();
}
if (crc != item.FileCRC || item.PackSize != packSize || item.UnPackSize != unpackSize) if (crc != item.FileCRC || item.PackSize != packSize || item.UnPackSize != unpackSize)
return S_FALSE; return S_FALSE;
} }
@@ -681,6 +694,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *pr
// kEndOfCentralDirSignature // kEndOfCentralDirSignature
// m_Position points to next byte after signature // m_Position points to next byte after signature
IsZip64 = false;
items.Clear(); items.Clear();
if (progress != 0) if (progress != 0)
{ {
@@ -722,7 +736,7 @@ HRESULT CInArchive::ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *pr
UInt64 zip64EcdStartOffset = m_Position - 4 - m_ArchiveInfo.Base; UInt64 zip64EcdStartOffset = m_Position - 4 - m_ArchiveInfo.Base;
if(m_Signature == NSignature::kZip64EndOfCentralDir) if(m_Signature == NSignature::kZip64EndOfCentralDir)
{ {
isZip64 = true; IsZip64 = isZip64 = true;
UInt64 recordSize = ReadUInt64(); UInt64 recordSize = ReadUInt64();
/* UInt16 versionMade = */ ReadUInt16(); /* UInt16 versionMade = */ ReadUInt16();
/* UInt16 versionNeedExtract = */ ReadUInt16(); /* UInt16 versionNeedExtract = */ ReadUInt16();

View File

@@ -95,6 +95,7 @@ class CInArchive
HRESULT ReadLocalsAndCd(CObjectVector<CItemEx> &items, CProgressVirt *progress, UInt64 &cdOffset); HRESULT ReadLocalsAndCd(CObjectVector<CItemEx> &items, CProgressVirt *progress, UInt64 &cdOffset);
public: public:
CInArchiveInfo m_ArchiveInfo; CInArchiveInfo m_ArchiveInfo;
bool IsZip64;
HRESULT ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *progress); HRESULT ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *progress);
HRESULT ReadLocalItemAfterCdItem(CItemEx &item); HRESULT ReadLocalItemAfterCdItem(CItemEx &item);

View File

@@ -18,6 +18,11 @@ public:
UInt64 GetLocalFullSize() const UInt64 GetLocalFullSize() const
{ return FileHeaderWithNameSize + LocalExtraSize + PackSize + { return FileHeaderWithNameSize + LocalExtraSize + PackSize +
(HasDescriptor() ? NFileHeader::kDataDescriptorSize : 0); }; (HasDescriptor() ? NFileHeader::kDataDescriptorSize : 0); };
/*
UInt64 GetLocalFullSize(bool isZip64) const
{ return FileHeaderWithNameSize + LocalExtraSize + PackSize +
(HasDescriptor() ? (isZip64 ? NFileHeader::kDataDescriptor64Size : NFileHeader::kDataDescriptorSize) : 0); };
*/
UInt64 GetLocalExtraPosition() const UInt64 GetLocalExtraPosition() const
{ return LocalHeaderPosition + FileHeaderWithNameSize; }; { return LocalHeaderPosition + FileHeaderWithNameSize; };
UInt64 GetDataPosition() const UInt64 GetDataPosition() const

View File

@@ -267,6 +267,7 @@ void CMtProgressMixer2::Create(IProgress *progress, bool inSizeIsMain)
void CMtProgressMixer2::SetProgressOffset(UInt64 progressOffset) void CMtProgressMixer2::SetProgressOffset(UInt64 progressOffset)
{ {
CriticalSection.Enter(); CriticalSection.Enter();
InSizes[1] = OutSizes[1] = 0;
ProgressOffset = progressOffset; ProgressOffset = progressOffset;
CriticalSection.Leave(); CriticalSection.Leave();
} }
@@ -323,7 +324,9 @@ STDMETHODIMP CMtProgressMixer::SetRatioInfo(const UInt64 *inSize, const UInt64 *
static HRESULT UpdateItemOldData(COutArchive &archive, static HRESULT UpdateItemOldData(COutArchive &archive,
IInStream *inStream, IInStream *inStream,
const CUpdateItem &updateItem, CItemEx &item, ICompressProgressInfo *progress, const CUpdateItem &updateItem, CItemEx &item,
/* bool izZip64, */
ICompressProgressInfo *progress,
UInt64 &complexity) UInt64 &complexity)
{ {
if (updateItem.NewProperties) if (updateItem.NewProperties)

View File

@@ -40,11 +40,11 @@ static const UInt32 kMatchArrayLimit = kMatchArraySize - kMatchMaxLen * 4 * size
static const UInt32 kBlockUncompressedSizeThreshold = kMaxUncompressedBlockSize - static const UInt32 kBlockUncompressedSizeThreshold = kMaxUncompressedBlockSize -
kMatchMaxLen - kNumOpts; kMatchMaxLen - kNumOpts;
static const int kMaxCodeBitLength = 15; static const int kMaxCodeBitLength = 12;
static const int kMaxLevelBitLength = 7; static const int kMaxLevelBitLength = 7;
static Byte kNoLiteralStatPrice = 13; static Byte kNoLiteralStatPrice = 12;
static Byte kNoLenStatPrice = 13; static Byte kNoLenStatPrice = 12;
static Byte kNoPosStatPrice = 6; static Byte kNoPosStatPrice = 6;
static Byte g_LenSlots[kNumLenSymbolsMax]; static Byte g_LenSlots[kNumLenSymbolsMax];

View File

@@ -1,8 +1,8 @@
#define MY_VER_MAJOR 4 #define MY_VER_MAJOR 4
#define MY_VER_MINOR 56 #define MY_VER_MINOR 57
#define MY_VER_BUILD 0 #define MY_VER_BUILD 0
#define MY_VERSION "4.56 beta" #define MY_VERSION "4.57"
#define MY_7ZIP_VERSION "7-Zip 4.56 beta" #define MY_7ZIP_VERSION "7-Zip 4.57"
#define MY_DATE "2007-10-24" #define MY_DATE "2007-12-06"
#define MY_COPYRIGHT "Copyright (c) 1999-2007 Igor Pavlov" #define MY_COPYRIGHT "Copyright (c) 1999-2007 Igor Pavlov"
#define MY_VERSION_COPYRIGHT_DATE MY_VERSION " " MY_COPYRIGHT " " MY_DATE #define MY_VERSION_COPYRIGHT_DATE MY_VERSION " " MY_COPYRIGHT " " MY_DATE

View File

@@ -24,7 +24,7 @@ void UpdateProduce(
pair2.ArchiveItemIndex = pair.ArchiveItemIndex; pair2.ArchiveItemIndex = pair.ArchiveItemIndex;
pair2.DirItemIndex = pair.DirItemIndex; pair2.DirItemIndex = pair.DirItemIndex;
pair2.ExistInArchive = (pair.State != NPairState::kOnlyOnDisk); 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]) switch(actionSet.StateActions[pair.State])
{ {
case NPairAction::kIgnore: case NPairAction::kIgnore:

View File

@@ -145,7 +145,7 @@ static const wchar_t *kStartExtensions[] =
{ {
L"exe", L"bat", L"com", L"exe", L"bat", L"com",
L"chm", 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"odt", L"ods",
L"pdf" L"pdf"
}; };

View File

@@ -2,8 +2,8 @@
;Defines ;Defines
!define VERSION_MAJOR 4 !define VERSION_MAJOR 4
!define VERSION_MINOR 56 !define VERSION_MINOR 57
!define VERSION_POSTFIX_FULL " beta" !define VERSION_POSTFIX_FULL ""
!ifdef WIN64 !ifdef WIN64
!ifdef IA64 !ifdef IA64
!define VERSION_SYS_POSTFIX_FULL " for Windows IA-64" !define VERSION_SYS_POSTFIX_FULL " for Windows IA-64"

View File

@@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<?define VerMajor = "4" ?> <?define VerMajor = "4" ?>
<?define VerMinor = "56" ?> <?define VerMinor = "57" ?>
<?define VerBuild = "00" ?> <?define VerBuild = "00" ?>
<?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?> <?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?>
<?define MmHex = "0$(var.VerMajor)$(var.VerMinor)" ?> <?define MmHex = "0$(var.VerMajor)$(var.VerMinor)" ?>

View File

@@ -1,4 +1,4 @@
7-Zip 4.56 Sources 7-Zip 4.57 Sources
------------------ ------------------
7-Zip is a file archiver for Windows 95/98/ME/NT/2000/2003/XP/Vista. 7-Zip is a file archiver for Windows 95/98/ME/NT/2000/2003/XP/Vista.