seven-zip 1.4.2 → 1.7.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +49 -0
- data/.github/workflows/release.yml +21 -0
- data/README.md +13 -2
- data/Rakefile +2 -0
- data/ext/p7zip/C/7zBuf.h +4 -8
- data/ext/p7zip/C/7zBuf2.c +9 -3
- data/ext/p7zip/C/7zCrc.c +84 -32
- data/ext/p7zip/C/7zCrc.h +2 -2
- data/ext/p7zip/C/7zCrcOpt.c +89 -8
- data/ext/p7zip/C/7zStream.c +4 -2
- data/ext/p7zip/C/{Types.h → 7zTypes.h} +8 -6
- data/ext/p7zip/C/7zVersion.h +21 -6
- data/ext/p7zip/C/Aes.c +28 -15
- data/ext/p7zip/C/Aes.h +2 -2
- data/ext/p7zip/C/Alloc.c +60 -12
- data/ext/p7zip/C/Alloc.h +6 -7
- data/ext/p7zip/C/Bcj2.c +256 -0
- data/ext/p7zip/C/Bcj2.h +146 -0
- data/ext/p7zip/C/Bcj2Enc.c +312 -0
- data/ext/p7zip/C/Blake2.h +48 -0
- data/ext/p7zip/C/Blake2s.c +244 -0
- data/ext/p7zip/C/Bra.c +2 -0
- data/ext/p7zip/C/Bra.h +4 -8
- data/ext/p7zip/C/Bra86.c +48 -51
- data/ext/p7zip/C/BraIA64.c +3 -1
- data/ext/p7zip/C/BwtSort.c +3 -4
- data/ext/p7zip/C/BwtSort.h +4 -8
- data/ext/p7zip/C/Compiler.h +32 -0
- data/ext/p7zip/C/CpuArch.c +50 -7
- data/ext/p7zip/C/CpuArch.h +112 -41
- data/ext/p7zip/C/Delta.c +2 -0
- data/ext/p7zip/C/Delta.h +4 -8
- data/ext/p7zip/C/HuffEnc.c +8 -6
- data/ext/p7zip/C/HuffEnc.h +4 -8
- data/ext/p7zip/C/LzFind.c +391 -108
- data/ext/p7zip/C/LzFind.h +20 -18
- data/ext/p7zip/C/LzFindMt.c +100 -90
- data/ext/p7zip/C/LzFindMt.h +4 -8
- data/ext/p7zip/C/LzHash.h +23 -20
- data/ext/p7zip/C/Lzma2Dec.c +48 -26
- data/ext/p7zip/C/Lzma2Dec.h +4 -8
- data/ext/p7zip/C/Lzma2Enc.c +58 -15
- data/ext/p7zip/C/Lzma2Enc.h +3 -7
- data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.h → Lzma86.h} +47 -14
- data/ext/p7zip/C/{LzmaUtil/Lzma86Dec.c → Lzma86Dec.c} +6 -13
- data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.c → Lzma86Enc.c} +8 -15
- data/ext/p7zip/C/LzmaDec.c +180 -79
- data/ext/p7zip/C/LzmaDec.h +4 -8
- data/ext/p7zip/C/LzmaEnc.c +230 -147
- data/ext/p7zip/C/LzmaEnc.h +6 -8
- data/ext/p7zip/C/MtCoder.c +3 -3
- data/ext/p7zip/C/Ppmd.h +5 -5
- data/ext/p7zip/C/Ppmd7.c +9 -7
- data/ext/p7zip/C/Ppmd7.h +3 -3
- data/ext/p7zip/C/Ppmd7Dec.c +2 -0
- data/ext/p7zip/C/Ppmd7Enc.c +4 -2
- data/ext/p7zip/C/Ppmd8.c +34 -31
- data/ext/p7zip/C/Ppmd8.h +5 -1
- data/ext/p7zip/C/Ppmd8Dec.c +2 -0
- data/ext/p7zip/C/Ppmd8Enc.c +2 -0
- data/ext/p7zip/C/Precomp.h +10 -0
- data/ext/p7zip/C/RotateDefs.h +11 -1
- data/ext/p7zip/C/Sha1.c +340 -0
- data/ext/p7zip/C/Sha1.h +38 -0
- data/ext/p7zip/C/Sha256.c +107 -63
- data/ext/p7zip/C/Sha256.h +2 -2
- data/ext/p7zip/C/Sort.c +59 -11
- data/ext/p7zip/C/Sort.h +8 -10
- data/ext/p7zip/C/Threads.h +1 -1
- data/ext/p7zip/C/Xz.c +7 -5
- data/ext/p7zip/C/Xz.h +40 -17
- data/ext/p7zip/C/XzCrc64.c +69 -16
- data/ext/p7zip/C/XzCrc64.h +2 -2
- data/ext/p7zip/C/XzCrc64Opt.c +69 -0
- data/ext/p7zip/C/XzDec.c +93 -55
- data/ext/p7zip/C/XzEnc.c +206 -165
- data/ext/p7zip/C/XzEnc.h +23 -9
- data/ext/p7zip/C/XzIn.c +50 -43
- data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +37 -13
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.cpp +392 -181
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.h +29 -29
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.cpp +424 -212
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.h +53 -16
- data/ext/p7zip/CPP/7zip/Archive/7z/7zExtract.cpp +312 -174
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +74 -61
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +22 -19
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.cpp +505 -232
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.h +70 -16
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +602 -172
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.cpp +5 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.h +54 -3
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.cpp +981 -616
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.h +275 -89
- data/ext/p7zip/CPP/7zip/Archive/7z/7zItem.h +77 -162
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.cpp +288 -238
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.h +189 -20
- data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.cpp +59 -49
- data/ext/p7zip/CPP/7zip/Archive/7z/7zRegister.cpp +12 -9
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +4 -6
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.h +5 -5
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +1743 -447
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.h +61 -10
- data/ext/p7zip/CPP/7zip/Archive/ApmHandler.cpp +84 -120
- data/ext/p7zip/CPP/7zip/Archive/ArHandler.cpp +854 -0
- data/ext/p7zip/CPP/7zip/Archive/ArchiveExports.cpp +48 -32
- data/ext/p7zip/CPP/7zip/Archive/ArjHandler.cpp +519 -340
- data/ext/p7zip/CPP/7zip/Archive/Bz2Handler.cpp +223 -203
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +50 -139
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +17 -18
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +566 -234
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.h +10 -1
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.h +12 -15
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.cpp +341 -122
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.h +81 -66
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabItem.h +17 -14
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +10 -4
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +190 -83
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.h +7 -1
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +292 -174
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.h +73 -47
- data/ext/p7zip/CPP/7zip/Archive/ComHandler.cpp +886 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +994 -71
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.h +364 -101
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +7 -12
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.h +4 -3
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.cpp +6 -6
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.h +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +77 -543
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.h +31 -51
- data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +18 -14
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +34 -7
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +5 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.cpp +25 -24
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.h +8 -3
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +1 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +5 -5
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -174
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.h +2 -14
- data/ext/p7zip/CPP/7zip/Archive/CpioHandler.cpp +506 -335
- data/ext/p7zip/CPP/7zip/Archive/CramfsHandler.cpp +227 -84
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.cpp +0 -115
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.h +0 -29
- data/ext/p7zip/CPP/7zip/Archive/DllExports2.cpp +63 -17
- data/ext/p7zip/CPP/7zip/Archive/DmgHandler.cpp +1007 -339
- data/ext/p7zip/CPP/7zip/Archive/ElfHandler.cpp +618 -177
- data/ext/p7zip/CPP/7zip/Archive/ExtHandler.cpp +2867 -0
- data/ext/p7zip/CPP/7zip/Archive/FatHandler.cpp +136 -76
- data/ext/p7zip/CPP/7zip/Archive/FlvHandler.cpp +132 -150
- data/ext/p7zip/CPP/7zip/Archive/GptHandler.cpp +405 -0
- data/ext/p7zip/CPP/7zip/Archive/GzHandler.cpp +560 -214
- data/ext/p7zip/CPP/7zip/Archive/HandlerCont.cpp +288 -0
- data/ext/p7zip/CPP/7zip/Archive/HandlerCont.h +116 -0
- data/ext/p7zip/CPP/7zip/Archive/HfsHandler.cpp +1880 -0
- data/ext/p7zip/CPP/7zip/Archive/IArchive.h +415 -51
- data/ext/p7zip/CPP/7zip/Archive/IhexHandler.cpp +497 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +158 -71
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.h +2 -1
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +0 -9
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.h +8 -5
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +311 -91
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.h +101 -83
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoItem.h +48 -39
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +12 -4
- data/ext/p7zip/CPP/7zip/Archive/LzhHandler.cpp +127 -114
- data/ext/p7zip/CPP/7zip/Archive/LzmaHandler.cpp +264 -121
- data/ext/p7zip/CPP/7zip/Archive/MachoHandler.cpp +402 -242
- data/ext/p7zip/CPP/7zip/Archive/MbrHandler.cpp +56 -114
- data/ext/p7zip/CPP/7zip/Archive/MslzHandler.cpp +230 -90
- data/ext/p7zip/CPP/7zip/Archive/MubHandler.cpp +129 -153
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +179 -58
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +36 -7
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +407 -237
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +9 -16
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +5535 -1098
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.h +345 -81
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +11 -4
- data/ext/p7zip/CPP/7zip/Archive/NtfsHandler.cpp +1424 -434
- data/ext/p7zip/CPP/7zip/Archive/PeHandler.cpp +1831 -521
- data/ext/p7zip/CPP/7zip/Archive/PpmdHandler.cpp +50 -35
- data/ext/p7zip/CPP/7zip/Archive/QcowHandler.cpp +615 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +2746 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +411 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1241 -355
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.h +70 -20
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.h +38 -34
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.h +34 -16
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVol.h +129 -0
- data/ext/p7zip/CPP/7zip/Archive/RpmHandler.cpp +641 -194
- data/ext/p7zip/CPP/7zip/Archive/SplitHandler.cpp +174 -181
- data/ext/p7zip/CPP/7zip/Archive/SquashfsHandler.cpp +237 -174
- data/ext/p7zip/CPP/7zip/Archive/SwfHandler.cpp +471 -192
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +350 -59
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.h +24 -7
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +79 -27
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +5 -7
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.h +20 -44
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.cpp +279 -64
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.h +10 -1
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarItem.h +34 -8
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.cpp +145 -87
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.h +13 -5
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +154 -27
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.h +10 -6
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +53 -128
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.h +6 -5
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +384 -119
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.h +40 -21
- data/ext/p7zip/CPP/7zip/Archive/UefiHandler.cpp +1618 -0
- data/ext/p7zip/CPP/7zip/Archive/VdiHandler.cpp +362 -0
- data/ext/p7zip/CPP/7zip/Archive/VhdHandler.cpp +438 -247
- data/ext/p7zip/CPP/7zip/Archive/VmdkHandler.cpp +1518 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +837 -249
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.h +73 -47
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +1614 -351
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.cpp +1519 -513
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.h +498 -139
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +13 -9
- data/ext/p7zip/CPP/7zip/Archive/XarHandler.cpp +272 -128
- data/ext/p7zip/CPP/7zip/Archive/XzHandler.cpp +502 -253
- data/ext/p7zip/CPP/7zip/Archive/XzHandler.h +65 -0
- data/ext/p7zip/CPP/7zip/Archive/ZHandler.cpp +114 -39
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +118 -134
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +6 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +40 -20
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +541 -274
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.h +13 -40
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +165 -254
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.h +70 -178
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +1934 -550
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.h +294 -63
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +160 -86
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.h +139 -110
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +177 -154
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.h +50 -18
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +18 -9
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +367 -201
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +11 -10
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile +2 -319
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.depend +0 -4962
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.list +1004 -259
- data/ext/p7zip/CPP/7zip/Common/CWrappers.cpp +26 -22
- data/ext/p7zip/CPP/7zip/Common/CWrappers.h +19 -14
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.cpp +298 -130
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.h +118 -34
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.cpp +24 -28
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.h +5 -5
- data/ext/p7zip/CPP/7zip/Common/FileStreams.cpp +268 -65
- data/ext/p7zip/CPP/7zip/Common/FileStreams.h +70 -33
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.cpp +302 -131
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.h +141 -43
- data/ext/p7zip/CPP/7zip/Common/InBuffer.cpp +87 -35
- data/ext/p7zip/CPP/7zip/Common/InBuffer.h +54 -45
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.cpp +22 -17
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.h +5 -5
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.cpp +256 -43
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.h +135 -8
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.cpp +5 -5
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.h +3 -3
- data/ext/p7zip/CPP/7zip/Common/MethodId.cpp +0 -24
- data/ext/p7zip/CPP/7zip/Common/MethodId.h +1 -1
- data/ext/p7zip/CPP/7zip/Common/MethodProps.cpp +430 -71
- data/ext/p7zip/CPP/7zip/Common/MethodProps.h +170 -17
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.cpp +8 -4
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.h +4 -3
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.cpp +26 -31
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.h +17 -18
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.cpp +5 -5
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.h +5 -4
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.cpp +22 -13
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.h +4 -3
- data/ext/p7zip/CPP/7zip/Common/PropId.cpp +108 -0
- data/ext/p7zip/CPP/7zip/Common/RegisterArc.h +63 -17
- data/ext/p7zip/CPP/7zip/Common/RegisterCodec.h +79 -6
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.cpp +95 -90
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.h +46 -23
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.cpp +88 -24
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.h +36 -14
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.cpp +4 -4
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.h +6 -6
- data/ext/p7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
- data/ext/p7zip/CPP/7zip/Common/UniqBlocks.h +26 -0
- data/ext/p7zip/CPP/7zip/Common/VirtThread.cpp +8 -6
- data/ext/p7zip/CPP/7zip/Common/VirtThread.h +6 -5
- data/ext/p7zip/CPP/7zip/Compress/BZip2Const.h +13 -12
- data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.cpp +198 -147
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.h +60 -27
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.cpp +111 -116
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.h +53 -59
- data/ext/p7zip/CPP/7zip/Compress/BZip2Register.cpp +12 -7
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.cpp +554 -282
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.h +73 -71
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Register.cpp +10 -5
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.cpp +13 -4
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.h +17 -5
- data/ext/p7zip/CPP/7zip/Compress/BcjRegister.cpp +7 -9
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.h +58 -61
- data/ext/p7zip/CPP/7zip/Compress/BitlEncoder.h +24 -25
- data/ext/p7zip/CPP/7zip/Compress/BitmDecoder.h +46 -17
- data/ext/p7zip/CPP/7zip/Compress/BitmEncoder.h +18 -19
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.cpp +14 -28
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.h +27 -6
- data/ext/p7zip/CPP/7zip/Compress/BranchRegister.cpp +26 -15
- data/ext/p7zip/CPP/7zip/Compress/ByteSwap.cpp +45 -26
- data/ext/p7zip/CPP/7zip/Compress/CodecExports.cpp +254 -70
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.cpp +65 -17
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.h +15 -3
- data/ext/p7zip/CPP/7zip/Compress/CopyRegister.cpp +5 -4
- data/ext/p7zip/CPP/7zip/Compress/Deflate64Register.cpp +12 -6
- data/ext/p7zip/CPP/7zip/Compress/DeflateConst.h +43 -46
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.cpp +145 -81
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.h +31 -33
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.cpp +179 -162
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.h +35 -30
- data/ext/p7zip/CPP/7zip/Compress/DeflateRegister.cpp +11 -7
- data/ext/p7zip/CPP/7zip/Compress/DeltaFilter.cpp +55 -39
- data/ext/p7zip/CPP/7zip/Compress/{DllExports2.cpp → DllExports2Compress.cpp} +8 -8
- data/ext/p7zip/CPP/7zip/Compress/DllExportsCompress.cpp +48 -0
- data/ext/p7zip/CPP/7zip/Compress/HuffmanDecoder.h +220 -49
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.h +2 -3
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +7 -7
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.cpp +1 -1
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.h +21 -18
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.cpp +171 -141
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.h +32 -64
- data/ext/p7zip/CPP/7zip/Compress/Lzham/LICENSE +22 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/LzhamRegister.cpp +783 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/README.md +211 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham.h +803 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_dynamic_lib.h +156 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_exports.inc +31 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_static_lib.h +59 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/zlib.h +2 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/CMakeLists.txt +69 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_comp.h +38 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.cpp +244 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.h +46 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp.cpp +750 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.cpp +2240 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.h +503 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_state.cpp +1684 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.cpp +947 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.h +164 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_null_threading.h +98 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.cpp +214 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.h +535 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_threading.h +12 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.cpp +232 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.h +387 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzhamcomp.vcxproj +208 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/CMakeLists.txt +86 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.cpp +80 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.h +58 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.cpp +73 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.h +13 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_config.h +25 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_core.h +303 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_decomp.h +37 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_helpers.h +54 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.cpp +286 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.h +32 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecomp.cpp +1586 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.cpp +131 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.h +89 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_math.h +142 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.cpp +463 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.h +115 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.cpp +159 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.h +284 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.cpp +431 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.h +157 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.cpp +1527 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.h +494 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.cpp +147 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.h +99 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_traits.h +141 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_types.h +72 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_utils.h +58 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.cpp +83 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.h +628 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzhamdecomp.vcxproj +224 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzham_lib.cpp +179 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzhamlib.vcxproj +187 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile +10 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.depend +0 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.list +129 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +123 -46
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.h +29 -14
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Register.cpp +9 -7
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.cpp +24 -8
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.h +8 -1
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.cpp +30 -27
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.h +3 -1
- data/ext/p7zip/CPP/7zip/Compress/LzmaRegister.cpp +9 -7
- data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.cpp +576 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.h +271 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzx.h +32 -36
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.cpp +380 -238
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.h +170 -83
- data/ext/p7zip/CPP/7zip/Compress/Mtf8.h +7 -9
- data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.cpp +1 -5
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.cpp +51 -18
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.h +18 -8
- data/ext/p7zip/CPP/7zip/Compress/PpmdRegister.cpp +9 -8
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.cpp +61 -25
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.h +21 -6
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.cpp +122 -102
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.h +68 -157
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile +33 -18
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.depend +0 -158
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.list +105 -56
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.cpp +34 -21
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.h +2 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.cpp +77 -67
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.h +12 -10
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.cpp +139 -118
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.h +48 -33
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.cpp +148 -113
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.h +35 -19
- data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.cpp +961 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.h +335 -0
- data/ext/p7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +13 -6
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +91 -71
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.h +2 -4
- data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.cpp +129 -0
- data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.h +13 -0
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.cpp +98 -20
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.h +19 -7
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.cpp +14 -11
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.h +32 -1
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.cpp +137 -101
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.h +31 -30
- data/ext/p7zip/CPP/7zip/Crypto/7zAesRegister.cpp +8 -9
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.cpp +39 -28
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.h +3 -3
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.cpp +62 -0
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.cpp +73 -7
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.h +25 -8
- data/ext/p7zip/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +29 -15
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +2 -1
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.cpp +49 -34
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.h +2 -2
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +36 -39
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.h +15 -17
- data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.cpp +257 -0
- data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.h +84 -0
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.cpp +70 -71
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.h +24 -19
- data/ext/p7zip/CPP/7zip/Crypto/Sha1Cls.h +51 -0
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.cpp +68 -54
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.h +37 -27
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.cpp +60 -34
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.h +28 -11
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.cpp +90 -28
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.h +13 -2
- data/ext/p7zip/CPP/7zip/Guid.txt +57 -11
- data/ext/p7zip/CPP/7zip/ICoder.h +202 -17
- data/ext/p7zip/CPP/7zip/IDecl.h +16 -3
- data/ext/p7zip/CPP/7zip/IPassword.h +1 -2
- data/ext/p7zip/CPP/7zip/IProgress.h +2 -16
- data/ext/p7zip/CPP/7zip/IStream.h +82 -13
- data/ext/p7zip/CPP/7zip/MyVersion.h +2 -11
- data/ext/p7zip/CPP/7zip/PropID.h +60 -9
- data/ext/p7zip/CPP/Common/C_FileIO.cpp +5 -1
- data/ext/p7zip/CPP/Common/C_FileIO.h +7 -1
- data/ext/p7zip/CPP/Common/CommandLineParser.cpp +122 -148
- data/ext/p7zip/CPP/Common/CommandLineParser.h +20 -29
- data/ext/p7zip/CPP/Common/Common.h +13 -0
- data/ext/p7zip/CPP/Common/CrcReg.cpp +98 -0
- data/ext/p7zip/CPP/Common/Defs.h +5 -10
- data/ext/p7zip/CPP/Common/DynLimBuf.cpp +93 -0
- data/ext/p7zip/CPP/Common/DynLimBuf.h +40 -0
- data/ext/p7zip/CPP/Common/DynamicBuffer.h +45 -31
- data/ext/p7zip/CPP/Common/IntToString.cpp +109 -40
- data/ext/p7zip/CPP/Common/IntToString.h +14 -9
- data/ext/p7zip/CPP/Common/Lang.cpp +120 -87
- data/ext/p7zip/CPP/Common/Lang.h +10 -15
- data/ext/p7zip/CPP/Common/ListFileUtils.cpp +82 -40
- data/ext/p7zip/CPP/Common/ListFileUtils.h +7 -4
- data/ext/p7zip/CPP/Common/MyBuffer.h +244 -0
- data/ext/p7zip/CPP/Common/MyCom.h +65 -28
- data/ext/p7zip/CPP/Common/MyGuidDef.h +1 -1
- data/ext/p7zip/CPP/Common/MyInitGuid.h +23 -0
- data/ext/p7zip/CPP/Common/MyLinux.h +42 -0
- data/ext/p7zip/CPP/Common/MyMap.cpp +8 -8
- data/ext/p7zip/CPP/Common/MyMap.h +2 -2
- data/ext/p7zip/CPP/Common/MyString.cpp +1643 -117
- data/ext/p7zip/CPP/Common/MyString.h +677 -486
- data/ext/p7zip/CPP/Common/MyTypes.h +38 -0
- data/ext/p7zip/CPP/Common/MyUnknown.h +4 -0
- data/ext/p7zip/CPP/Common/MyVector.cpp +0 -84
- data/ext/p7zip/CPP/Common/MyVector.h +472 -112
- data/ext/p7zip/CPP/Common/MyWindows.cpp +18 -1
- data/ext/p7zip/CPP/Common/MyWindows.h +8 -0
- data/ext/p7zip/CPP/Common/MyXml.cpp +169 -118
- data/ext/p7zip/CPP/Common/MyXml.h +14 -11
- data/ext/p7zip/CPP/Common/NewHandler.cpp +39 -0
- data/ext/p7zip/CPP/Common/NewHandler.h +55 -2
- data/ext/p7zip/CPP/Common/Random.h +14 -0
- data/ext/p7zip/CPP/Common/Sha1Reg.cpp +40 -0
- data/ext/p7zip/CPP/Common/Sha256Reg.cpp +40 -0
- data/ext/p7zip/CPP/Common/StdInStream.cpp +46 -27
- data/ext/p7zip/CPP/Common/StdInStream.h +11 -10
- data/ext/p7zip/CPP/Common/StdOutStream.cpp +48 -35
- data/ext/p7zip/CPP/Common/StdOutStream.h +44 -17
- data/ext/p7zip/CPP/Common/StringConvert.cpp +56 -17
- data/ext/p7zip/CPP/Common/StringConvert.h +7 -3
- data/ext/p7zip/CPP/Common/StringToInt.cpp +102 -48
- data/ext/p7zip/CPP/Common/StringToInt.h +13 -10
- data/ext/p7zip/CPP/Common/TextConfig.cpp +33 -47
- data/ext/p7zip/CPP/Common/TextConfig.h +3 -6
- data/ext/p7zip/CPP/Common/UTFConvert.cpp +218 -75
- data/ext/p7zip/CPP/Common/UTFConvert.h +4 -3
- data/ext/p7zip/CPP/Common/Wildcard.cpp +345 -125
- data/ext/p7zip/CPP/Common/Wildcard.h +82 -13
- data/ext/p7zip/CPP/Common/XzCrc64Reg.cpp +42 -0
- data/ext/p7zip/CPP/Windows/FileDir.cpp +427 -475
- data/ext/p7zip/CPP/Windows/FileDir.h +94 -72
- data/ext/p7zip/CPP/Windows/FileFind.cpp +235 -244
- data/ext/p7zip/CPP/Windows/FileFind.h +63 -59
- data/ext/p7zip/CPP/Windows/FileIO.cpp +29 -46
- data/ext/p7zip/CPP/Windows/FileIO.h +40 -42
- data/ext/p7zip/CPP/Windows/FileName.cpp +696 -17
- data/ext/p7zip/CPP/Windows/FileName.h +11 -3
- data/ext/p7zip/CPP/Windows/NtCheck.h +2 -0
- data/ext/p7zip/CPP/Windows/PropVariant.cpp +134 -30
- data/ext/p7zip/CPP/Windows/PropVariant.h +80 -24
- data/ext/p7zip/CPP/Windows/PropVariantUtils.cpp +89 -18
- data/ext/p7zip/CPP/Windows/PropVariantUtils.h +12 -7
- data/ext/p7zip/CPP/Windows/System.cpp +20 -15
- data/ext/p7zip/CPP/Windows/System.h +3 -2
- data/ext/p7zip/CPP/Windows/TimeUtils.cpp +203 -0
- data/ext/p7zip/CPP/Windows/TimeUtils.h +24 -0
- data/ext/p7zip/CPP/include_windows/basetyps.h +4 -4
- data/ext/p7zip/CPP/include_windows/windows.h +17 -11
- data/ext/p7zip/CPP/myWindows/StdAfx.h +97 -5
- data/ext/p7zip/CPP/myWindows/config.h +20 -5
- data/ext/p7zip/CPP/myWindows/myPrivate.h +8 -0
- data/ext/p7zip/CPP/myWindows/wine_date_and_time.cpp +34 -0
- data/ext/p7zip/ChangeLog +283 -35
- data/ext/p7zip/{DOCS → DOC}/7zC.txt +6 -13
- data/ext/p7zip/{DOCS → DOC}/License.txt +3 -2
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/add.htm +93 -87
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/bench.htm +88 -79
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/delete.htm +62 -59
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract.htm +96 -91
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract_full.htm +73 -68
- data/ext/p7zip/DOC/MANUAL/cmdline/commands/hash.htm +65 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/index.htm +36 -33
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/list.htm +78 -77
- data/ext/p7zip/DOC/MANUAL/cmdline/commands/rename.htm +51 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/test.htm +47 -46
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/update.htm +71 -66
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/exit_codes.htm +27 -27
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/index.htm +29 -29
- data/ext/p7zip/{DOCS/MANUAL/switches → DOC/MANUAL/cmdline}/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_exclude.htm +56 -56
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_include.htm +80 -83
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_no.htm +52 -52
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/bb.htm +61 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/bs.htm +67 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/charset.htm +61 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/exclude.htm +71 -60
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/include.htm +89 -87
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/index.htm +95 -64
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/large_pages.htm +59 -50
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/list_tech.htm +36 -36
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/method.htm +738 -625
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/output_dir.htm +53 -53
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/overwrite.htm +56 -56
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/password.htm +55 -54
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/recurse.htm +85 -83
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sa.htm +58 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/scc.htm +42 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/scrc.htm +53 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sdel.htm +39 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/sfx.htm +153 -156
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/shared.htm +40 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sni.htm +56 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sns.htm +77 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/spf.htm +80 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ssc.htm +50 -50
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdin.htm +56 -55
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdout.htm +54 -50
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/stl.htm +39 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stop_switch.htm +31 -31
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/stx.htm +50 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline/switches}/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/type.htm +121 -83
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/update.htm +177 -176
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/volume.htm +49 -49
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/working_dir.htm +56 -55
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/yes.htm +48 -48
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/syntax.htm +120 -120
- data/ext/p7zip/DOC/MANUAL/fm/about.htm +21 -0
- data/ext/p7zip/DOC/MANUAL/fm/benchmark.htm +56 -0
- data/ext/p7zip/DOC/MANUAL/fm/index.htm +54 -0
- data/ext/p7zip/DOC/MANUAL/fm/menu.htm +154 -0
- data/ext/p7zip/DOC/MANUAL/fm/options.htm +152 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/add.htm +311 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/extract.htm +78 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/index.htm +63 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/index.htm +22 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/fm/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/general/7z.htm +117 -0
- data/ext/p7zip/DOC/MANUAL/general/faq.htm +125 -0
- data/ext/p7zip/DOC/MANUAL/general/formats.htm +100 -0
- data/ext/p7zip/DOC/MANUAL/general/index.htm +27 -0
- data/ext/p7zip/DOC/MANUAL/general/license.htm +30 -0
- data/ext/p7zip/DOC/MANUAL/general/performance.htm +98 -0
- data/ext/p7zip/DOC/MANUAL/general/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/general/thanks.htm +43 -0
- data/ext/p7zip/DOC/MANUAL/start.htm +37 -0
- data/ext/p7zip/DOC/MANUAL/style.css +232 -0
- data/ext/p7zip/DOC/Methods.txt +158 -0
- data/ext/p7zip/{DOCS → DOC}/copying.txt +9 -11
- data/ext/p7zip/DOC/lzma.txt +328 -0
- data/ext/p7zip/{DOCS → DOC}/readme.txt +42 -65
- data/ext/p7zip/{DOCS/history.txt → DOC/src-history.txt} +88 -2
- data/ext/p7zip/README +117 -91
- data/ext/p7zip/TODO +0 -2
- data/ext/p7zip/install.sh +31 -29
- data/ext/p7zip/last_error +1 -0
- data/ext/p7zip/makefile +29 -125
- data/ext/p7zip/makefile.afl +23 -0
- data/ext/p7zip/makefile.aix_gcc +5 -4
- data/ext/p7zip/makefile.android_arm +49 -0
- data/ext/p7zip/makefile.beos +5 -4
- data/ext/p7zip/makefile.common +150 -0
- data/ext/p7zip/makefile.crc32 +3 -3
- data/ext/p7zip/makefile.cygwin +5 -4
- data/ext/p7zip/makefile.cygwin64 +21 -0
- data/ext/p7zip/makefile.cygwin64_asm +22 -0
- data/ext/p7zip/makefile.cygwin_asm +6 -4
- data/ext/p7zip/makefile.cygwin_clang +21 -0
- data/ext/p7zip/makefile.cygwin_clang_asm +23 -0
- data/ext/p7zip/{makefile.djgpp_old → makefile.djgpp} +5 -4
- data/ext/p7zip/makefile.djgpp_watt +7 -5
- data/ext/p7zip/makefile.freebsd5 +5 -4
- data/ext/p7zip/{makefile.freebsd6 → makefile.freebsd6+} +6 -5
- data/ext/p7zip/makefile.glb +27 -18
- data/ext/p7zip/makefile.gprof +3 -2
- data/ext/p7zip/makefile.haiku +19 -0
- data/ext/p7zip/makefile.hpux-acc +3 -2
- data/ext/p7zip/makefile.hpux-acc_64 +3 -2
- data/ext/p7zip/makefile.hpux-gcc +5 -4
- data/ext/p7zip/makefile.linux_amd64 +5 -4
- data/ext/p7zip/makefile.linux_amd64_asm +12 -5
- data/ext/p7zip/makefile.linux_amd64_asm_icc +5 -3
- data/ext/p7zip/makefile.linux_amd64_sanitizer +26 -0
- data/ext/p7zip/makefile.linux_any_cpu +5 -4
- data/ext/p7zip/makefile.linux_any_cpu_gcc_4.X +7 -4
- data/ext/p7zip/makefile.linux_clang_amd64_asm +25 -0
- data/ext/p7zip/makefile.linux_clang_amd64_asm_sanitize +27 -0
- data/ext/p7zip/makefile.linux_cross_aarch64 +25 -0
- data/ext/p7zip/makefile.linux_cross_arm +7 -4
- data/ext/p7zip/makefile.linux_cross_djgpp +27 -0
- data/ext/p7zip/makefile.linux_cross_m68k +26 -0
- data/ext/p7zip/makefile.linux_cross_mipsel +27 -0
- data/ext/p7zip/makefile.linux_cross_ppc +25 -0
- data/ext/p7zip/makefile.linux_cross_ppc64 +25 -0
- data/ext/p7zip/makefile.linux_cross_ppc64le +25 -0
- data/ext/p7zip/makefile.linux_cross_s390x +25 -0
- data/ext/p7zip/makefile.linux_cross_sparc64 +25 -0
- data/ext/p7zip/makefile.linux_gcc6_sanitize +23 -0
- data/ext/p7zip/makefile.linux_gcc_2.95_no_need_for_libstdc +6 -4
- data/ext/p7zip/makefile.linux_other +6 -5
- data/ext/p7zip/makefile.linux_s390x +5 -4
- data/ext/p7zip/{makefile.machine_base → makefile.linux_scan-build} +5 -4
- data/ext/p7zip/makefile.linux_valgrind +25 -0
- data/ext/p7zip/{makefile.linux_clang_amd64 → makefile.linux_x32} +6 -5
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X +10 -5
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X_fltk +8 -4
- data/ext/p7zip/makefile.linux_x86_asm_gcc_mudflap_4.X +4 -2
- data/ext/p7zip/makefile.linux_x86_asm_icc +4 -2
- data/ext/p7zip/makefile.linux_x86_icc +3 -2
- data/ext/p7zip/makefile.macosx_arm64 +17 -0
- data/ext/p7zip/{makefile.macosx_32bits → makefile.macosx_gcc_32bits} +3 -2
- data/ext/p7zip/{makefile.macosx_32bits_asm → makefile.macosx_gcc_32bits_asm} +5 -3
- data/ext/p7zip/{makefile.macosx_32bits_ppc → makefile.macosx_gcc_32bits_ppc} +3 -2
- data/ext/p7zip/{makefile.macosx_64bits → makefile.macosx_gcc_64bits} +3 -2
- data/ext/p7zip/makefile.macosx_llvm_64bits +9 -3
- data/ext/p7zip/makefile.netbsd +5 -4
- data/ext/p7zip/makefile.netware_asm_gcc_3.X +6 -4
- data/ext/p7zip/makefile.oldmake +41 -130
- data/ext/p7zip/makefile.openbsd +7 -3
- data/ext/p7zip/makefile.openbsd_no_port +9 -5
- data/ext/p7zip/makefile.qnx_shared.bin +5 -4
- data/ext/p7zip/makefile.qnx_static +5 -4
- data/ext/p7zip/makefile.solaris_sparc_CC_32 +5 -4
- data/ext/p7zip/makefile.solaris_sparc_CC_64 +6 -4
- data/ext/p7zip/makefile.solaris_sparc_gcc +7 -6
- data/ext/p7zip/makefile.solaris_x86 +5 -4
- data/ext/p7zip/makefile.tru64 +5 -4
- data/ext/seven_zip_ruby/extconf.rb +92 -6
- data/ext/seven_zip_ruby/seven_zip_archive.cpp +40 -17
- data/ext/seven_zip_ruby/seven_zip_archive.h +1 -1
- data/ext/seven_zip_ruby/utils.cpp +267 -124
- data/ext/seven_zip_ruby/utils.h +2 -0
- data/lib/seven_zip_ruby/7z.dll +0 -0
- data/lib/seven_zip_ruby/7z.sfx +0 -0
- data/lib/seven_zip_ruby/7z64.dll +0 -0
- data/lib/seven_zip_ruby/7zCon.sfx +0 -0
- data/lib/seven_zip_ruby/seven_zip_reader.rb +16 -1
- data/lib/seven_zip_ruby/version.rb +1 -1
- data/p7zip/.gitignore +7 -0
- data/p7zip/README.txt +29 -0
- data/p7zip/extract.sh +134 -0
- data/spec/seven_zip_ruby_spec.rb +22 -13
- data/test/res/The Flying Spaghetti Monster.txt +3 -0
- data/test/res/The Three Little Pigs.txt +5 -0
- data/test/res/UTF_content.txt +3 -0
- data/test/res/test_reader_data.7z +0 -0
- data/test/res/test_reader_filename_cp932.7z +0 -0
- data/test/res/test_reader_files.7z +0 -0
- data/test/test_seven_zip_reader.rb +187 -0
- data/test/test_seven_zip_writer.rb +184 -0
- metadata +267 -219
- data/.github/workflows/test-and-release.yml +0 -43
- data/ext/C/Types.h +0 -254
- data/ext/CPP/7zip/Archive/IArchive.h +0 -234
- data/ext/CPP/7zip/IDecl.h +0 -15
- data/ext/CPP/7zip/IPassword.h +0 -24
- data/ext/CPP/7zip/IProgress.h +0 -33
- data/ext/CPP/7zip/IStream.h +0 -58
- data/ext/CPP/7zip/PropID.h +0 -76
- data/ext/CPP/Common/MyCom.h +0 -225
- data/ext/CPP/Common/MyGuidDef.h +0 -54
- data/ext/CPP/Common/MyInitGuid.h +0 -22
- data/ext/CPP/Common/MyUnknown.h +0 -13
- data/ext/CPP/Common/MyWindows.h +0 -204
- data/ext/CPP/Common/Types.h +0 -11
- data/ext/CPP/Windows/PropVariant.h +0 -56
- data/ext/CPP/include_windows/basetyps.h +0 -19
- data/ext/CPP/include_windows/tchar.h +0 -89
- data/ext/CPP/include_windows/windows.h +0 -194
- data/ext/p7zip/Asm/x64/7zCrcT8U.asm +0 -103
- data/ext/p7zip/Asm/x86/7zCrcT8U.asm +0 -101
- data/ext/p7zip/C/7zCrcT8.c +0 -43
- data/ext/p7zip/C/Alloc.back3 +0 -238
- data/ext/p7zip/C/Alloc.c.back +0 -243
- data/ext/p7zip/C/Alloc.c.back2 +0 -222
- data/ext/p7zip/C/LzmaUtil/Lzma86Dec.h +0 -51
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.cpp +0 -149
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.h +0 -58
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.cpp +0 -24
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.h +0 -28
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.cpp +0 -239
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.h +0 -28
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.cpp +0 -389
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.h +0 -119
- data/ext/p7zip/CPP/7zip/Archive/Com/ComRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.cpp +0 -240
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.h +0 -80
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.cpp +0 -239
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.h +0 -88
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.cpp +0 -15
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.h +0 -37
- data/ext/p7zip/CPP/7zip/Archive/DebHandler.cpp +0 -413
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.cpp +0 -243
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.h +0 -26
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.cpp +0 -480
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.h +0 -154
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.cpp +0 -21
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.cpp +0 -478
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.h +0 -123
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.cpp +0 -55
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp +0 -78
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.h +0 -49
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.cpp +0 -36
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItemEx.h +0 -34
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zFM.txt +0 -163
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zG.txt +0 -131
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7za.txt +0 -253
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_ALL.txt +0 -32
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_Format7zFree.txt +0 -290
- data/ext/p7zip/CPP/7zip/CMAKE/generate.sh +0 -37
- data/ext/p7zip/CPP/7zip/CMAKE/generate_xcode.sh +0 -32
- data/ext/p7zip/CPP/7zip/Common/LockedStream.cpp +0 -23
- data/ext/p7zip/CPP/7zip/Common/LockedStream.h +0 -38
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.cpp +0 -309
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.h +0 -98
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.cpp +0 -90
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.h +0 -59
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.cpp +0 -19
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.h +0 -44
- data/ext/p7zip/CPP/7zip/Compress/DllExports.cpp +0 -39
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaAlone.cpp +0 -531
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.cpp +0 -1018
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.h +0 -48
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.cpp +0 -311
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.h +0 -20
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/makefile +0 -173
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.cpp +0 -90
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.h +0 -46
- data/ext/p7zip/CPP/7zip/Compress/RangeCoder.h +0 -205
- data/ext/p7zip/CPP/7zip/Compress/RangeCoderBit.h +0 -114
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.cpp +0 -229
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.h +0 -68
- data/ext/p7zip/CPP/7zip/PREMAKE/generate.sh +0 -18
- data/ext/p7zip/CPP/7zip/PREMAKE/premake4.lua +0 -263
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA.pro +0 -228
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA_osx.pro +0 -228
- data/ext/p7zip/CPP/7zip/QMAKE/test_emul/test_emul.pro +0 -26
- data/ext/p7zip/CPP/7zip/TEST/TestUI/TestUI.cpp +0 -560
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile +0 -33
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.depend +0 -577
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.list +0 -16
- data/ext/p7zip/CPP/Common/Buffer.h +0 -77
- data/ext/p7zip/CPP/Common/Types.h +0 -11
- data/ext/p7zip/CPP/Windows/COM.cpp +0 -37
- data/ext/p7zip/CPP/Windows/COM.h +0 -69
- data/ext/p7zip/CPP/Windows/Clipboard.cpp +0 -160
- data/ext/p7zip/CPP/Windows/Clipboard.h +0 -28
- data/ext/p7zip/CPP/Windows/CommonDialog.h +0 -19
- data/ext/p7zip/CPP/Windows/Control/ComboBox.h +0 -82
- data/ext/p7zip/CPP/Windows/Control/Controls.cpp +0 -515
- data/ext/p7zip/CPP/Windows/Control/Dialog.cpp +0 -560
- data/ext/p7zip/CPP/Windows/Control/Dialog.h +0 -179
- data/ext/p7zip/CPP/Windows/Control/DialogImpl.h +0 -73
- data/ext/p7zip/CPP/Windows/Control/Edit.h +0 -24
- data/ext/p7zip/CPP/Windows/Control/ListView.h +0 -164
- data/ext/p7zip/CPP/Windows/Control/ProgressBar.h +0 -34
- data/ext/p7zip/CPP/Windows/Control/Static.h +0 -23
- data/ext/p7zip/CPP/Windows/Control/StatusBar.h +0 -56
- data/ext/p7zip/CPP/Windows/Control/Window2.cpp +0 -211
- data/ext/p7zip/CPP/Windows/Control/Window2.h +0 -111
- data/ext/p7zip/CPP/Windows/DLL.cpp +0 -193
- data/ext/p7zip/CPP/Windows/DLL.h +0 -48
- data/ext/p7zip/CPP/Windows/Error.cpp +0 -58
- data/ext/p7zip/CPP/Windows/Error.h +0 -33
- data/ext/p7zip/CPP/Windows/Menu.h +0 -4
- data/ext/p7zip/CPP/Windows/PropVariantConversions.cpp +0 -142
- data/ext/p7zip/CPP/Windows/PropVariantConversions.h +0 -14
- data/ext/p7zip/CPP/Windows/Registry.cpp +0 -313
- data/ext/p7zip/CPP/Windows/Registry.h +0 -113
- data/ext/p7zip/CPP/Windows/ResourceString.h +0 -22
- data/ext/p7zip/CPP/Windows/Shell.h +0 -21
- data/ext/p7zip/CPP/Windows/Time.cpp +0 -88
- data/ext/p7zip/CPP/Windows/Time.h +0 -21
- data/ext/p7zip/CPP/Windows/Window.cpp +0 -101
- data/ext/p7zip/CPP/Windows/Window.h +0 -43
- data/ext/p7zip/CPP/myWindows/initguid.h +0 -4
- data/ext/p7zip/CPP/myWindows/makefile +0 -21
- data/ext/p7zip/CPP/myWindows/makefile.depend +0 -32
- data/ext/p7zip/CPP/myWindows/makefile.list +0 -28
- data/ext/p7zip/CPP/myWindows/myAddExeFlag.cpp +0 -20
- data/ext/p7zip/CPP/myWindows/myGetTickCount.cpp +0 -8
- data/ext/p7zip/CPP/myWindows/mySplitCommandLine.cpp +0 -82
- data/ext/p7zip/CPP/myWindows/test_emul.cpp +0 -745
- data/ext/p7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp +0 -741
- data/ext/p7zip/DOCS/MANUAL/switches/charset.htm +0 -49
- data/ext/p7zip/DOCS/Methods.txt +0 -152
- data/ext/p7zip/DOCS/lzma.txt +0 -598
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/ChangeLog +0 -41
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme +0 -21
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme.u7z +0 -30
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/u7z +0 -133
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/README +0 -21
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/check.sh +0 -117
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/files.tar +0 -0
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/man1/p7zip.1 +0 -33
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/p7zip +0 -144
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-shared +0 -14
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-static +0 -10
- data/ext/p7zip/integration_context_menu.txt +0 -51
- data/ext/p7zip/makefile.rules +0 -661
- /data/ext/p7zip/{DOCS → DOC}/7zFormat.txt +0 -0
- /data/ext/p7zip/{DOCS → DOC}/unRarLicense.txt +0 -0
@@ -4,11 +4,12 @@
|
|
4
4
|
|
5
5
|
#include "../../../C/CpuArch.h"
|
6
6
|
|
7
|
-
#include "Common/ComTry.h"
|
8
|
-
#include "Common/
|
7
|
+
#include "../../Common/ComTry.h"
|
8
|
+
#include "../../Common/IntToString.h"
|
9
|
+
#include "../../Common/StringConvert.h"
|
9
10
|
|
10
|
-
#include "Windows/PropVariant.h"
|
11
|
-
#include "Windows/
|
11
|
+
#include "../../Windows/PropVariant.h"
|
12
|
+
#include "../../Windows/TimeUtils.h"
|
12
13
|
|
13
14
|
#include "../Common/LimitedStreams.h"
|
14
15
|
#include "../Common/ProgressUtils.h"
|
@@ -16,89 +17,267 @@
|
|
16
17
|
#include "../Common/StreamObjects.h"
|
17
18
|
#include "../Common/StreamUtils.h"
|
18
19
|
|
19
|
-
#include "../Compress/ArjDecoder1.h"
|
20
|
-
#include "../Compress/ArjDecoder2.h"
|
21
20
|
#include "../Compress/CopyCoder.h"
|
21
|
+
#include "../Compress/LzhDecoder.h"
|
22
22
|
|
23
23
|
#include "Common/ItemNameUtils.h"
|
24
24
|
#include "Common/OutStreamWithCRC.h"
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
#define Get16(p) GetUi16(p)
|
29
|
-
#define Get32(p) GetUi32(p)
|
30
|
-
|
31
|
-
namespace NArchive {
|
26
|
+
namespace NCompress {
|
32
27
|
namespace NArj {
|
28
|
+
namespace NDecoder {
|
29
|
+
|
30
|
+
static const unsigned kMatchMinLen = 3;
|
33
31
|
|
34
|
-
const
|
35
|
-
const int kBlockSizeMax = 2600;
|
32
|
+
static const UInt32 kWindowSize = 1 << 15; // must be >= (1 << 14)
|
36
33
|
|
37
|
-
|
34
|
+
class CCoder:
|
35
|
+
public ICompressCoder,
|
36
|
+
public CMyUnknownImp
|
38
37
|
{
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
CLzOutWindow _outWindow;
|
39
|
+
NBitm::CDecoder<CInBuffer> _inBitStream;
|
40
|
+
|
41
|
+
class CCoderReleaser
|
42
|
+
{
|
43
|
+
CCoder *_coder;
|
44
|
+
public:
|
45
|
+
CCoderReleaser(CCoder *coder): _coder(coder) {}
|
46
|
+
void Disable() { _coder = NULL; }
|
47
|
+
~CCoderReleaser() { if (_coder) _coder->_outWindow.Flush(); }
|
48
|
+
};
|
49
|
+
friend class CCoderReleaser;
|
50
|
+
|
51
|
+
HRESULT CodeReal(UInt64 outSize, ICompressProgressInfo *progress);
|
52
|
+
public:
|
53
|
+
MY_UNKNOWN_IMP
|
54
|
+
|
55
|
+
bool FinishMode;
|
56
|
+
CCoder(): FinishMode(false) {}
|
42
57
|
|
43
|
-
|
58
|
+
STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
|
59
|
+
const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
|
60
|
+
UInt64 GetInputProcessedSize() const { return _inBitStream.GetProcessedSize(); }
|
61
|
+
};
|
62
|
+
|
63
|
+
HRESULT CCoder::CodeReal(UInt64 rem, ICompressProgressInfo *progress)
|
44
64
|
{
|
45
|
-
|
65
|
+
const UInt32 kStep = 1 << 20;
|
66
|
+
UInt64 next = 0;
|
67
|
+
if (rem > kStep && progress)
|
68
|
+
next = rem - kStep;
|
69
|
+
|
70
|
+
while (rem != 0)
|
46
71
|
{
|
47
|
-
|
72
|
+
if (rem <= next)
|
48
73
|
{
|
49
|
-
|
50
|
-
|
51
|
-
kCompressed1b = 2,
|
52
|
-
kCompressed1c = 3,
|
53
|
-
kCompressed2 = 4,
|
54
|
-
kNoDataNoCRC = 8,
|
55
|
-
kNoData = 9
|
56
|
-
};
|
57
|
-
}
|
74
|
+
if (_inBitStream.ExtraBitsWereRead())
|
75
|
+
return S_FALSE;
|
58
76
|
|
59
|
-
|
60
|
-
|
61
|
-
|
77
|
+
UInt64 packSize = _inBitStream.GetProcessedSize();
|
78
|
+
UInt64 pos = _outWindow.GetProcessedSize();
|
79
|
+
RINOK(progress->SetRatioInfo(&packSize, &pos));
|
80
|
+
next = 0;
|
81
|
+
if (rem > kStep)
|
82
|
+
next = rem - kStep;
|
83
|
+
}
|
84
|
+
|
85
|
+
UInt32 len;
|
86
|
+
|
87
|
+
{
|
88
|
+
const unsigned kNumBits = 7 + 7;
|
89
|
+
UInt32 val = _inBitStream.GetValue(kNumBits);
|
90
|
+
|
91
|
+
if ((val & (1 << (kNumBits - 1))) == 0)
|
92
|
+
{
|
93
|
+
_outWindow.PutByte((Byte)(val >> 5));
|
94
|
+
_inBitStream.MovePos(1 + 8);
|
95
|
+
rem--;
|
96
|
+
continue;
|
97
|
+
}
|
98
|
+
|
99
|
+
UInt32 mask = 1 << (kNumBits - 2);
|
100
|
+
unsigned w;
|
101
|
+
|
102
|
+
for (w = 1; w < 7; w++, mask >>= 1)
|
103
|
+
if ((val & mask) == 0)
|
104
|
+
break;
|
105
|
+
|
106
|
+
unsigned readBits = (w != 7 ? 1 : 0);
|
107
|
+
readBits += w + w;
|
108
|
+
len = (1 << w) - 1 + kMatchMinLen - 1 +
|
109
|
+
(((val >> (kNumBits - readBits)) & ((1 << w) - 1)));
|
110
|
+
_inBitStream.MovePos(readBits);
|
111
|
+
}
|
112
|
+
|
62
113
|
{
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
114
|
+
const unsigned kNumBits = 4 + 13;
|
115
|
+
UInt32 val = _inBitStream.GetValue(kNumBits);
|
116
|
+
|
117
|
+
unsigned readBits = 1;
|
118
|
+
unsigned w;
|
119
|
+
|
120
|
+
if ((val & ((UInt32)1 << 16)) == 0) w = 9;
|
121
|
+
else if ((val & ((UInt32)1 << 15)) == 0) w = 10;
|
122
|
+
else if ((val & ((UInt32)1 << 14)) == 0) w = 11;
|
123
|
+
else if ((val & ((UInt32)1 << 13)) == 0) w = 12;
|
124
|
+
else { w = 13; readBits = 0; }
|
125
|
+
|
126
|
+
readBits += w + w - 9;
|
127
|
+
|
128
|
+
UInt32 dist = ((UInt32)1 << w) - (1 << 9) +
|
129
|
+
(((val >> (kNumBits - readBits)) & ((1 << w) - 1)));
|
130
|
+
_inBitStream.MovePos(readBits);
|
131
|
+
|
132
|
+
if (len > rem)
|
133
|
+
len = (UInt32)rem;
|
134
|
+
|
135
|
+
if (!_outWindow.CopyBlock(dist, len))
|
136
|
+
return S_FALSE;
|
137
|
+
rem -= len;
|
138
|
+
}
|
70
139
|
}
|
71
|
-
|
72
|
-
|
140
|
+
|
141
|
+
if (FinishMode)
|
73
142
|
{
|
74
|
-
|
75
|
-
|
76
|
-
const Byte kExtFile = 8;
|
77
|
-
const Byte kPathSym = 0x10;
|
78
|
-
const Byte kBackup = 0x20;
|
143
|
+
if (_inBitStream.ReadAlignBits() != 0)
|
144
|
+
return S_FALSE;
|
79
145
|
}
|
80
146
|
|
81
|
-
|
147
|
+
if (_inBitStream.ExtraBitsWereRead())
|
148
|
+
return S_FALSE;
|
149
|
+
|
150
|
+
return S_OK;
|
151
|
+
}
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
STDMETHODIMP CCoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
|
156
|
+
const UInt64 * /* inSize */, const UInt64 *outSize, ICompressProgressInfo *progress)
|
157
|
+
{
|
158
|
+
try
|
82
159
|
{
|
83
|
-
|
160
|
+
if (!outSize)
|
161
|
+
return E_INVALIDARG;
|
162
|
+
|
163
|
+
if (!_outWindow.Create(kWindowSize))
|
164
|
+
return E_OUTOFMEMORY;
|
165
|
+
if (!_inBitStream.Create(1 << 17))
|
166
|
+
return E_OUTOFMEMORY;
|
167
|
+
|
168
|
+
_outWindow.SetStream(outStream);
|
169
|
+
_outWindow.Init(false);
|
170
|
+
_inBitStream.SetStream(inStream);
|
171
|
+
_inBitStream.Init();
|
172
|
+
|
173
|
+
CCoderReleaser coderReleaser(this);
|
174
|
+
HRESULT res;
|
84
175
|
{
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
kAPPLE_GS,
|
93
|
-
kAtari_ST,
|
94
|
-
kNext,
|
95
|
-
kVAX_VMS,
|
96
|
-
kWIN95
|
97
|
-
};
|
176
|
+
res = CodeReal(*outSize, progress);
|
177
|
+
if (res != S_OK)
|
178
|
+
return res;
|
179
|
+
}
|
180
|
+
|
181
|
+
coderReleaser.Disable();
|
182
|
+
return _outWindow.Flush();
|
98
183
|
}
|
184
|
+
catch(const CInBufferException &e) { return e.ErrorCode; }
|
185
|
+
catch(const CLzOutWindowException &e) { return e.ErrorCode; }
|
186
|
+
catch(...) { return S_FALSE; }
|
99
187
|
}
|
100
188
|
|
101
|
-
|
189
|
+
}}}
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
using namespace NWindows;
|
195
|
+
|
196
|
+
#define Get16(p) GetUi16(p)
|
197
|
+
#define Get32(p) GetUi32(p)
|
198
|
+
|
199
|
+
namespace NArchive {
|
200
|
+
namespace NArj {
|
201
|
+
|
202
|
+
static const unsigned kBlockSizeMin = 30;
|
203
|
+
static const unsigned kBlockSizeMax = 2600;
|
204
|
+
|
205
|
+
static const Byte kSig0 = 0x60;
|
206
|
+
static const Byte kSig1 = 0xEA;
|
207
|
+
|
208
|
+
namespace NCompressionMethod
|
209
|
+
{
|
210
|
+
enum
|
211
|
+
{
|
212
|
+
kStored = 0,
|
213
|
+
kCompressed1a = 1,
|
214
|
+
kCompressed1b = 2,
|
215
|
+
kCompressed1c = 3,
|
216
|
+
kCompressed2 = 4,
|
217
|
+
kNoDataNoCRC = 8,
|
218
|
+
kNoData = 9
|
219
|
+
};
|
220
|
+
}
|
221
|
+
|
222
|
+
namespace NFileType
|
223
|
+
{
|
224
|
+
enum
|
225
|
+
{
|
226
|
+
kBinary = 0,
|
227
|
+
k7BitText,
|
228
|
+
kArchiveHeader,
|
229
|
+
kDirectory,
|
230
|
+
kVolumeLablel,
|
231
|
+
kChapterLabel
|
232
|
+
};
|
233
|
+
}
|
234
|
+
|
235
|
+
namespace NFlags
|
236
|
+
{
|
237
|
+
const Byte kGarbled = 1 << 0;
|
238
|
+
const Byte kAnsiPage = 1 << 1; // or (OLD_SECURED_FLAG) obsolete
|
239
|
+
const Byte kVolume = 1 << 2;
|
240
|
+
const Byte kExtFile = 1 << 3;
|
241
|
+
const Byte kPathSym = 1 << 4;
|
242
|
+
const Byte kBackup = 1 << 5; // obsolete
|
243
|
+
const Byte kSecured = 1 << 6;
|
244
|
+
const Byte kDualName = 1 << 7;
|
245
|
+
}
|
246
|
+
|
247
|
+
namespace NHostOS
|
248
|
+
{
|
249
|
+
enum EEnum
|
250
|
+
{
|
251
|
+
kMSDOS = 0, // MS-DOS, OS/2, Win32, pkarj 2.50 (FAT / VFAT / FAT32)
|
252
|
+
kPRIMOS,
|
253
|
+
kUnix,
|
254
|
+
kAMIGA,
|
255
|
+
kMac,
|
256
|
+
kOS_2,
|
257
|
+
kAPPLE_GS,
|
258
|
+
kAtari_ST,
|
259
|
+
kNext,
|
260
|
+
kVAX_VMS,
|
261
|
+
kWIN95
|
262
|
+
};
|
263
|
+
}
|
264
|
+
|
265
|
+
static const char * const kHostOS[] =
|
266
|
+
{
|
267
|
+
"MSDOS"
|
268
|
+
, "PRIMOS"
|
269
|
+
, "UNIX"
|
270
|
+
, "AMIGA"
|
271
|
+
, "MAC"
|
272
|
+
, "OS/2"
|
273
|
+
, "APPLE GS"
|
274
|
+
, "ATARI ST"
|
275
|
+
, "NEXT"
|
276
|
+
, "VAX VMS"
|
277
|
+
, "WIN95"
|
278
|
+
};
|
279
|
+
|
280
|
+
struct CArcHeader
|
102
281
|
{
|
103
282
|
// Byte ArchiverVersion;
|
104
283
|
// Byte ExtractVersion;
|
@@ -110,9 +289,9 @@ struct CArchiveHeader
|
|
110
289
|
UInt32 CTime;
|
111
290
|
UInt32 MTime;
|
112
291
|
UInt32 ArchiveSize;
|
113
|
-
// UInt32
|
114
|
-
// UInt16
|
115
|
-
|
292
|
+
// UInt32 SecurPos;
|
293
|
+
// UInt16 FilespecPosInFilename;
|
294
|
+
UInt16 SecurSize;
|
116
295
|
// Byte EncryptionVersion;
|
117
296
|
// Byte LastChapter;
|
118
297
|
AString Name;
|
@@ -121,47 +300,72 @@ struct CArchiveHeader
|
|
121
300
|
HRESULT Parse(const Byte *p, unsigned size);
|
122
301
|
};
|
123
302
|
|
303
|
+
API_FUNC_static_IsArc IsArc_Arj(const Byte *p, size_t size)
|
304
|
+
{
|
305
|
+
if (size < kBlockSizeMin + 4)
|
306
|
+
return k_IsArc_Res_NEED_MORE;
|
307
|
+
if (p[0] != kSig0 || p[1] != kSig1)
|
308
|
+
return k_IsArc_Res_NO;
|
309
|
+
UInt32 blockSize = Get16(p + 2);
|
310
|
+
if (blockSize < kBlockSizeMin ||
|
311
|
+
blockSize > kBlockSizeMax)
|
312
|
+
return k_IsArc_Res_NO;
|
313
|
+
|
314
|
+
p += 4;
|
315
|
+
size -= 4;
|
316
|
+
|
317
|
+
Byte headerSize = p[0];
|
318
|
+
if (headerSize < kBlockSizeMin ||
|
319
|
+
headerSize > blockSize ||
|
320
|
+
p[6] != NFileType::kArchiveHeader ||
|
321
|
+
p[28] > 8) // EncryptionVersion
|
322
|
+
return k_IsArc_Res_NO;
|
323
|
+
|
324
|
+
if (blockSize + 4 <= size)
|
325
|
+
if (Get32(p + blockSize) != CrcCalc(p, blockSize))
|
326
|
+
return k_IsArc_Res_NO;
|
327
|
+
|
328
|
+
return k_IsArc_Res_YES;
|
329
|
+
}
|
330
|
+
}
|
331
|
+
|
124
332
|
static HRESULT ReadString(const Byte *p, unsigned &size, AString &res)
|
125
333
|
{
|
126
|
-
|
127
|
-
for (unsigned i = 0; i <
|
334
|
+
unsigned num = size;
|
335
|
+
for (unsigned i = 0; i < num;)
|
128
336
|
{
|
129
|
-
|
130
|
-
if (c == 0)
|
337
|
+
if (p[i++] == 0)
|
131
338
|
{
|
132
339
|
size = i;
|
133
|
-
res =
|
340
|
+
res = (const char *)p;
|
134
341
|
return S_OK;
|
135
342
|
}
|
136
|
-
s += c;
|
137
343
|
}
|
138
344
|
return S_FALSE;
|
139
345
|
}
|
140
346
|
|
141
|
-
HRESULT
|
347
|
+
HRESULT CArcHeader::Parse(const Byte *p, unsigned size)
|
142
348
|
{
|
143
|
-
|
144
|
-
|
145
|
-
Byte firstHeaderSize = p[0];
|
146
|
-
if (firstHeaderSize > size)
|
349
|
+
Byte headerSize = p[0];
|
350
|
+
if (headerSize < kBlockSizeMin || headerSize > size)
|
147
351
|
return S_FALSE;
|
148
352
|
// ArchiverVersion = p[1];
|
149
353
|
// ExtractVersion = p[2];
|
150
354
|
HostOS = p[3];
|
151
355
|
// Flags = p[4];
|
152
356
|
// SecuryVersion = p[5];
|
153
|
-
if (p[6] !=
|
357
|
+
if (p[6] != NFileType::kArchiveHeader)
|
154
358
|
return S_FALSE;
|
155
359
|
// Reserved = p[7];
|
156
360
|
CTime = Get32(p + 8);
|
157
361
|
MTime = Get32(p + 12);
|
158
|
-
ArchiveSize = Get32(p + 16);
|
159
|
-
//
|
362
|
+
ArchiveSize = Get32(p + 16); // it can be zero. (currently used only for secured archives)
|
363
|
+
// SecurPos = Get32(p + 20);
|
160
364
|
// UInt16 filespecPositionInFilename = Get16(p + 24);
|
161
|
-
|
365
|
+
SecurSize = Get16(p + 26);
|
162
366
|
// EncryptionVersion = p[28];
|
163
367
|
// LastChapter = p[29];
|
164
|
-
unsigned pos =
|
368
|
+
unsigned pos = headerSize;
|
165
369
|
unsigned size1 = size - pos;
|
166
370
|
RINOK(ReadString(p + pos, size1, Name));
|
167
371
|
pos += size1;
|
@@ -189,32 +393,30 @@ struct CItem
|
|
189
393
|
Byte Method;
|
190
394
|
Byte FileType;
|
191
395
|
|
192
|
-
// UInt16
|
396
|
+
// UInt16 FilespecPosInFilename;
|
193
397
|
UInt16 FileAccessMode;
|
194
398
|
// Byte FirstChapter;
|
195
399
|
// Byte LastChapter;
|
196
400
|
|
197
401
|
UInt64 DataPosition;
|
198
402
|
|
199
|
-
bool IsEncrypted() const { return (Flags &
|
200
|
-
bool IsDir() const { return (FileType ==
|
201
|
-
bool IsSplitAfter() const { return (Flags &
|
202
|
-
bool IsSplitBefore() const { return (Flags &
|
203
|
-
UInt32
|
403
|
+
bool IsEncrypted() const { return (Flags & NFlags::kGarbled) != 0; }
|
404
|
+
bool IsDir() const { return (FileType == NFileType::kDirectory); }
|
405
|
+
bool IsSplitAfter() const { return (Flags & NFlags::kVolume) != 0; }
|
406
|
+
bool IsSplitBefore() const { return (Flags & NFlags::kExtFile) != 0; }
|
407
|
+
UInt32 GetWinAttrib() const
|
204
408
|
{
|
205
|
-
UInt32
|
206
|
-
switch(HostOS)
|
409
|
+
UInt32 atrrib = 0;
|
410
|
+
switch (HostOS)
|
207
411
|
{
|
208
|
-
case
|
209
|
-
case
|
210
|
-
|
412
|
+
case NHostOS::kMSDOS:
|
413
|
+
case NHostOS::kWIN95:
|
414
|
+
atrrib = FileAccessMode;
|
211
415
|
break;
|
212
|
-
default:
|
213
|
-
winAtrributes = 0;
|
214
416
|
}
|
215
417
|
if (IsDir())
|
216
|
-
|
217
|
-
return
|
418
|
+
atrrib |= FILE_ATTRIBUTE_DIRECTORY;
|
419
|
+
return atrrib;
|
218
420
|
}
|
219
421
|
|
220
422
|
HRESULT Parse(const Byte *p, unsigned size);
|
@@ -222,11 +424,9 @@ struct CItem
|
|
222
424
|
|
223
425
|
HRESULT CItem::Parse(const Byte *p, unsigned size)
|
224
426
|
{
|
225
|
-
|
427
|
+
Byte headerSize = p[0];
|
428
|
+
if (headerSize < kBlockSizeMin || headerSize > size)
|
226
429
|
return S_FALSE;
|
227
|
-
|
228
|
-
Byte firstHeaderSize = p[0];
|
229
|
-
|
230
430
|
Version = p[1];
|
231
431
|
ExtractVersion = p[2];
|
232
432
|
HostOS = p[3];
|
@@ -238,16 +438,16 @@ HRESULT CItem::Parse(const Byte *p, unsigned size)
|
|
238
438
|
PackSize = Get32(p + 12);
|
239
439
|
Size = Get32(p + 16);
|
240
440
|
FileCRC = Get32(p + 20);
|
241
|
-
//
|
441
|
+
// FilespecPosInFilename = Get16(p + 24);
|
242
442
|
FileAccessMode = Get16(p + 26);
|
243
443
|
// FirstChapter = p[28];
|
244
444
|
// FirstChapter = p[29];
|
245
445
|
|
246
446
|
SplitPos = 0;
|
247
|
-
if (IsSplitBefore() &&
|
447
|
+
if (IsSplitBefore() && headerSize >= 34)
|
248
448
|
SplitPos = Get32(p + 30);
|
249
449
|
|
250
|
-
unsigned pos =
|
450
|
+
unsigned pos = headerSize;
|
251
451
|
unsigned size1 = size - pos;
|
252
452
|
RINOK(ReadString(p + pos, size1, Name));
|
253
453
|
pos += size1;
|
@@ -258,180 +458,121 @@ HRESULT CItem::Parse(const Byte *p, unsigned size)
|
|
258
458
|
return S_OK;
|
259
459
|
}
|
260
460
|
|
261
|
-
|
461
|
+
enum EErrorType
|
262
462
|
{
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
kCRCError,
|
267
|
-
kIncorrectArchive
|
268
|
-
}
|
269
|
-
Cause;
|
270
|
-
CInArchiveException(CCauseType cause): Cause(cause) {};
|
463
|
+
k_ErrorType_OK,
|
464
|
+
k_ErrorType_Corrupted,
|
465
|
+
k_ErrorType_UnexpectedEnd,
|
271
466
|
};
|
272
467
|
|
273
|
-
class
|
468
|
+
class CArc
|
274
469
|
{
|
275
|
-
UInt32 _blockSize;
|
276
|
-
Byte _block[kBlockSizeMax + 4];
|
277
|
-
|
278
|
-
HRESULT ReadBlock(bool &filled);
|
279
|
-
HRESULT ReadSignatureAndBlock(bool &filled);
|
280
|
-
HRESULT SkipExtendedHeaders();
|
281
|
-
|
282
|
-
HRESULT SafeReadBytes(void *data, UInt32 size);
|
283
|
-
|
284
470
|
public:
|
285
|
-
|
286
|
-
|
471
|
+
UInt64 Processed;
|
472
|
+
EErrorType Error;
|
473
|
+
bool IsArc;
|
287
474
|
IInStream *Stream;
|
288
475
|
IArchiveOpenCallback *Callback;
|
289
476
|
UInt64 NumFiles;
|
290
|
-
|
291
|
-
|
292
|
-
HRESULT Open(const UInt64 *searchHeaderSizeLimit);
|
293
|
-
HRESULT GetNextItem(bool &filled, CItem &item);
|
294
|
-
};
|
477
|
+
CArcHeader Header;
|
295
478
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
return false;
|
300
|
-
UInt32 blockSize = Get16(p + 2);
|
301
|
-
p += 4;
|
302
|
-
if (p[6] != NFileHeader::NFileType::kArchiveHeader ||
|
303
|
-
p[0] > blockSize ||
|
304
|
-
maxSize < 2 + 2 + blockSize + 4 ||
|
305
|
-
blockSize < kBlockSizeMin || blockSize > kBlockSizeMax ||
|
306
|
-
p[28] > 8) // EncryptionVersion
|
307
|
-
return false;
|
308
|
-
// return (Get32(p + blockSize) == CrcCalc(p, blockSize));
|
309
|
-
return true;
|
310
|
-
}
|
311
|
-
|
312
|
-
static HRESULT FindAndReadMarker(ISequentialInStream *stream, const UInt64 *searchHeaderSizeLimit, UInt64 &position)
|
313
|
-
{
|
314
|
-
position = 0;
|
315
|
-
|
316
|
-
const int kMarkerSizeMin = 2 + 2 + kBlockSizeMin + 4;
|
317
|
-
const int kMarkerSizeMax = 2 + 2 + kBlockSizeMax + 4;
|
318
|
-
|
319
|
-
CByteBuffer byteBuffer;
|
320
|
-
const UInt32 kBufSize = 1 << 16;
|
321
|
-
byteBuffer.SetCapacity(kBufSize);
|
322
|
-
Byte *buf = byteBuffer;
|
323
|
-
|
324
|
-
size_t processedSize = kMarkerSizeMax;
|
325
|
-
RINOK(ReadStream(stream, buf, &processedSize));
|
326
|
-
if (processedSize < kMarkerSizeMin)
|
327
|
-
return S_FALSE;
|
328
|
-
if (TestMarkerCandidate(buf, (unsigned)processedSize))
|
329
|
-
return S_OK;
|
330
|
-
|
331
|
-
UInt32 numBytesPrev = (UInt32)processedSize - 1;
|
332
|
-
memmove(buf, buf + 1, numBytesPrev);
|
333
|
-
UInt64 curTestPos = 1;
|
334
|
-
for (;;)
|
479
|
+
HRESULT Open();
|
480
|
+
HRESULT GetNextItem(CItem &item, bool &filled);
|
481
|
+
void Close()
|
335
482
|
{
|
336
|
-
|
337
|
-
|
338
|
-
return S_FALSE;
|
339
|
-
processedSize = kBufSize - numBytesPrev;
|
340
|
-
RINOK(ReadStream(stream, buf + numBytesPrev, &processedSize));
|
341
|
-
UInt32 numBytesInBuffer = numBytesPrev + (UInt32)processedSize;
|
342
|
-
if (numBytesInBuffer < kMarkerSizeMin)
|
343
|
-
return S_FALSE;
|
344
|
-
UInt32 numTests = numBytesInBuffer - kMarkerSizeMin + 1;
|
345
|
-
UInt32 pos;
|
346
|
-
for (pos = 0; pos < numTests; pos++)
|
347
|
-
{
|
348
|
-
for (; buf[pos] != NSignature::kSig0 && pos < numTests; pos++);
|
349
|
-
if (pos == numTests)
|
350
|
-
break;
|
351
|
-
if (TestMarkerCandidate(buf + pos, numBytesInBuffer - pos))
|
352
|
-
{
|
353
|
-
position = curTestPos + pos;
|
354
|
-
return S_OK;
|
355
|
-
}
|
356
|
-
}
|
357
|
-
curTestPos += pos;
|
358
|
-
numBytesPrev = numBytesInBuffer - numTests;
|
359
|
-
memmove(buf, buf + numTests, numBytesPrev);
|
483
|
+
IsArc = false;
|
484
|
+
Error = k_ErrorType_OK;
|
360
485
|
}
|
361
|
-
|
486
|
+
private:
|
487
|
+
UInt32 _blockSize;
|
488
|
+
Byte _block[kBlockSizeMax + 4];
|
489
|
+
|
490
|
+
HRESULT ReadBlock(bool &filled, bool readSignature);
|
491
|
+
HRESULT SkipExtendedHeaders();
|
492
|
+
HRESULT Read(void *data, size_t *size);
|
493
|
+
};
|
362
494
|
|
363
|
-
HRESULT
|
495
|
+
HRESULT CArc::Read(void *data, size_t *size)
|
364
496
|
{
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
throw CInArchiveException(CInArchiveException::kUnexpectedEndOfArchive);
|
369
|
-
return S_OK;
|
497
|
+
HRESULT res = ReadStream(Stream, data, size);
|
498
|
+
Processed += *size;
|
499
|
+
return res;
|
370
500
|
}
|
371
501
|
|
372
|
-
|
502
|
+
#define READ_STREAM(_dest_, _size_) \
|
503
|
+
{ size_t _processed_ = (_size_); RINOK(Read(_dest_, &_processed_)); \
|
504
|
+
if (_processed_ != (_size_)) { Error = k_ErrorType_UnexpectedEnd; return S_OK; } }
|
505
|
+
|
506
|
+
HRESULT CArc::ReadBlock(bool &filled, bool readSignature)
|
373
507
|
{
|
508
|
+
Error = k_ErrorType_OK;
|
374
509
|
filled = false;
|
375
|
-
Byte buf[
|
376
|
-
|
377
|
-
|
378
|
-
if (
|
510
|
+
Byte buf[4];
|
511
|
+
unsigned signSize = readSignature ? 2 : 0;
|
512
|
+
READ_STREAM(buf, signSize + 2)
|
513
|
+
if (readSignature)
|
514
|
+
if (buf[0] != kSig0 || buf[1] != kSig1)
|
515
|
+
{
|
516
|
+
Error = k_ErrorType_Corrupted;
|
517
|
+
return S_OK;
|
518
|
+
}
|
519
|
+
_blockSize = Get16(buf + signSize);
|
520
|
+
if (_blockSize == 0) // end of archive
|
521
|
+
return S_OK;
|
522
|
+
if (_blockSize < kBlockSizeMin ||
|
523
|
+
_blockSize > kBlockSizeMax)
|
524
|
+
{
|
525
|
+
Error = k_ErrorType_Corrupted;
|
379
526
|
return S_OK;
|
380
|
-
|
381
|
-
|
382
|
-
RINOK(SafeReadBytes(_block, _blockSize + 4));
|
383
|
-
NumBytes += _blockSize + 6;
|
527
|
+
}
|
528
|
+
READ_STREAM(_block, _blockSize + 4);
|
384
529
|
if (Get32(_block + _blockSize) != CrcCalc(_block, _blockSize))
|
385
|
-
|
530
|
+
{
|
531
|
+
Error = k_ErrorType_Corrupted;
|
532
|
+
return S_OK;
|
533
|
+
}
|
386
534
|
filled = true;
|
387
535
|
return S_OK;
|
388
536
|
}
|
389
537
|
|
390
|
-
HRESULT
|
391
|
-
{
|
392
|
-
Byte id[2];
|
393
|
-
RINOK(SafeReadBytes(id, 2));
|
394
|
-
if (id[0] != NSignature::kSig0 || id[1] != NSignature::kSig1)
|
395
|
-
throw CInArchiveException(CInArchiveException::kIncorrectArchive);
|
396
|
-
return ReadBlock(filled);
|
397
|
-
}
|
398
|
-
|
399
|
-
HRESULT CInArchive::SkipExtendedHeaders()
|
538
|
+
HRESULT CArc::SkipExtendedHeaders()
|
400
539
|
{
|
401
540
|
for (UInt32 i = 0;; i++)
|
402
541
|
{
|
403
542
|
bool filled;
|
404
|
-
RINOK(ReadBlock(filled));
|
543
|
+
RINOK(ReadBlock(filled, false));
|
405
544
|
if (!filled)
|
406
545
|
return S_OK;
|
407
546
|
if (Callback && (i & 0xFF) == 0)
|
408
|
-
RINOK(Callback->SetCompleted(&NumFiles, &
|
547
|
+
RINOK(Callback->SetCompleted(&NumFiles, &Processed));
|
409
548
|
}
|
410
549
|
}
|
411
550
|
|
412
|
-
HRESULT
|
551
|
+
HRESULT CArc::Open()
|
413
552
|
{
|
414
|
-
UInt64 position = 0;
|
415
|
-
RINOK(FindAndReadMarker(Stream, searchHeaderSizeLimit, position));
|
416
|
-
RINOK(Stream->Seek(position, STREAM_SEEK_SET, NULL));
|
417
553
|
bool filled;
|
418
|
-
RINOK(
|
554
|
+
RINOK(ReadBlock(filled, true));
|
419
555
|
if (!filled)
|
420
556
|
return S_FALSE;
|
421
557
|
RINOK(Header.Parse(_block, _blockSize));
|
558
|
+
IsArc = true;
|
422
559
|
return SkipExtendedHeaders();
|
423
560
|
}
|
424
561
|
|
425
|
-
HRESULT
|
562
|
+
HRESULT CArc::GetNextItem(CItem &item, bool &filled)
|
426
563
|
{
|
427
|
-
RINOK(
|
564
|
+
RINOK(ReadBlock(filled, true));
|
428
565
|
if (!filled)
|
429
566
|
return S_OK;
|
430
567
|
filled = false;
|
431
|
-
|
568
|
+
if (item.Parse(_block, _blockSize) != S_OK)
|
569
|
+
{
|
570
|
+
Error = k_ErrorType_Corrupted;
|
571
|
+
return S_OK;
|
572
|
+
}
|
432
573
|
/*
|
433
574
|
UInt32 extraData;
|
434
|
-
if ((header.Flags &
|
575
|
+
if ((header.Flags & NFlags::kExtFile) != 0)
|
435
576
|
extraData = GetUi32(_block + pos);
|
436
577
|
*/
|
437
578
|
|
@@ -444,67 +585,47 @@ class CHandler:
|
|
444
585
|
public IInArchive,
|
445
586
|
public CMyUnknownImp
|
446
587
|
{
|
588
|
+
CObjectVector<CItem> _items;
|
589
|
+
CMyComPtr<IInStream> _stream;
|
590
|
+
UInt64 _phySize;
|
591
|
+
CArc _arc;
|
447
592
|
public:
|
448
593
|
MY_UNKNOWN_IMP1(IInArchive)
|
449
594
|
|
450
595
|
INTERFACE_IInArchive(;)
|
451
596
|
|
452
|
-
HRESULT Open2(IInStream *inStream,
|
453
|
-
IArchiveOpenCallback *callback);
|
454
|
-
private:
|
455
|
-
CInArchive _archive;
|
456
|
-
CObjectVector<CItem> _items;
|
457
|
-
CMyComPtr<IInStream> _stream;
|
458
|
-
};
|
459
|
-
|
460
|
-
const wchar_t *kHostOS[] =
|
461
|
-
{
|
462
|
-
L"MSDOS",
|
463
|
-
L"PRIMOS",
|
464
|
-
L"UNIX",
|
465
|
-
L"AMIGA",
|
466
|
-
L"MAC",
|
467
|
-
L"OS/2",
|
468
|
-
L"APPLE GS",
|
469
|
-
L"ATARI ST",
|
470
|
-
L"NEXT",
|
471
|
-
L"VAX VMS",
|
472
|
-
L"WIN95"
|
597
|
+
HRESULT Open2(IInStream *inStream, IArchiveOpenCallback *callback);
|
473
598
|
};
|
474
599
|
|
475
|
-
const
|
476
|
-
|
477
|
-
const int kNumHostOSes = sizeof(kHostOS) / sizeof(kHostOS[0]);
|
478
|
-
|
479
|
-
STATPROPSTG kArcProps[] =
|
600
|
+
static const Byte kArcProps[] =
|
480
601
|
{
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
602
|
+
kpidName,
|
603
|
+
kpidCTime,
|
604
|
+
kpidMTime,
|
605
|
+
kpidHostOS,
|
606
|
+
kpidComment
|
486
607
|
};
|
487
608
|
|
488
|
-
|
489
|
-
{
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
609
|
+
static const Byte kProps[] =
|
610
|
+
{
|
611
|
+
kpidPath,
|
612
|
+
kpidIsDir,
|
613
|
+
kpidSize,
|
614
|
+
kpidPosition,
|
615
|
+
kpidPackSize,
|
616
|
+
kpidMTime,
|
617
|
+
kpidAttrib,
|
618
|
+
kpidEncrypted,
|
619
|
+
kpidCRC,
|
620
|
+
kpidMethod,
|
621
|
+
kpidHostOS,
|
622
|
+
kpidComment
|
502
623
|
};
|
503
624
|
|
504
625
|
IMP_IInArchive_Props
|
505
626
|
IMP_IInArchive_ArcProps
|
506
627
|
|
507
|
-
static void SetTime(UInt32 dosTime,
|
628
|
+
static void SetTime(UInt32 dosTime, NCOM::CPropVariant &prop)
|
508
629
|
{
|
509
630
|
if (dosTime == 0)
|
510
631
|
return;
|
@@ -519,12 +640,21 @@ static void SetTime(UInt32 dosTime, NWindows::NCOM::CPropVariant &prop)
|
|
519
640
|
prop = utc;
|
520
641
|
}
|
521
642
|
|
522
|
-
static void SetHostOS(Byte hostOS,
|
643
|
+
static void SetHostOS(Byte hostOS, NCOM::CPropVariant &prop)
|
523
644
|
{
|
524
|
-
|
645
|
+
char temp[16];
|
646
|
+
const char *s = NULL;
|
647
|
+
if (hostOS < ARRAY_SIZE(kHostOS))
|
648
|
+
s = kHostOS[hostOS];
|
649
|
+
else
|
650
|
+
{
|
651
|
+
ConvertUInt32ToString(hostOS, temp);
|
652
|
+
s = temp;
|
653
|
+
}
|
654
|
+
prop = s;
|
525
655
|
}
|
526
656
|
|
527
|
-
static void SetUnicodeString(const AString &s,
|
657
|
+
static void SetUnicodeString(const AString &s, NCOM::CPropVariant &prop)
|
528
658
|
{
|
529
659
|
if (!s.IsEmpty())
|
530
660
|
prop = MultiByteToUnicodeString(s, CP_OEMCP);
|
@@ -533,14 +663,27 @@ static void SetUnicodeString(const AString &s, NWindows::NCOM::CPropVariant &pro
|
|
533
663
|
STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
|
534
664
|
{
|
535
665
|
COM_TRY_BEGIN
|
536
|
-
|
537
|
-
switch(propID)
|
666
|
+
NCOM::CPropVariant prop;
|
667
|
+
switch (propID)
|
538
668
|
{
|
539
|
-
case
|
540
|
-
case
|
541
|
-
case
|
542
|
-
case
|
543
|
-
case
|
669
|
+
case kpidPhySize: prop = _phySize; break;
|
670
|
+
case kpidName: SetUnicodeString(_arc.Header.Name, prop); break;
|
671
|
+
case kpidCTime: SetTime(_arc.Header.CTime, prop); break;
|
672
|
+
case kpidMTime: SetTime(_arc.Header.MTime, prop); break;
|
673
|
+
case kpidHostOS: SetHostOS(_arc.Header.HostOS, prop); break;
|
674
|
+
case kpidComment: SetUnicodeString(_arc.Header.Comment, prop); break;
|
675
|
+
case kpidErrorFlags:
|
676
|
+
{
|
677
|
+
UInt32 v = 0;
|
678
|
+
if (!_arc.IsArc) v |= kpv_ErrorFlags_IsNotArc;
|
679
|
+
switch (_arc.Error)
|
680
|
+
{
|
681
|
+
case k_ErrorType_UnexpectedEnd: v |= kpv_ErrorFlags_UnexpectedEnd; break;
|
682
|
+
case k_ErrorType_Corrupted: v |= kpv_ErrorFlags_HeadersError; break;
|
683
|
+
}
|
684
|
+
prop = v;
|
685
|
+
break;
|
686
|
+
}
|
544
687
|
}
|
545
688
|
prop.Detach(value);
|
546
689
|
return S_OK;
|
@@ -556,16 +699,16 @@ STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
|
|
556
699
|
STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)
|
557
700
|
{
|
558
701
|
COM_TRY_BEGIN
|
559
|
-
|
702
|
+
NCOM::CPropVariant prop;
|
560
703
|
const CItem &item = _items[index];
|
561
|
-
switch(propID)
|
704
|
+
switch (propID)
|
562
705
|
{
|
563
706
|
case kpidPath: prop = NItemName::GetOSName(MultiByteToUnicodeString(item.Name, CP_OEMCP)); break;
|
564
707
|
case kpidIsDir: prop = item.IsDir(); break;
|
565
708
|
case kpidSize: prop = item.Size; break;
|
566
709
|
case kpidPackSize: prop = item.PackSize; break;
|
567
710
|
case kpidPosition: if (item.IsSplitBefore() || item.IsSplitAfter()) prop = (UInt64)item.SplitPos; break;
|
568
|
-
case kpidAttrib: prop = item.
|
711
|
+
case kpidAttrib: prop = item.GetWinAttrib(); break;
|
569
712
|
case kpidEncrypted: prop = item.IsEncrypted(); break;
|
570
713
|
case kpidCRC: prop = item.FileCRC; break;
|
571
714
|
case kpidMethod: prop = item.Method; break;
|
@@ -578,75 +721,88 @@ STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *val
|
|
578
721
|
COM_TRY_END
|
579
722
|
}
|
580
723
|
|
581
|
-
HRESULT CHandler::Open2(IInStream *inStream,
|
582
|
-
IArchiveOpenCallback *callback)
|
724
|
+
HRESULT CHandler::Open2(IInStream *inStream, IArchiveOpenCallback *callback)
|
583
725
|
{
|
584
726
|
Close();
|
585
727
|
|
586
728
|
UInt64 endPos = 0;
|
587
|
-
|
588
|
-
|
589
|
-
RINOK(inStream->Seek(0, STREAM_SEEK_END, &endPos));
|
590
|
-
RINOK(inStream->Seek(0, STREAM_SEEK_SET, NULL));
|
591
|
-
}
|
729
|
+
RINOK(inStream->Seek(0, STREAM_SEEK_END, &endPos));
|
730
|
+
RINOK(inStream->Seek(0, STREAM_SEEK_SET, NULL));
|
592
731
|
|
593
|
-
|
594
|
-
|
595
|
-
|
732
|
+
_arc.Stream = inStream;
|
733
|
+
_arc.Callback = callback;
|
734
|
+
_arc.NumFiles = 0;
|
735
|
+
_arc.Processed = 0;
|
736
|
+
|
737
|
+
RINOK(_arc.Open());
|
738
|
+
|
739
|
+
_phySize = _arc.Processed;
|
740
|
+
if (_arc.Header.ArchiveSize != 0)
|
741
|
+
_phySize = (UInt64)_arc.Header.ArchiveSize + _arc.Header.SecurSize;
|
596
742
|
|
597
|
-
RINOK(_archive.Open(maxCheckStartPosition));
|
598
|
-
if (callback != NULL)
|
599
|
-
RINOK(callback->SetTotal(NULL, &endPos));
|
600
743
|
for (;;)
|
601
744
|
{
|
602
745
|
CItem item;
|
603
746
|
bool filled;
|
604
747
|
|
748
|
+
_arc.Error = k_ErrorType_OK;
|
749
|
+
RINOK(_arc.GetNextItem(item, filled));
|
605
750
|
|
606
|
-
|
607
|
-
|
608
|
-
RINOK(inStream->Seek(0, STREAM_SEEK_CUR, &item.DataPosition));
|
751
|
+
if (_arc.Error != k_ErrorType_OK)
|
752
|
+
break;
|
609
753
|
|
610
754
|
if (!filled)
|
755
|
+
{
|
756
|
+
if (_arc.Error == k_ErrorType_OK)
|
757
|
+
if (_arc.Header.ArchiveSize == 0)
|
758
|
+
_phySize = _arc.Processed;
|
611
759
|
break;
|
760
|
+
}
|
761
|
+
item.DataPosition = _arc.Processed;
|
612
762
|
_items.Add(item);
|
613
763
|
|
614
|
-
|
615
|
-
|
764
|
+
UInt64 pos = item.DataPosition + item.PackSize;
|
765
|
+
if (_arc.Header.ArchiveSize == 0)
|
766
|
+
_phySize = pos;
|
767
|
+
if (pos > endPos)
|
768
|
+
{
|
769
|
+
_arc.Error = k_ErrorType_UnexpectedEnd;
|
770
|
+
break;
|
771
|
+
}
|
616
772
|
|
617
|
-
|
618
|
-
|
773
|
+
RINOK(inStream->Seek(pos, STREAM_SEEK_SET, NULL));
|
774
|
+
_arc.NumFiles = _items.Size();
|
775
|
+
_arc.Processed = pos;
|
619
776
|
|
620
|
-
if (callback
|
777
|
+
if (callback && (_items.Size() & 0xFF) == 0)
|
621
778
|
{
|
622
|
-
RINOK(callback->SetCompleted(&
|
779
|
+
RINOK(callback->SetCompleted(&_arc.NumFiles, &_arc.Processed));
|
623
780
|
}
|
624
781
|
}
|
625
782
|
return S_OK;
|
626
783
|
}
|
627
784
|
|
628
785
|
STDMETHODIMP CHandler::Open(IInStream *inStream,
|
629
|
-
const UInt64 *maxCheckStartPosition
|
786
|
+
const UInt64 * /* maxCheckStartPosition */, IArchiveOpenCallback *callback)
|
630
787
|
{
|
631
788
|
COM_TRY_BEGIN
|
632
789
|
HRESULT res;
|
633
|
-
try
|
634
790
|
{
|
635
|
-
res = Open2(inStream,
|
791
|
+
res = Open2(inStream, callback);
|
636
792
|
if (res == S_OK)
|
637
793
|
{
|
638
794
|
_stream = inStream;
|
639
795
|
return S_OK;
|
640
796
|
}
|
641
797
|
}
|
642
|
-
catch(const CInArchiveException &) { res = S_FALSE; }
|
643
|
-
Close();
|
644
798
|
return res;
|
645
799
|
COM_TRY_END
|
646
800
|
}
|
647
801
|
|
648
802
|
STDMETHODIMP CHandler::Close()
|
649
803
|
{
|
804
|
+
_arc.Close();
|
805
|
+
_phySize = 0;
|
650
806
|
_items.Clear();
|
651
807
|
_stream.Release();
|
652
808
|
return S_OK;
|
@@ -657,7 +813,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
657
813
|
{
|
658
814
|
COM_TRY_BEGIN
|
659
815
|
UInt64 totalUnpacked = 0, totalPacked = 0;
|
660
|
-
bool allFilesMode = (numItems == (UInt32)-1);
|
816
|
+
bool allFilesMode = (numItems == (UInt32)(Int32)-1);
|
661
817
|
if (allFilesMode)
|
662
818
|
numItems = _items.Size();
|
663
819
|
if (numItems == 0)
|
@@ -667,15 +823,19 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
667
823
|
{
|
668
824
|
const CItem &item = _items[allFilesMode ? i : indices[i]];
|
669
825
|
totalUnpacked += item.Size;
|
670
|
-
totalPacked += item.PackSize;
|
826
|
+
// totalPacked += item.PackSize;
|
671
827
|
}
|
672
828
|
extractCallback->SetTotal(totalUnpacked);
|
673
829
|
|
674
830
|
totalUnpacked = totalPacked = 0;
|
675
831
|
UInt64 curUnpacked, curPacked;
|
676
832
|
|
677
|
-
|
678
|
-
CMyComPtr<ICompressCoder>
|
833
|
+
NCompress::NLzh::NDecoder::CCoder *lzhDecoderSpec = NULL;
|
834
|
+
CMyComPtr<ICompressCoder> lzhDecoder;
|
835
|
+
|
836
|
+
NCompress::NArj::NDecoder::CCoder *arjDecoderSpec = NULL;
|
837
|
+
CMyComPtr<ICompressCoder> arjDecoder;
|
838
|
+
|
679
839
|
NCompress::CCopyCoder *copyCoderSpec = new NCompress::CCopyCoder();
|
680
840
|
CMyComPtr<ICompressCoder> copyCoder = copyCoderSpec;
|
681
841
|
|
@@ -736,38 +896,53 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
736
896
|
Int32 opRes = NExtract::NOperationResult::kOK;
|
737
897
|
|
738
898
|
if (item.IsEncrypted())
|
739
|
-
opRes = NExtract::NOperationResult::
|
899
|
+
opRes = NExtract::NOperationResult::kUnsupportedMethod;
|
740
900
|
else
|
741
901
|
{
|
742
|
-
switch(item.Method)
|
902
|
+
switch (item.Method)
|
743
903
|
{
|
744
|
-
case
|
904
|
+
case NCompressionMethod::kStored:
|
745
905
|
{
|
746
906
|
result = copyCoder->Code(inStream, outStream, NULL, NULL, progress);
|
747
907
|
if (result == S_OK && copyCoderSpec->TotalSize != item.PackSize)
|
748
908
|
result = S_FALSE;
|
749
909
|
break;
|
750
910
|
}
|
751
|
-
case
|
752
|
-
case
|
753
|
-
case
|
911
|
+
case NCompressionMethod::kCompressed1a:
|
912
|
+
case NCompressionMethod::kCompressed1b:
|
913
|
+
case NCompressionMethod::kCompressed1c:
|
754
914
|
{
|
755
|
-
if (!
|
756
|
-
|
757
|
-
|
915
|
+
if (!lzhDecoder)
|
916
|
+
{
|
917
|
+
lzhDecoderSpec = new NCompress::NLzh::NDecoder::CCoder;
|
918
|
+
lzhDecoder = lzhDecoderSpec;
|
919
|
+
}
|
920
|
+
lzhDecoderSpec->FinishMode = true;
|
921
|
+
const UInt32 kHistorySize = 26624;
|
922
|
+
lzhDecoderSpec->SetDictSize(kHistorySize);
|
923
|
+
result = lzhDecoder->Code(inStream, outStream, NULL, &curUnpacked, progress);
|
924
|
+
if (result == S_OK && lzhDecoderSpec->GetInputProcessedSize() != item.PackSize)
|
925
|
+
result = S_FALSE;
|
758
926
|
break;
|
759
927
|
}
|
760
|
-
case
|
928
|
+
case NCompressionMethod::kCompressed2:
|
761
929
|
{
|
762
|
-
if (!
|
763
|
-
|
764
|
-
|
930
|
+
if (!arjDecoder)
|
931
|
+
{
|
932
|
+
arjDecoderSpec = new NCompress::NArj::NDecoder::CCoder;
|
933
|
+
arjDecoder = arjDecoderSpec;
|
934
|
+
}
|
935
|
+
arjDecoderSpec->FinishMode = true;
|
936
|
+
result = arjDecoder->Code(inStream, outStream, NULL, &curUnpacked, progress);
|
937
|
+
if (result == S_OK && arjDecoderSpec->GetInputProcessedSize() != item.PackSize)
|
938
|
+
result = S_FALSE;
|
765
939
|
break;
|
766
940
|
}
|
767
941
|
default:
|
768
|
-
opRes = NExtract::NOperationResult::
|
942
|
+
opRes = NExtract::NOperationResult::kUnsupportedMethod;
|
769
943
|
}
|
770
944
|
}
|
945
|
+
|
771
946
|
if (opRes == NExtract::NOperationResult::kOK)
|
772
947
|
{
|
773
948
|
if (result == S_FALSE)
|
@@ -780,19 +955,23 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
780
955
|
NExtract::NOperationResult::kCRCError;
|
781
956
|
}
|
782
957
|
}
|
958
|
+
|
783
959
|
outStream.Release();
|
784
960
|
RINOK(extractCallback->SetOperationResult(opRes));
|
785
961
|
}
|
786
962
|
}
|
963
|
+
|
787
964
|
return S_OK;
|
788
965
|
COM_TRY_END
|
789
966
|
}
|
790
967
|
|
791
|
-
static
|
792
|
-
|
793
|
-
static CArcInfo g_ArcInfo =
|
794
|
-
{ L"Arj", L"arj", 0, 4, { 0x60, 0xEA }, 2, false, CreateArc, 0 };
|
968
|
+
static const Byte k_Signature[] = { kSig0, kSig1 };
|
795
969
|
|
796
|
-
|
970
|
+
REGISTER_ARC_I(
|
971
|
+
"Arj", "arj", 0, 4,
|
972
|
+
k_Signature,
|
973
|
+
0,
|
974
|
+
0,
|
975
|
+
IsArc_Arj)
|
797
976
|
|
798
977
|
}}
|