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
@@ -2,13 +2,16 @@
|
|
2
2
|
|
3
3
|
#include "StdAfx.h"
|
4
4
|
|
5
|
+
// #include <stdio.h>
|
6
|
+
|
5
7
|
#include "../../../C/CpuArch.h"
|
6
8
|
|
7
|
-
#include "Common/ComTry.h"
|
8
|
-
#include "Common/
|
9
|
+
#include "../../Common/ComTry.h"
|
10
|
+
#include "../../Common/Defs.h"
|
11
|
+
#include "../../Common/StringConvert.h"
|
9
12
|
|
10
|
-
#include "Windows/PropVariant.h"
|
11
|
-
#include "Windows/
|
13
|
+
#include "../../Windows/PropVariant.h"
|
14
|
+
#include "../../Windows/TimeUtils.h"
|
12
15
|
|
13
16
|
#include "../Common/ProgressUtils.h"
|
14
17
|
#include "../Common/RegisterArc.h"
|
@@ -18,29 +21,35 @@
|
|
18
21
|
#include "../Compress/DeflateDecoder.h"
|
19
22
|
#include "../Compress/DeflateEncoder.h"
|
20
23
|
|
24
|
+
#include "Common/HandlerOut.h"
|
21
25
|
#include "Common/InStreamWithCRC.h"
|
22
26
|
#include "Common/OutStreamWithCRC.h"
|
23
27
|
|
24
|
-
#include "DeflateProps.h"
|
25
|
-
|
26
28
|
#define Get32(p) GetUi32(p)
|
27
29
|
|
28
30
|
using namespace NWindows;
|
29
31
|
|
32
|
+
using namespace NCompress;
|
33
|
+
using namespace NDeflate;
|
34
|
+
|
30
35
|
namespace NArchive {
|
31
36
|
namespace NGz {
|
32
37
|
|
33
|
-
static const
|
38
|
+
static const Byte kSignature_0 = 0x1F;
|
39
|
+
static const Byte kSignature_1 = 0x8B;
|
40
|
+
static const Byte kSignature_2 = 8; // NCompressionMethod::kDeflate
|
41
|
+
|
42
|
+
// Latest versions of gzip program don't write comment field to gz archive.
|
43
|
+
// We also don't write comment field to gz archive.
|
34
44
|
|
35
|
-
namespace NHeader
|
36
|
-
{
|
37
45
|
namespace NFlags
|
38
46
|
{
|
39
|
-
const Byte kIsText
|
40
|
-
const Byte kCrc
|
41
|
-
const Byte kExtra
|
42
|
-
const Byte kName
|
47
|
+
const Byte kIsText = 1 << 0;
|
48
|
+
const Byte kCrc = 1 << 1;
|
49
|
+
const Byte kExtra = 1 << 2;
|
50
|
+
const Byte kName = 1 << 3;
|
43
51
|
const Byte kComment = 1 << 4;
|
52
|
+
const Byte kReserved = 0xE0;
|
44
53
|
}
|
45
54
|
|
46
55
|
namespace NExtraFlags
|
@@ -49,11 +58,6 @@ namespace NHeader
|
|
49
58
|
const Byte kFastest = 4;
|
50
59
|
}
|
51
60
|
|
52
|
-
namespace NCompressionMethod
|
53
|
-
{
|
54
|
-
const Byte kDeflate = 8;
|
55
|
-
}
|
56
|
-
|
57
61
|
namespace NHostOS
|
58
62
|
{
|
59
63
|
enum EEnum
|
@@ -80,30 +84,29 @@ namespace NHeader
|
|
80
84
|
kUnknown = 255
|
81
85
|
};
|
82
86
|
}
|
83
|
-
}
|
84
87
|
|
85
|
-
static const char *kHostOSes[] =
|
88
|
+
static const char * const kHostOSes[] =
|
86
89
|
{
|
87
|
-
|
88
|
-
"AMIGA"
|
89
|
-
"VMS"
|
90
|
-
"Unix"
|
91
|
-
"VM/CMS"
|
92
|
-
"Atari"
|
93
|
-
"HPFS"
|
94
|
-
"Macintosh"
|
95
|
-
"Z-System"
|
96
|
-
"CP/M"
|
97
|
-
"TOPS-20"
|
98
|
-
"NTFS"
|
99
|
-
"SMS/QDOS"
|
100
|
-
"Acorn"
|
101
|
-
"VFAT"
|
102
|
-
"MVS"
|
103
|
-
"BeOS"
|
104
|
-
"Tandem"
|
105
|
-
"OS/400"
|
106
|
-
"OS/X"
|
90
|
+
"FAT"
|
91
|
+
, "AMIGA"
|
92
|
+
, "VMS"
|
93
|
+
, "Unix"
|
94
|
+
, "VM/CMS"
|
95
|
+
, "Atari"
|
96
|
+
, "HPFS"
|
97
|
+
, "Macintosh"
|
98
|
+
, "Z-System"
|
99
|
+
, "CP/M"
|
100
|
+
, "TOPS-20"
|
101
|
+
, "NTFS"
|
102
|
+
, "SMS/QDOS"
|
103
|
+
, "Acorn"
|
104
|
+
, "VFAT"
|
105
|
+
, "MVS"
|
106
|
+
, "BeOS"
|
107
|
+
, "Tandem"
|
108
|
+
, "OS/400"
|
109
|
+
, "OS/X"
|
107
110
|
};
|
108
111
|
|
109
112
|
static const char *kUnknownOS = "Unknown";
|
@@ -112,7 +115,6 @@ class CItem
|
|
112
115
|
{
|
113
116
|
bool TestFlag(Byte flag) const { return (Flags & flag) != 0; }
|
114
117
|
public:
|
115
|
-
Byte Method;
|
116
118
|
Byte Flags;
|
117
119
|
Byte ExtraFlags;
|
118
120
|
Byte HostOS;
|
@@ -124,61 +126,87 @@ public:
|
|
124
126
|
AString Comment;
|
125
127
|
// CByteBuffer Extra;
|
126
128
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
129
|
+
CItem():
|
130
|
+
Flags(0),
|
131
|
+
ExtraFlags(0),
|
132
|
+
HostOS(0),
|
133
|
+
Time(0),
|
134
|
+
Crc(0),
|
135
|
+
Size32(0) {}
|
132
136
|
|
133
137
|
void Clear()
|
134
138
|
{
|
135
139
|
Name.Empty();
|
136
140
|
Comment.Empty();
|
137
|
-
// Extra.
|
141
|
+
// Extra.Free();
|
142
|
+
}
|
143
|
+
|
144
|
+
void CopyMetaPropsFrom(const CItem &a)
|
145
|
+
{
|
146
|
+
Flags = a.Flags;
|
147
|
+
HostOS = a.HostOS;
|
148
|
+
Time = a.Time;
|
149
|
+
Name = a.Name;
|
150
|
+
Comment = a.Comment;
|
151
|
+
// Extra = a.Extra;
|
138
152
|
}
|
139
153
|
|
140
|
-
|
141
|
-
|
154
|
+
void CopyDataPropsFrom(const CItem &a)
|
155
|
+
{
|
156
|
+
ExtraFlags = a.ExtraFlags;
|
157
|
+
Crc = a.Crc;
|
158
|
+
Size32 = a.Size32;
|
159
|
+
}
|
160
|
+
|
161
|
+
// bool IsText() const { return TestFlag(NFlags::kIsText); }
|
162
|
+
bool HeaderCrcIsPresent() const { return TestFlag(NFlags::kCrc); }
|
163
|
+
bool ExtraFieldIsPresent() const { return TestFlag(NFlags::kExtra); }
|
164
|
+
bool NameIsPresent() const { return TestFlag(NFlags::kName); }
|
165
|
+
bool CommentIsPresent() const { return TestFlag(NFlags::kComment); }
|
166
|
+
bool IsSupported() const { return (Flags & NFlags::kReserved) == 0; }
|
167
|
+
|
168
|
+
HRESULT ReadHeader(NDecoder::CCOMCoder *stream);
|
169
|
+
HRESULT ReadFooter1(NDecoder::CCOMCoder *stream);
|
142
170
|
HRESULT ReadFooter2(ISequentialInStream *stream);
|
143
171
|
|
144
172
|
HRESULT WriteHeader(ISequentialOutStream *stream);
|
145
173
|
HRESULT WriteFooter(ISequentialOutStream *stream);
|
146
174
|
};
|
147
175
|
|
148
|
-
static HRESULT ReadBytes(
|
176
|
+
static HRESULT ReadBytes(NDecoder::CCOMCoder *stream, Byte *data, UInt32 size)
|
149
177
|
{
|
150
178
|
for (UInt32 i = 0; i < size; i++)
|
151
|
-
data[i] = stream->
|
179
|
+
data[i] = stream->ReadAlignedByte();
|
152
180
|
return stream->InputEofError() ? S_FALSE : S_OK;
|
153
181
|
}
|
154
182
|
|
155
|
-
static HRESULT SkipBytes(
|
183
|
+
static HRESULT SkipBytes(NDecoder::CCOMCoder *stream, UInt32 size)
|
156
184
|
{
|
157
185
|
for (UInt32 i = 0; i < size; i++)
|
158
|
-
stream->
|
186
|
+
stream->ReadAlignedByte();
|
159
187
|
return stream->InputEofError() ? S_FALSE : S_OK;
|
160
188
|
}
|
161
189
|
|
162
|
-
static HRESULT ReadUInt16(
|
190
|
+
static HRESULT ReadUInt16(NDecoder::CCOMCoder *stream, UInt32 &value /* , UInt32 &crc */)
|
163
191
|
{
|
164
192
|
value = 0;
|
165
193
|
for (int i = 0; i < 2; i++)
|
166
194
|
{
|
167
|
-
Byte b = stream->
|
195
|
+
Byte b = stream->ReadAlignedByte();
|
168
196
|
if (stream->InputEofError())
|
169
197
|
return S_FALSE;
|
170
198
|
// crc = CRC_UPDATE_BYTE(crc, b);
|
171
|
-
value |= (
|
199
|
+
value |= ((UInt32)(b) << (8 * i));
|
172
200
|
}
|
173
201
|
return S_OK;
|
174
202
|
}
|
175
203
|
|
176
|
-
static HRESULT ReadString(
|
204
|
+
static HRESULT ReadString(NDecoder::CCOMCoder *stream, AString &s, size_t limit /* , UInt32 &crc */)
|
177
205
|
{
|
178
206
|
s.Empty();
|
179
|
-
for (
|
207
|
+
for (size_t i = 0; i < limit; i++)
|
180
208
|
{
|
181
|
-
Byte b = stream->
|
209
|
+
Byte b = stream->ReadAlignedByte();
|
182
210
|
if (stream->InputEofError())
|
183
211
|
return S_FALSE;
|
184
212
|
// crc = CRC_UPDATE_BYTE(crc, b);
|
@@ -189,7 +217,135 @@ static HRESULT ReadString(NCompress::NDeflate::NDecoder::CCOMCoder *stream, AStr
|
|
189
217
|
return S_FALSE;
|
190
218
|
}
|
191
219
|
|
192
|
-
|
220
|
+
static UInt32 Is_Deflate(const Byte *p, size_t size)
|
221
|
+
{
|
222
|
+
if (size < 1)
|
223
|
+
return k_IsArc_Res_NEED_MORE;
|
224
|
+
Byte b = *p;
|
225
|
+
p++;
|
226
|
+
size--;
|
227
|
+
unsigned type = ((unsigned)b >> 1) & 3;
|
228
|
+
if (type == 3)
|
229
|
+
return k_IsArc_Res_NO;
|
230
|
+
if (type == 0)
|
231
|
+
{
|
232
|
+
// Stored (uncompreessed data)
|
233
|
+
if ((b >> 3) != 0)
|
234
|
+
return k_IsArc_Res_NO;
|
235
|
+
if (size < 4)
|
236
|
+
return k_IsArc_Res_NEED_MORE;
|
237
|
+
if (GetUi16(p) != (UInt16)~GetUi16(p + 2))
|
238
|
+
return k_IsArc_Res_NO;
|
239
|
+
}
|
240
|
+
else if (type == 2)
|
241
|
+
{
|
242
|
+
// Dynamic Huffman
|
243
|
+
if (size < 1)
|
244
|
+
return k_IsArc_Res_NEED_MORE;
|
245
|
+
if ((*p & 0x1F) + 1 > 30) // numDistLevels
|
246
|
+
return k_IsArc_Res_NO;
|
247
|
+
}
|
248
|
+
return k_IsArc_Res_YES;
|
249
|
+
}
|
250
|
+
|
251
|
+
static unsigned kNameMaxLen = 1 << 12;
|
252
|
+
static unsigned kCommentMaxLen = 1 << 16;
|
253
|
+
|
254
|
+
API_FUNC_static_IsArc IsArc_Gz(const Byte *p, size_t size)
|
255
|
+
{
|
256
|
+
if (size < 10)
|
257
|
+
return k_IsArc_Res_NEED_MORE;
|
258
|
+
if (p[0] != kSignature_0 ||
|
259
|
+
p[1] != kSignature_1 ||
|
260
|
+
p[2] != kSignature_2)
|
261
|
+
return k_IsArc_Res_NO;
|
262
|
+
|
263
|
+
Byte flags = p[3];
|
264
|
+
if ((flags & NFlags::kReserved) != 0)
|
265
|
+
return k_IsArc_Res_NO;
|
266
|
+
|
267
|
+
Byte extraFlags = p[8];
|
268
|
+
// maybe that flag can have another values for some gz archives?
|
269
|
+
if (extraFlags != 0 &&
|
270
|
+
extraFlags != NExtraFlags::kMaximum &&
|
271
|
+
extraFlags != NExtraFlags::kFastest)
|
272
|
+
return k_IsArc_Res_NO;
|
273
|
+
|
274
|
+
size -= 10;
|
275
|
+
p += 10;
|
276
|
+
|
277
|
+
if ((flags & NFlags::kExtra) != 0)
|
278
|
+
{
|
279
|
+
if (size < 2)
|
280
|
+
return k_IsArc_Res_NEED_MORE;
|
281
|
+
unsigned xlen = GetUi16(p);
|
282
|
+
size -= 2;
|
283
|
+
p += 2;
|
284
|
+
while (xlen != 0)
|
285
|
+
{
|
286
|
+
if (xlen < 4)
|
287
|
+
return k_IsArc_Res_NO;
|
288
|
+
if (size < 4)
|
289
|
+
return k_IsArc_Res_NEED_MORE;
|
290
|
+
unsigned len = GetUi16(p + 2);
|
291
|
+
size -= 4;
|
292
|
+
xlen -= 4;
|
293
|
+
p += 4;
|
294
|
+
if (len > xlen)
|
295
|
+
return k_IsArc_Res_NO;
|
296
|
+
if (len > size)
|
297
|
+
return k_IsArc_Res_NEED_MORE;
|
298
|
+
size -= len;
|
299
|
+
xlen -= len;
|
300
|
+
p += len;
|
301
|
+
}
|
302
|
+
}
|
303
|
+
|
304
|
+
if ((flags & NFlags::kName) != 0)
|
305
|
+
{
|
306
|
+
size_t limit = kNameMaxLen;
|
307
|
+
if (limit > size)
|
308
|
+
limit = size;
|
309
|
+
size_t i;
|
310
|
+
for (i = 0; i < limit && p[i] != 0; i++);
|
311
|
+
if (i == size)
|
312
|
+
return k_IsArc_Res_NEED_MORE;
|
313
|
+
if (i == limit)
|
314
|
+
return k_IsArc_Res_NO;
|
315
|
+
i++;
|
316
|
+
p += i;
|
317
|
+
size -= i;
|
318
|
+
}
|
319
|
+
|
320
|
+
if ((flags & NFlags::kComment) != 0)
|
321
|
+
{
|
322
|
+
size_t limit = kCommentMaxLen;
|
323
|
+
if (limit > size)
|
324
|
+
limit = size;
|
325
|
+
size_t i;
|
326
|
+
for (i = 0; i < limit && p[i] != 0; i++);
|
327
|
+
if (i == size)
|
328
|
+
return k_IsArc_Res_NEED_MORE;
|
329
|
+
if (i == limit)
|
330
|
+
return k_IsArc_Res_NO;
|
331
|
+
i++;
|
332
|
+
p += i;
|
333
|
+
size -= i;
|
334
|
+
}
|
335
|
+
|
336
|
+
if ((flags & NFlags::kCrc) != 0)
|
337
|
+
{
|
338
|
+
if (size < 2)
|
339
|
+
return k_IsArc_Res_NEED_MORE;
|
340
|
+
p += 2;
|
341
|
+
size -= 2;
|
342
|
+
}
|
343
|
+
|
344
|
+
return Is_Deflate(p, size);
|
345
|
+
}
|
346
|
+
}
|
347
|
+
|
348
|
+
HRESULT CItem::ReadHeader(NDecoder::CCOMCoder *stream)
|
193
349
|
{
|
194
350
|
Clear();
|
195
351
|
|
@@ -199,15 +355,15 @@ HRESULT CItem::ReadHeader(NCompress::NDeflate::NDecoder::CCOMCoder *stream)
|
|
199
355
|
|
200
356
|
RINOK(ReadBytes(stream, buf, 10));
|
201
357
|
|
202
|
-
if (
|
358
|
+
if (buf[0] != kSignature_0 ||
|
359
|
+
buf[1] != kSignature_1 ||
|
360
|
+
buf[2] != kSignature_2)
|
203
361
|
return S_FALSE;
|
204
362
|
|
205
|
-
|
206
|
-
|
207
|
-
if (Method != NHeader::NCompressionMethod::kDeflate)
|
363
|
+
Flags = buf[3];
|
364
|
+
if (!IsSupported())
|
208
365
|
return S_FALSE;
|
209
366
|
|
210
|
-
Flags = buf[3];
|
211
367
|
Time = Get32(buf + 4);
|
212
368
|
ExtraFlags = buf[8];
|
213
369
|
HostOS = buf[9];
|
@@ -216,21 +372,21 @@ HRESULT CItem::ReadHeader(NCompress::NDeflate::NDecoder::CCOMCoder *stream)
|
|
216
372
|
|
217
373
|
if (ExtraFieldIsPresent())
|
218
374
|
{
|
219
|
-
|
220
|
-
RINOK(ReadUInt16(stream,
|
221
|
-
RINOK(SkipBytes(stream,
|
222
|
-
// Extra.SetCapacity(
|
223
|
-
// RINOK(ReadStream_FALSE(stream, Extra,
|
224
|
-
// crc = CrcUpdate(crc, Extra,
|
375
|
+
UInt32 xlen;
|
376
|
+
RINOK(ReadUInt16(stream, xlen /* , crc */));
|
377
|
+
RINOK(SkipBytes(stream, xlen));
|
378
|
+
// Extra.SetCapacity(xlen);
|
379
|
+
// RINOK(ReadStream_FALSE(stream, Extra, xlen));
|
380
|
+
// crc = CrcUpdate(crc, Extra, xlen);
|
225
381
|
}
|
226
382
|
if (NameIsPresent())
|
227
|
-
RINOK(ReadString(stream, Name,
|
383
|
+
RINOK(ReadString(stream, Name, kNameMaxLen /* , crc */));
|
228
384
|
if (CommentIsPresent())
|
229
|
-
RINOK(ReadString(stream, Comment,
|
385
|
+
RINOK(ReadString(stream, Comment, kCommentMaxLen /* , crc */));
|
230
386
|
|
231
387
|
if (HeaderCrcIsPresent())
|
232
388
|
{
|
233
|
-
|
389
|
+
UInt32 headerCRC;
|
234
390
|
// UInt32 dummy = 0;
|
235
391
|
RINOK(ReadUInt16(stream, headerCRC /* , dummy */));
|
236
392
|
/*
|
@@ -241,7 +397,7 @@ HRESULT CItem::ReadHeader(NCompress::NDeflate::NDecoder::CCOMCoder *stream)
|
|
241
397
|
return stream->InputEofError() ? S_FALSE : S_OK;
|
242
398
|
}
|
243
399
|
|
244
|
-
HRESULT CItem::ReadFooter1(
|
400
|
+
HRESULT CItem::ReadFooter1(NDecoder::CCOMCoder *stream)
|
245
401
|
{
|
246
402
|
Byte buf[8];
|
247
403
|
RINOK(ReadBytes(stream, buf, 8));
|
@@ -262,10 +418,11 @@ HRESULT CItem::ReadFooter2(ISequentialInStream *stream)
|
|
262
418
|
HRESULT CItem::WriteHeader(ISequentialOutStream *stream)
|
263
419
|
{
|
264
420
|
Byte buf[10];
|
265
|
-
|
266
|
-
buf[
|
267
|
-
buf[
|
268
|
-
|
421
|
+
buf[0] = kSignature_0;
|
422
|
+
buf[1] = kSignature_1;
|
423
|
+
buf[2] = kSignature_2;
|
424
|
+
buf[3] = (Byte)(Flags & NFlags::kName);
|
425
|
+
// buf[3] |= NFlags::kCrc;
|
269
426
|
SetUi32(buf + 4, Time);
|
270
427
|
buf[8] = ExtraFlags;
|
271
428
|
buf[9] = HostOS;
|
@@ -273,8 +430,8 @@ HRESULT CItem::WriteHeader(ISequentialOutStream *stream)
|
|
273
430
|
// crc = CrcUpdate(CRC_INIT_VAL, buf, 10);
|
274
431
|
if (NameIsPresent())
|
275
432
|
{
|
276
|
-
// crc = CrcUpdate(crc, (const char *)Name, Name.
|
277
|
-
RINOK(WriteStream(stream, (const char *)Name, Name.
|
433
|
+
// crc = CrcUpdate(crc, (const char *)Name, Name.Len() + 1);
|
434
|
+
RINOK(WriteStream(stream, (const char *)Name, Name.Len() + 1));
|
278
435
|
}
|
279
436
|
// SetUi16(buf, (UInt16)CRC_GET_DIGEST(crc));
|
280
437
|
// RINOK(WriteStream(stream, buf, 2));
|
@@ -297,54 +454,97 @@ class CHandler:
|
|
297
454
|
public CMyUnknownImp
|
298
455
|
{
|
299
456
|
CItem _item;
|
300
|
-
|
301
|
-
|
457
|
+
|
458
|
+
bool _isArc;
|
459
|
+
bool _needSeekToStart;
|
460
|
+
bool _dataAfterEnd;
|
461
|
+
bool _needMoreInput;
|
462
|
+
|
463
|
+
bool _packSize_Defined;
|
464
|
+
bool _unpackSize_Defined;
|
465
|
+
bool _numStreams_Defined;
|
466
|
+
|
302
467
|
UInt64 _packSize;
|
303
|
-
|
468
|
+
UInt64 _unpackSize; // real unpack size (NOT from footer)
|
469
|
+
UInt64 _numStreams;
|
470
|
+
UInt64 _headerSize; // only start header (without footer)
|
471
|
+
|
304
472
|
CMyComPtr<IInStream> _stream;
|
305
473
|
CMyComPtr<ICompressCoder> _decoder;
|
306
|
-
|
474
|
+
NDecoder::CCOMCoder *_decoderSpec;
|
307
475
|
|
308
|
-
|
476
|
+
CSingleMethodProps _props;
|
309
477
|
|
310
478
|
public:
|
311
|
-
MY_UNKNOWN_IMP4(
|
479
|
+
MY_UNKNOWN_IMP4(
|
480
|
+
IInArchive,
|
481
|
+
IArchiveOpenSeq,
|
482
|
+
IOutArchive,
|
483
|
+
ISetProperties)
|
312
484
|
INTERFACE_IInArchive(;)
|
313
485
|
INTERFACE_IOutArchive(;)
|
314
486
|
STDMETHOD(OpenSeq)(ISequentialInStream *stream);
|
315
|
-
STDMETHOD(SetProperties)(const wchar_t
|
487
|
+
STDMETHOD(SetProperties)(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps);
|
316
488
|
|
317
489
|
CHandler()
|
318
490
|
{
|
319
|
-
_decoderSpec = new
|
491
|
+
_decoderSpec = new NDecoder::CCOMCoder;
|
320
492
|
_decoder = _decoderSpec;
|
321
493
|
}
|
322
494
|
};
|
323
495
|
|
324
|
-
|
496
|
+
static const Byte kProps[] =
|
325
497
|
{
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
//
|
333
|
-
}
|
334
|
-
|
498
|
+
kpidPath,
|
499
|
+
kpidSize,
|
500
|
+
kpidPackSize,
|
501
|
+
kpidMTime,
|
502
|
+
kpidHostOS,
|
503
|
+
kpidCRC
|
504
|
+
// kpidComment
|
505
|
+
};
|
506
|
+
|
507
|
+
static const Byte kArcProps[] =
|
508
|
+
{
|
509
|
+
kpidHeadersSize,
|
510
|
+
kpidNumStreams
|
511
|
+
};
|
512
|
+
|
335
513
|
|
336
514
|
IMP_IInArchive_Props
|
337
|
-
|
515
|
+
IMP_IInArchive_ArcProps
|
338
516
|
|
339
517
|
STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
|
340
518
|
{
|
519
|
+
COM_TRY_BEGIN
|
341
520
|
NCOM::CPropVariant prop;
|
342
|
-
switch(propID)
|
521
|
+
switch (propID)
|
343
522
|
{
|
344
|
-
case kpidPhySize: if (
|
523
|
+
case kpidPhySize: if (_packSize_Defined) prop = _packSize; break;
|
524
|
+
case kpidUnpackSize: if (_unpackSize_Defined) prop = _unpackSize; break;
|
525
|
+
case kpidNumStreams: if (_numStreams_Defined) prop = _numStreams; break;
|
526
|
+
case kpidHeadersSize: if (_headerSize != 0) prop = _headerSize; break;
|
527
|
+
case kpidErrorFlags:
|
528
|
+
{
|
529
|
+
UInt32 v = 0;
|
530
|
+
if (!_isArc) v |= kpv_ErrorFlags_IsNotArc;;
|
531
|
+
if (_needMoreInput) v |= kpv_ErrorFlags_UnexpectedEnd;
|
532
|
+
if (_dataAfterEnd) v |= kpv_ErrorFlags_DataAfterEnd;
|
533
|
+
prop = v;
|
534
|
+
break;
|
535
|
+
}
|
536
|
+
case kpidName:
|
537
|
+
if (_item.NameIsPresent())
|
538
|
+
{
|
539
|
+
UString s = MultiByteToUnicodeString(_item.Name, CP_ACP);
|
540
|
+
s.AddAscii(".gz");
|
541
|
+
prop = s;
|
542
|
+
}
|
543
|
+
break;
|
345
544
|
}
|
346
545
|
prop.Detach(value);
|
347
546
|
return S_OK;
|
547
|
+
COM_TRY_END
|
348
548
|
}
|
349
549
|
|
350
550
|
|
@@ -354,11 +554,11 @@ STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
|
|
354
554
|
return S_OK;
|
355
555
|
}
|
356
556
|
|
357
|
-
STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID,
|
557
|
+
STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIANT *value)
|
358
558
|
{
|
359
559
|
COM_TRY_BEGIN
|
360
|
-
|
361
|
-
switch(propID)
|
560
|
+
NCOM::CPropVariant prop;
|
561
|
+
switch (propID)
|
362
562
|
{
|
363
563
|
case kpidPath:
|
364
564
|
if (_item.NameIsPresent())
|
@@ -366,7 +566,6 @@ STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIA
|
|
366
566
|
break;
|
367
567
|
// case kpidComment: if (_item.CommentIsPresent()) prop = MultiByteToUnicodeString(_item.Comment, CP_ACP); break;
|
368
568
|
case kpidMTime:
|
369
|
-
{
|
370
569
|
if (_item.Time != 0)
|
371
570
|
{
|
372
571
|
FILETIME utc;
|
@@ -374,10 +573,21 @@ STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIA
|
|
374
573
|
prop = utc;
|
375
574
|
}
|
376
575
|
break;
|
576
|
+
case kpidSize:
|
577
|
+
{
|
578
|
+
if (_unpackSize_Defined)
|
579
|
+
prop = _unpackSize;
|
580
|
+
else if (_stream)
|
581
|
+
prop = (UInt64)_item.Size32;
|
582
|
+
break;
|
583
|
+
}
|
584
|
+
case kpidPackSize:
|
585
|
+
{
|
586
|
+
if (_packSize_Defined || _stream)
|
587
|
+
prop = _packSize;
|
588
|
+
break;
|
377
589
|
}
|
378
|
-
case
|
379
|
-
case kpidPackSize: if (_packSizeDefined) prop = _packSize; break;
|
380
|
-
case kpidHostOS: prop = (_item.HostOS < sizeof(kHostOSes) / sizeof(kHostOSes[0])) ?
|
590
|
+
case kpidHostOS: prop = (_item.HostOS < ARRAY_SIZE(kHostOSes)) ?
|
381
591
|
kHostOSes[_item.HostOS] : kUnknownOS; break;
|
382
592
|
case kpidCRC: if (_stream) prop = _item.Crc; break;
|
383
593
|
}
|
@@ -386,56 +596,81 @@ STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIA
|
|
386
596
|
COM_TRY_END
|
387
597
|
}
|
388
598
|
|
389
|
-
|
599
|
+
class CCompressProgressInfoImp:
|
600
|
+
public ICompressProgressInfo,
|
601
|
+
public CMyUnknownImp
|
390
602
|
{
|
391
|
-
|
392
|
-
|
393
|
-
|
603
|
+
CMyComPtr<IArchiveOpenCallback> Callback;
|
604
|
+
public:
|
605
|
+
UInt64 Offset;
|
606
|
+
MY_UNKNOWN_IMP1(ICompressProgressInfo)
|
607
|
+
STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);
|
608
|
+
void Init(IArchiveOpenCallback *callback) { Callback = callback; }
|
609
|
+
};
|
610
|
+
|
611
|
+
STDMETHODIMP CCompressProgressInfoImp::SetRatioInfo(const UInt64 *inSize, const UInt64 * /* outSize */)
|
612
|
+
{
|
613
|
+
if (Callback)
|
394
614
|
{
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
{
|
399
|
-
UInt64 endPos;
|
400
|
-
res = stream->Seek(-8, STREAM_SEEK_END, &endPos);
|
401
|
-
_packSize = endPos + 8 - _startPosition;
|
402
|
-
_packSizeDefined = true;
|
403
|
-
if (res == S_OK)
|
404
|
-
{
|
405
|
-
res = _item.ReadFooter2(stream);
|
406
|
-
_stream = stream;
|
407
|
-
}
|
408
|
-
}
|
615
|
+
UInt64 files = 0;
|
616
|
+
UInt64 value = Offset + *inSize;
|
617
|
+
return Callback->SetCompleted(&files, &value);
|
409
618
|
}
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
619
|
+
return S_OK;
|
620
|
+
}
|
621
|
+
|
622
|
+
/*
|
623
|
+
*/
|
624
|
+
|
625
|
+
STDMETHODIMP CHandler::Open(IInStream *stream, const UInt64 *, IArchiveOpenCallback *)
|
626
|
+
{
|
627
|
+
COM_TRY_BEGIN
|
628
|
+
RINOK(OpenSeq(stream));
|
629
|
+
_isArc = false;
|
630
|
+
UInt64 endPos;
|
631
|
+
RINOK(stream->Seek(-8, STREAM_SEEK_END, &endPos));
|
632
|
+
_packSize = endPos + 8;
|
633
|
+
RINOK(_item.ReadFooter2(stream));
|
634
|
+
_stream = stream;
|
635
|
+
_isArc = true;
|
636
|
+
_needSeekToStart = true;
|
637
|
+
return S_OK;
|
414
638
|
COM_TRY_END
|
415
639
|
}
|
416
640
|
|
417
641
|
STDMETHODIMP CHandler::OpenSeq(ISequentialInStream *stream)
|
418
642
|
{
|
419
643
|
COM_TRY_BEGIN
|
420
|
-
HRESULT res;
|
421
644
|
try
|
422
645
|
{
|
423
646
|
Close();
|
424
647
|
_decoderSpec->SetInStream(stream);
|
425
648
|
_decoderSpec->InitInStream(true);
|
426
|
-
|
649
|
+
RINOK(_item.ReadHeader(_decoderSpec));
|
650
|
+
if (_decoderSpec->InputEofError())
|
651
|
+
return S_FALSE;
|
427
652
|
_headerSize = _decoderSpec->GetInputProcessedSize();
|
653
|
+
_isArc = true;
|
654
|
+
return S_OK;
|
428
655
|
}
|
429
|
-
catch(
|
430
|
-
if (res != S_OK)
|
431
|
-
Close();
|
432
|
-
return res;
|
656
|
+
catch(const CInBufferException &e) { return e.ErrorCode; }
|
433
657
|
COM_TRY_END
|
434
658
|
}
|
435
659
|
|
436
660
|
STDMETHODIMP CHandler::Close()
|
437
661
|
{
|
438
|
-
|
662
|
+
_isArc = false;
|
663
|
+
_needSeekToStart = false;
|
664
|
+
_dataAfterEnd = false;
|
665
|
+
_needMoreInput = false;
|
666
|
+
|
667
|
+
_packSize_Defined = false;
|
668
|
+
_unpackSize_Defined = false;
|
669
|
+
_numStreams_Defined = false;
|
670
|
+
|
671
|
+
_packSize = 0;
|
672
|
+
_headerSize = 0;
|
673
|
+
|
439
674
|
_stream.Release();
|
440
675
|
_decoderSpec->ReleaseInStream();
|
441
676
|
return S_OK;
|
@@ -447,13 +682,13 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
447
682
|
COM_TRY_BEGIN
|
448
683
|
if (numItems == 0)
|
449
684
|
return S_OK;
|
450
|
-
if (numItems != (UInt32)-1 && (numItems != 1 || indices[0] != 0))
|
685
|
+
if (numItems != (UInt32)(Int32)-1 && (numItems != 1 || indices[0] != 0))
|
451
686
|
return E_INVALIDARG;
|
452
687
|
|
453
|
-
if (
|
688
|
+
if (_packSize_Defined)
|
454
689
|
extractCallback->SetTotal(_packSize);
|
455
|
-
UInt64 currentTotalPacked = 0;
|
456
|
-
RINOK(extractCallback->SetCompleted(¤tTotalPacked));
|
690
|
+
// UInt64 currentTotalPacked = 0;
|
691
|
+
// RINOK(extractCallback->SetCompleted(¤tTotalPacked));
|
457
692
|
CMyComPtr<ISequentialOutStream> realOutStream;
|
458
693
|
Int32 askMode = testMode ?
|
459
694
|
NExtract::NAskMode::kTest :
|
@@ -474,78 +709,175 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
474
709
|
CMyComPtr<ICompressProgressInfo> progress = lps;
|
475
710
|
lps->Init(extractCallback, true);
|
476
711
|
|
477
|
-
|
712
|
+
bool needReadFirstItem = _needSeekToStart;
|
713
|
+
|
714
|
+
if (_needSeekToStart)
|
478
715
|
{
|
479
|
-
|
716
|
+
if (!_stream)
|
717
|
+
return E_FAIL;
|
718
|
+
RINOK(_stream->Seek(0, STREAM_SEEK_SET, NULL));
|
480
719
|
_decoderSpec->InitInStream(true);
|
720
|
+
// printf("\nSeek");
|
481
721
|
}
|
722
|
+
else
|
723
|
+
_needSeekToStart = true;
|
724
|
+
|
482
725
|
bool firstItem = true;
|
483
|
-
|
726
|
+
|
727
|
+
UInt64 packSize = _decoderSpec->GetInputProcessedSize();
|
728
|
+
// printf("\npackSize = %d", (unsigned)packSize);
|
729
|
+
|
730
|
+
UInt64 unpackedSize = 0;
|
731
|
+
UInt64 numStreams = 0;
|
732
|
+
|
733
|
+
bool crcError = false;
|
734
|
+
|
735
|
+
HRESULT result = S_OK;
|
736
|
+
|
737
|
+
try {
|
738
|
+
|
484
739
|
for (;;)
|
485
740
|
{
|
486
|
-
lps->InSize =
|
487
|
-
|
488
|
-
|
741
|
+
lps->InSize = packSize;
|
742
|
+
lps->OutSize = unpackedSize;
|
743
|
+
|
489
744
|
RINOK(lps->SetCur());
|
490
745
|
|
491
746
|
CItem item;
|
492
|
-
|
747
|
+
|
748
|
+
if (!firstItem || needReadFirstItem)
|
493
749
|
{
|
494
|
-
|
750
|
+
result = item.ReadHeader(_decoderSpec);
|
751
|
+
|
752
|
+
if (result != S_OK && result != S_FALSE)
|
753
|
+
return result;
|
754
|
+
|
755
|
+
if (_decoderSpec->InputEofError())
|
756
|
+
result = S_FALSE;
|
757
|
+
|
758
|
+
if (result != S_OK && firstItem)
|
759
|
+
{
|
760
|
+
_isArc = false;
|
761
|
+
break;
|
762
|
+
}
|
763
|
+
|
764
|
+
if (packSize == _decoderSpec->GetStreamSize())
|
765
|
+
{
|
766
|
+
result = S_OK;
|
767
|
+
break;
|
768
|
+
}
|
769
|
+
|
495
770
|
if (result != S_OK)
|
496
771
|
{
|
497
|
-
|
498
|
-
return result;
|
499
|
-
opRes = firstItem ?
|
500
|
-
NExtract::NOperationResult::kDataError :
|
501
|
-
NExtract::NOperationResult::kOK;
|
772
|
+
_dataAfterEnd = true;
|
502
773
|
break;
|
503
774
|
}
|
504
775
|
}
|
776
|
+
|
777
|
+
numStreams++;
|
505
778
|
firstItem = false;
|
506
779
|
|
507
780
|
UInt64 startOffset = outStreamSpec->GetSize();
|
508
781
|
outStreamSpec->InitCRC();
|
509
782
|
|
510
|
-
|
511
|
-
|
783
|
+
result = _decoderSpec->CodeResume(outStream, NULL, progress);
|
784
|
+
|
785
|
+
packSize = _decoderSpec->GetInputProcessedSize();
|
786
|
+
unpackedSize = outStreamSpec->GetSize();
|
787
|
+
|
788
|
+
if (result != S_OK && result != S_FALSE)
|
789
|
+
return result;
|
790
|
+
|
791
|
+
if (_decoderSpec->InputEofError())
|
512
792
|
{
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
break;
|
793
|
+
packSize = _decoderSpec->GetStreamSize();
|
794
|
+
_needMoreInput = true;
|
795
|
+
result = S_FALSE;
|
517
796
|
}
|
518
797
|
|
798
|
+
if (result != S_OK)
|
799
|
+
break;
|
800
|
+
|
519
801
|
_decoderSpec->AlignToByte();
|
520
|
-
|
802
|
+
|
803
|
+
result = item.ReadFooter1(_decoderSpec);
|
804
|
+
|
805
|
+
packSize = _decoderSpec->GetInputProcessedSize();
|
806
|
+
|
807
|
+
if (result != S_OK && result != S_FALSE)
|
808
|
+
return result;
|
809
|
+
|
810
|
+
if (result != S_OK)
|
521
811
|
{
|
522
|
-
|
812
|
+
if (_decoderSpec->InputEofError())
|
813
|
+
{
|
814
|
+
_needMoreInput = true;
|
815
|
+
result = S_FALSE;
|
816
|
+
}
|
523
817
|
break;
|
524
818
|
}
|
819
|
+
|
525
820
|
if (item.Crc != outStreamSpec->GetCRC() ||
|
526
|
-
item.Size32 != (UInt32)(
|
821
|
+
item.Size32 != (UInt32)(unpackedSize - startOffset))
|
527
822
|
{
|
528
|
-
|
823
|
+
crcError = true;
|
824
|
+
result = S_FALSE;
|
529
825
|
break;
|
530
826
|
}
|
827
|
+
|
828
|
+
// break; // we can use break, if we need only first stream
|
829
|
+
}
|
830
|
+
|
831
|
+
} catch(const CInBufferException &e) { return e.ErrorCode; }
|
832
|
+
|
833
|
+
if (!firstItem)
|
834
|
+
{
|
835
|
+
_packSize = packSize;
|
836
|
+
_unpackSize = unpackedSize;
|
837
|
+
_numStreams = numStreams;
|
838
|
+
|
839
|
+
_packSize_Defined = true;
|
840
|
+
_unpackSize_Defined = true;
|
841
|
+
_numStreams_Defined = true;
|
531
842
|
}
|
843
|
+
|
532
844
|
outStream.Release();
|
533
|
-
|
845
|
+
|
846
|
+
Int32 retResult = NExtract::NOperationResult::kDataError;
|
847
|
+
|
848
|
+
if (!_isArc)
|
849
|
+
retResult = NExtract::NOperationResult::kIsNotArc;
|
850
|
+
else if (_needMoreInput)
|
851
|
+
retResult = NExtract::NOperationResult::kUnexpectedEnd;
|
852
|
+
else if (crcError)
|
853
|
+
retResult = NExtract::NOperationResult::kCRCError;
|
854
|
+
else if (_dataAfterEnd)
|
855
|
+
retResult = NExtract::NOperationResult::kDataAfterEnd;
|
856
|
+
else if (result == S_FALSE)
|
857
|
+
retResult = NExtract::NOperationResult::kDataError;
|
858
|
+
else if (result == S_OK)
|
859
|
+
retResult = NExtract::NOperationResult::kOK;
|
860
|
+
else
|
861
|
+
return result;
|
862
|
+
|
863
|
+
return extractCallback->SetOperationResult(retResult);
|
864
|
+
|
865
|
+
|
534
866
|
COM_TRY_END
|
535
867
|
}
|
536
868
|
|
537
869
|
static const Byte kHostOS =
|
538
870
|
#ifdef _WIN32
|
539
|
-
|
871
|
+
NHostOS::kFAT;
|
540
872
|
#else
|
541
|
-
|
873
|
+
NHostOS::kUnix;
|
542
874
|
#endif
|
543
875
|
|
544
876
|
static HRESULT UpdateArchive(
|
545
877
|
ISequentialOutStream *outStream,
|
546
878
|
UInt64 unpackSize,
|
547
|
-
|
548
|
-
|
879
|
+
CItem &item,
|
880
|
+
const CSingleMethodProps &props,
|
549
881
|
IArchiveUpdateCallback *updateCallback)
|
550
882
|
{
|
551
883
|
UInt64 complexity = 0;
|
@@ -565,25 +897,23 @@ static HRESULT UpdateArchive(
|
|
565
897
|
CMyComPtr<ICompressProgressInfo> progress = lps;
|
566
898
|
lps->Init(updateCallback, true);
|
567
899
|
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
NHeader::NExtraFlags::kMaximum :
|
572
|
-
NHeader::NExtraFlags::kFastest;
|
900
|
+
item.ExtraFlags = props.GetLevel() >= 7 ?
|
901
|
+
NExtraFlags::kMaximum :
|
902
|
+
NExtraFlags::kFastest;
|
573
903
|
|
574
904
|
item.HostOS = kHostOS;
|
575
905
|
|
576
906
|
RINOK(item.WriteHeader(outStream));
|
577
907
|
|
578
|
-
|
908
|
+
NEncoder::CCOMCoder *deflateEncoderSpec = new NEncoder::CCOMCoder;
|
579
909
|
CMyComPtr<ICompressCoder> deflateEncoder = deflateEncoderSpec;
|
580
|
-
RINOK(
|
910
|
+
RINOK(props.SetCoderProps(deflateEncoderSpec, NULL));
|
581
911
|
RINOK(deflateEncoder->Code(crcStream, outStream, NULL, NULL, progress));
|
582
912
|
|
583
913
|
item.Crc = inStreamSpec->GetCRC();
|
584
914
|
item.Size32 = (UInt32)inStreamSpec->GetSize();
|
585
915
|
RINOK(item.WriteFooter(outStream));
|
586
|
-
return updateCallback->SetOperationResult(
|
916
|
+
return updateCallback->SetOperationResult(NUpdate::NOperationResult::kOK);
|
587
917
|
}
|
588
918
|
|
589
919
|
STDMETHODIMP CHandler::GetFileTimeType(UInt32 *timeType)
|
@@ -595,6 +925,8 @@ STDMETHODIMP CHandler::GetFileTimeType(UInt32 *timeType)
|
|
595
925
|
STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numItems,
|
596
926
|
IArchiveUpdateCallback *updateCallback)
|
597
927
|
{
|
928
|
+
COM_TRY_BEGIN
|
929
|
+
|
598
930
|
if (numItems != 1)
|
599
931
|
return E_INVALIDARG;
|
600
932
|
|
@@ -604,19 +936,23 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
|
|
604
936
|
return E_FAIL;
|
605
937
|
RINOK(updateCallback->GetUpdateItemInfo(0, &newData, &newProps, &indexInArchive));
|
606
938
|
|
607
|
-
CItem newItem
|
608
|
-
|
609
|
-
|
610
|
-
if (IntToBool(newProps))
|
939
|
+
CItem newItem;
|
940
|
+
|
941
|
+
if (!IntToBool(newProps))
|
611
942
|
{
|
943
|
+
newItem.CopyMetaPropsFrom(_item);
|
944
|
+
}
|
945
|
+
else
|
946
|
+
{
|
947
|
+
newItem.HostOS = kHostOS;
|
612
948
|
{
|
613
|
-
FILETIME utcTime;
|
614
949
|
NCOM::CPropVariant prop;
|
615
950
|
RINOK(updateCallback->GetProperty(0, kpidMTime, &prop));
|
616
|
-
if (prop.vt
|
617
|
-
|
618
|
-
|
619
|
-
|
951
|
+
if (prop.vt == VT_FILETIME)
|
952
|
+
NTime::FileTimeToUnixTime(prop.filetime, newItem.Time);
|
953
|
+
else if (prop.vt == VT_EMPTY)
|
954
|
+
newItem.Time = 0;
|
955
|
+
else
|
620
956
|
return E_INVALIDARG;
|
621
957
|
}
|
622
958
|
{
|
@@ -625,12 +961,12 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
|
|
625
961
|
if (prop.vt == VT_BSTR)
|
626
962
|
{
|
627
963
|
UString name = prop.bstrVal;
|
628
|
-
int
|
629
|
-
if (
|
630
|
-
name
|
964
|
+
int slashPos = name.ReverseFind_PathSepar();
|
965
|
+
if (slashPos >= 0)
|
966
|
+
name.DeleteFrontal(slashPos + 1);
|
631
967
|
newItem.Name = UnicodeStringToMultiByte(name, CP_ACP);
|
632
968
|
if (!newItem.Name.IsEmpty())
|
633
|
-
newItem.Flags |=
|
969
|
+
newItem.Flags |= NFlags::kName;
|
634
970
|
}
|
635
971
|
else if (prop.vt != VT_EMPTY)
|
636
972
|
return E_INVALIDARG;
|
@@ -638,13 +974,9 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
|
|
638
974
|
{
|
639
975
|
NCOM::CPropVariant prop;
|
640
976
|
RINOK(updateCallback->GetProperty(0, kpidIsDir, &prop));
|
641
|
-
if (prop.vt
|
642
|
-
|
643
|
-
if (prop.boolVal != VARIANT_FALSE)
|
977
|
+
if (prop.vt != VT_EMPTY)
|
978
|
+
if (prop.vt != VT_BOOL || prop.boolVal != VARIANT_FALSE)
|
644
979
|
return E_INVALIDARG;
|
645
|
-
}
|
646
|
-
else if (prop.vt != VT_EMPTY)
|
647
|
-
return E_INVALIDARG;
|
648
980
|
}
|
649
981
|
}
|
650
982
|
|
@@ -658,41 +990,55 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
|
|
658
990
|
return E_INVALIDARG;
|
659
991
|
size = prop.uhVal.QuadPart;
|
660
992
|
}
|
661
|
-
|
662
|
-
return UpdateArchive(outStream, size, newItem, _method, updateCallback);
|
993
|
+
return UpdateArchive(outStream, size, newItem, _props, updateCallback);
|
663
994
|
}
|
664
|
-
|
995
|
+
|
665
996
|
if (indexInArchive != 0)
|
666
997
|
return E_INVALIDARG;
|
667
998
|
|
668
999
|
if (!_stream)
|
669
1000
|
return E_NOTIMPL;
|
670
1001
|
|
671
|
-
|
1002
|
+
CLocalProgress *lps = new CLocalProgress;
|
1003
|
+
CMyComPtr<ICompressProgressInfo> progress = lps;
|
1004
|
+
lps->Init(updateCallback, true);
|
1005
|
+
|
1006
|
+
CMyComPtr<IArchiveUpdateCallbackFile> opCallback;
|
1007
|
+
updateCallback->QueryInterface(IID_IArchiveUpdateCallbackFile, (void **)&opCallback);
|
1008
|
+
if (opCallback)
|
1009
|
+
{
|
1010
|
+
RINOK(opCallback->ReportOperation(
|
1011
|
+
NEventIndexType::kInArcIndex, 0,
|
1012
|
+
NUpdateNotifyOp::kReplicate))
|
1013
|
+
}
|
1014
|
+
|
1015
|
+
newItem.CopyDataPropsFrom(_item);
|
1016
|
+
|
1017
|
+
UInt64 offset = 0;
|
672
1018
|
if (IntToBool(newProps))
|
673
1019
|
{
|
674
1020
|
newItem.WriteHeader(outStream);
|
675
1021
|
offset += _headerSize;
|
676
1022
|
}
|
677
1023
|
RINOK(_stream->Seek(offset, STREAM_SEEK_SET, NULL));
|
678
|
-
|
1024
|
+
|
1025
|
+
return NCompress::CopyStream(_stream, outStream, progress);
|
1026
|
+
|
1027
|
+
COM_TRY_END
|
679
1028
|
}
|
680
1029
|
|
681
|
-
STDMETHODIMP CHandler::SetProperties(const wchar_t
|
1030
|
+
STDMETHODIMP CHandler::SetProperties(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps)
|
682
1031
|
{
|
683
|
-
return
|
1032
|
+
return _props.SetProperties(names, values, numProps);
|
684
1033
|
}
|
685
1034
|
|
686
|
-
static
|
687
|
-
#ifndef EXTRACT_ONLY
|
688
|
-
static IOutArchive *CreateArcOut() { return new CHandler; }
|
689
|
-
#else
|
690
|
-
#define CreateArcOut 0
|
691
|
-
#endif
|
692
|
-
|
693
|
-
static CArcInfo g_ArcInfo =
|
694
|
-
{ L"gzip", L"gz gzip tgz tpz", L"* * .tar .tar", 0xEF, { 0x1F, 0x8B, 8 }, 3, true, CreateArc, CreateArcOut };
|
1035
|
+
static const Byte k_Signature[] = { kSignature_0, kSignature_1, kSignature_2 };
|
695
1036
|
|
696
|
-
|
1037
|
+
REGISTER_ARC_IO(
|
1038
|
+
"gzip", "gz gzip tgz tpz", "* * .tar .tar", 0xEF,
|
1039
|
+
k_Signature,
|
1040
|
+
0,
|
1041
|
+
NArcInfoFlags::kKeepName,
|
1042
|
+
IsArc_Gz)
|
697
1043
|
|
698
1044
|
}}
|