seven-zip 1.4.1 → 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 +15 -30
- data/README.md +16 -3
- 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 +42 -19
- 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 +266 -219
- data/.github/workflows/ci.yml +0 -31
- 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,11 @@
|
|
4
4
|
|
5
5
|
#include "../../../C/CpuArch.h"
|
6
6
|
|
7
|
-
#include "Common/
|
8
|
-
#include "Common/
|
9
|
-
#include "Common/
|
7
|
+
#include "../../Common/ComTry.h"
|
8
|
+
#include "../../Common/IntToString.h"
|
9
|
+
#include "../../Common/MyBuffer.h"
|
10
10
|
|
11
|
-
#include "Windows/PropVariantUtils.h"
|
11
|
+
#include "../../Windows/PropVariantUtils.h"
|
12
12
|
|
13
13
|
#include "../Common/LimitedStreams.h"
|
14
14
|
#include "../Common/ProgressUtils.h"
|
@@ -17,22 +17,44 @@
|
|
17
17
|
|
18
18
|
#include "../Compress/CopyCoder.h"
|
19
19
|
|
20
|
-
static UInt16 Get16(const Byte *p, int be) { if (be) return GetBe16(p); return GetUi16(p); }
|
21
|
-
static UInt32 Get32(const Byte *p, int be) { if (be) return GetBe32(p); return GetUi32(p); }
|
22
|
-
static UInt64 Get64(const Byte *p, int be) { if (be) return GetBe64(p); return GetUi64(p); }
|
23
|
-
|
24
20
|
using namespace NWindows;
|
25
21
|
|
22
|
+
static UInt16 Get16(const Byte *p, bool be) { if (be) return GetBe16(p); return GetUi16(p); }
|
23
|
+
static UInt32 Get32(const Byte *p, bool be) { if (be) return GetBe32(p); return GetUi32(p); }
|
24
|
+
static UInt64 Get64(const Byte *p, bool be) { if (be) return GetBe64(p); return GetUi64(p); }
|
25
|
+
|
26
|
+
#define G16(offs, v) v = Get16(p + (offs), be)
|
27
|
+
#define G32(offs, v) v = Get32(p + (offs), be)
|
28
|
+
#define G64(offs, v) v = Get64(p + (offs), be)
|
29
|
+
|
26
30
|
namespace NArchive {
|
27
31
|
namespace NElf {
|
28
32
|
|
33
|
+
/*
|
34
|
+
ELF Structure for most files (real order can be different):
|
35
|
+
Header
|
36
|
+
Program (segment) header table (used at runtime)
|
37
|
+
Segment1 (Section ... Section)
|
38
|
+
Segment2
|
39
|
+
...
|
40
|
+
SegmentN
|
41
|
+
Section header table (the data for linking and relocation)
|
42
|
+
*/
|
43
|
+
|
29
44
|
#define ELF_CLASS_32 1
|
30
45
|
#define ELF_CLASS_64 2
|
31
46
|
|
32
47
|
#define ELF_DATA_2LSB 1
|
33
48
|
#define ELF_DATA_2MSB 2
|
34
49
|
|
35
|
-
|
50
|
+
static const UInt32 kHeaderSize32 = 0x34;
|
51
|
+
static const UInt32 kHeaderSize64 = 0x40;
|
52
|
+
|
53
|
+
static const UInt32 kSegmentSize32 = 0x20;
|
54
|
+
static const UInt32 kSegmentSize64 = 0x38;
|
55
|
+
|
56
|
+
static const UInt32 kSectionSize32 = 0x28;
|
57
|
+
static const UInt32 kSectionSize64 = 0x40;
|
36
58
|
|
37
59
|
struct CHeader
|
38
60
|
{
|
@@ -49,37 +71,30 @@ struct CHeader
|
|
49
71
|
UInt64 ProgOffset;
|
50
72
|
UInt64 SectOffset;
|
51
73
|
UInt32 Flags;
|
52
|
-
UInt16
|
74
|
+
UInt16 HeaderSize;
|
53
75
|
UInt16 SegmentEntrySize;
|
54
76
|
UInt16 NumSegments;
|
55
|
-
UInt16
|
77
|
+
UInt16 SectionEntrySize;
|
56
78
|
UInt16 NumSections;
|
57
|
-
|
79
|
+
UInt16 NamesSectIndex;
|
58
80
|
|
59
81
|
bool Parse(const Byte *buf);
|
60
82
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
};
|
65
|
-
|
66
|
-
UInt64 GetHeadersSize() const
|
67
|
-
{ return ElfHeaderSize +
|
68
|
-
(UInt64)SegmentEntrySize * NumSegments +
|
69
|
-
(UInt64)SectEntrySize * NumSections; }
|
70
|
-
|
83
|
+
UInt64 GetHeadersSize() const { return (UInt64)HeaderSize +
|
84
|
+
(UInt32)NumSegments * SegmentEntrySize +
|
85
|
+
(UInt32)NumSections * SectionEntrySize; }
|
71
86
|
};
|
72
87
|
|
73
88
|
bool CHeader::Parse(const Byte *p)
|
74
89
|
{
|
75
|
-
switch(p[4])
|
90
|
+
switch (p[4])
|
76
91
|
{
|
77
92
|
case ELF_CLASS_32: Mode64 = false; break;
|
78
93
|
case ELF_CLASS_64: Mode64 = true; break;
|
79
94
|
default: return false;
|
80
95
|
}
|
81
96
|
bool be;
|
82
|
-
switch(p[5])
|
97
|
+
switch (p[5])
|
83
98
|
{
|
84
99
|
case ELF_DATA_2LSB: be = false; break;
|
85
100
|
case ELF_DATA_2MSB: be = true; break;
|
@@ -94,36 +109,72 @@ bool CHeader::Parse(const Byte *p)
|
|
94
109
|
if (p[i] != 0)
|
95
110
|
return false;
|
96
111
|
|
97
|
-
|
98
|
-
|
112
|
+
G16(0x10, Type);
|
113
|
+
G16(0x12, Machine);
|
99
114
|
if (Get32(p + 0x14, be) != 1) // Version
|
100
115
|
return false;
|
101
116
|
|
102
117
|
if (Mode64)
|
103
118
|
{
|
104
|
-
//
|
105
|
-
|
106
|
-
|
119
|
+
// G64(0x18, EntryVa);
|
120
|
+
G64(0x20, ProgOffset);
|
121
|
+
G64(0x28, SectOffset);
|
107
122
|
p += 0x30;
|
108
123
|
}
|
109
124
|
else
|
110
125
|
{
|
111
|
-
//
|
112
|
-
|
113
|
-
|
126
|
+
// G32(0x18, EntryVa);
|
127
|
+
G32(0x1C, ProgOffset);
|
128
|
+
G32(0x20, SectOffset);
|
114
129
|
p += 0x24;
|
115
130
|
}
|
116
131
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
132
|
+
G32(0, Flags);
|
133
|
+
G16(4, HeaderSize);
|
134
|
+
if (HeaderSize != (Mode64 ? kHeaderSize64 : kHeaderSize32))
|
135
|
+
return false;
|
136
|
+
|
137
|
+
G16(6, SegmentEntrySize);
|
138
|
+
G16(8, NumSegments);
|
139
|
+
G16(10, SectionEntrySize);
|
140
|
+
G16(12, NumSections);
|
141
|
+
G16(14, NamesSectIndex);
|
142
|
+
|
143
|
+
if (ProgOffset < HeaderSize && (ProgOffset != 0 || NumSegments != 0)) return false;
|
144
|
+
if (SectOffset < HeaderSize && (SectOffset != 0 || NumSections != 0)) return false;
|
145
|
+
|
146
|
+
if (SegmentEntrySize == 0) { if (NumSegments != 0) return false; }
|
147
|
+
else if (SegmentEntrySize != (Mode64 ? kSegmentSize64 : kSegmentSize32)) return false;
|
148
|
+
|
149
|
+
if (SectionEntrySize == 0) { if (NumSections != 0) return false; }
|
150
|
+
else if (SectionEntrySize != (Mode64 ? kSectionSize64 : kSectionSize32)) return false;
|
151
|
+
|
152
|
+
return true;
|
125
153
|
}
|
126
154
|
|
155
|
+
// The program header table itself.
|
156
|
+
|
157
|
+
#define PT_PHDR 6
|
158
|
+
|
159
|
+
static const char *g_SegnmentTypes[] =
|
160
|
+
{
|
161
|
+
"Unused",
|
162
|
+
"Loadable segment",
|
163
|
+
"Dynamic linking tables",
|
164
|
+
"Program interpreter path name",
|
165
|
+
"Note section",
|
166
|
+
"SHLIB",
|
167
|
+
"Program header table",
|
168
|
+
"TLS"
|
169
|
+
};
|
170
|
+
|
171
|
+
static const CUInt32PCharPair g_SegmentFlags[] =
|
172
|
+
{
|
173
|
+
{ 0, "Execute" },
|
174
|
+
{ 1, "Write" },
|
175
|
+
{ 2, "Read" }
|
176
|
+
};
|
177
|
+
|
127
178
|
struct CSegment
|
128
179
|
{
|
129
180
|
UInt32 Type;
|
@@ -131,14 +182,14 @@ struct CSegment
|
|
131
182
|
UInt64 Offset;
|
132
183
|
UInt64 Va;
|
133
184
|
// UInt64 Pa;
|
134
|
-
UInt64
|
185
|
+
UInt64 Size;
|
135
186
|
UInt64 VSize;
|
136
|
-
|
187
|
+
UInt64 Align;
|
137
188
|
|
138
189
|
void UpdateTotalSize(UInt64 &totalSize)
|
139
190
|
{
|
140
|
-
UInt64 t = Offset +
|
141
|
-
if (
|
191
|
+
UInt64 t = Offset + Size;
|
192
|
+
if (totalSize < t)
|
142
193
|
totalSize = t;
|
143
194
|
}
|
144
195
|
void Parse(const Byte *p, bool mode64, bool be);
|
@@ -146,30 +197,169 @@ struct CSegment
|
|
146
197
|
|
147
198
|
void CSegment::Parse(const Byte *p, bool mode64, bool be)
|
148
199
|
{
|
149
|
-
|
200
|
+
G32(0, Type);
|
201
|
+
if (mode64)
|
202
|
+
{
|
203
|
+
G32(4, Flags);
|
204
|
+
G64(8, Offset);
|
205
|
+
G64(0x10, Va);
|
206
|
+
// G64(0x18, Pa);
|
207
|
+
G64(0x20, Size);
|
208
|
+
G64(0x28, VSize);
|
209
|
+
G64(0x30, Align);
|
210
|
+
}
|
211
|
+
else
|
212
|
+
{
|
213
|
+
G32(4, Offset);
|
214
|
+
G32(8, Va);
|
215
|
+
// G32(0x0C, Pa);
|
216
|
+
G32(0x10, Size);
|
217
|
+
G32(0x14, VSize);
|
218
|
+
G32(0x18, Flags);
|
219
|
+
G32(0x1C, Align);
|
220
|
+
}
|
221
|
+
}
|
222
|
+
|
223
|
+
// Section_index = 0 means NO section
|
224
|
+
|
225
|
+
#define SHN_UNDEF 0
|
226
|
+
|
227
|
+
// Section types
|
228
|
+
|
229
|
+
#define SHT_NULL 0
|
230
|
+
#define SHT_PROGBITS 1
|
231
|
+
#define SHT_SYMTAB 2
|
232
|
+
#define SHT_STRTAB 3
|
233
|
+
#define SHT_RELA 4
|
234
|
+
#define SHT_HASH 5
|
235
|
+
#define SHT_DYNAMIC 6
|
236
|
+
#define SHT_NOTE 7
|
237
|
+
#define SHT_NOBITS 8
|
238
|
+
#define SHT_REL 9
|
239
|
+
#define SHT_SHLIB 10
|
240
|
+
#define SHT_DYNSYM 11
|
241
|
+
#define SHT_UNKNOWN12 12
|
242
|
+
#define SHT_UNKNOWN13 13
|
243
|
+
#define SHT_INIT_ARRAY 14
|
244
|
+
#define SHT_FINI_ARRAY 15
|
245
|
+
#define SHT_PREINIT_ARRAY 16
|
246
|
+
#define SHT_GROUP 17
|
247
|
+
#define SHT_SYMTAB_SHNDX 18
|
248
|
+
|
249
|
+
|
250
|
+
static const CUInt32PCharPair g_SectTypes[] =
|
251
|
+
{
|
252
|
+
{ 0, "NULL" },
|
253
|
+
{ 1, "PROGBITS" },
|
254
|
+
{ 2, "SYMTAB" },
|
255
|
+
{ 3, "STRTAB" },
|
256
|
+
{ 4, "RELA" },
|
257
|
+
{ 5, "HASH" },
|
258
|
+
{ 6, "DYNAMIC" },
|
259
|
+
{ 7, "NOTE" },
|
260
|
+
{ 8, "NOBITS" },
|
261
|
+
{ 9, "REL" },
|
262
|
+
{ 10, "SHLIB" },
|
263
|
+
{ 11, "DYNSYM" },
|
264
|
+
{ 12, "UNKNOWN12" },
|
265
|
+
{ 13, "UNKNOWN13" },
|
266
|
+
{ 14, "INIT_ARRAY" },
|
267
|
+
{ 15, "FINI_ARRAY" },
|
268
|
+
{ 16, "PREINIT_ARRAY" },
|
269
|
+
{ 17, "GROUP" },
|
270
|
+
{ 18, "SYMTAB_SHNDX" },
|
271
|
+
{ 0x6ffffff5, "GNU_ATTRIBUTES" },
|
272
|
+
{ 0x6ffffff6, "GNU_HASH" },
|
273
|
+
{ 0x6ffffffd, "GNU_verdef" },
|
274
|
+
{ 0x6ffffffe, "GNU_verneed" },
|
275
|
+
{ 0x6fffffff, "GNU_versym" },
|
276
|
+
// { 0x70000001, "X86_64_UNWIND" },
|
277
|
+
{ 0x70000001, "ARM_EXIDX" },
|
278
|
+
{ 0x70000002, "ARM_PREEMPTMAP" },
|
279
|
+
{ 0x70000003, "ARM_ATTRIBUTES" },
|
280
|
+
{ 0x70000004, "ARM_DEBUGOVERLAY" },
|
281
|
+
{ 0x70000005, "ARM_OVERLAYSECTION" }
|
282
|
+
};
|
283
|
+
|
284
|
+
static const CUInt32PCharPair g_SectionFlags[] =
|
285
|
+
{
|
286
|
+
{ 0, "WRITE" },
|
287
|
+
{ 1, "ALLOC" },
|
288
|
+
{ 2, "EXECINSTR" },
|
289
|
+
|
290
|
+
{ 4, "MERGE" },
|
291
|
+
{ 5, "STRINGS" },
|
292
|
+
{ 6, "INFO_LINK" },
|
293
|
+
{ 7, "LINK_ORDER" },
|
294
|
+
{ 8, "OS_NONCONFORMING" },
|
295
|
+
{ 9, "GROUP" },
|
296
|
+
{ 10, "TLS" },
|
297
|
+
{ 11, "CP_SECTION" },
|
298
|
+
{ 12, "DP_SECTION" },
|
299
|
+
{ 13, "XCORE_SHF_CP_SECTION" },
|
300
|
+
{ 28, "64_LARGE" },
|
301
|
+
};
|
302
|
+
|
303
|
+
struct CSection
|
304
|
+
{
|
305
|
+
UInt32 Name;
|
306
|
+
UInt32 Type;
|
307
|
+
UInt64 Flags;
|
308
|
+
UInt64 Va;
|
309
|
+
UInt64 Offset;
|
310
|
+
UInt64 VSize;
|
311
|
+
UInt32 Link;
|
312
|
+
UInt32 Info;
|
313
|
+
UInt64 AddrAlign;
|
314
|
+
UInt64 EntSize;
|
315
|
+
|
316
|
+
UInt64 GetSize() const { return Type == SHT_NOBITS ? 0 : VSize; }
|
317
|
+
|
318
|
+
void UpdateTotalSize(UInt64 &totalSize)
|
319
|
+
{
|
320
|
+
UInt64 t = Offset + GetSize();
|
321
|
+
if (totalSize < t)
|
322
|
+
totalSize = t;
|
323
|
+
}
|
324
|
+
bool Parse(const Byte *p, bool mode64, bool be);
|
325
|
+
};
|
326
|
+
|
327
|
+
bool CSection::Parse(const Byte *p, bool mode64, bool be)
|
328
|
+
{
|
329
|
+
G32(0, Name);
|
330
|
+
G32(4, Type);
|
150
331
|
if (mode64)
|
151
332
|
{
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
333
|
+
G64(0x08, Flags);
|
334
|
+
G64(0x10, Va);
|
335
|
+
G64(0x18, Offset);
|
336
|
+
G64(0x20, VSize);
|
337
|
+
G32(0x28, Link);
|
338
|
+
G32(0x2C, Info);
|
339
|
+
G64(0x30, AddrAlign);
|
340
|
+
G64(0x38, EntSize);
|
159
341
|
}
|
160
342
|
else
|
161
343
|
{
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
344
|
+
G32(0x08, Flags);
|
345
|
+
G32(0x0C, Va);
|
346
|
+
G32(0x10, Offset);
|
347
|
+
G32(0x14, VSize);
|
348
|
+
G32(0x18, Link);
|
349
|
+
G32(0x1C, Info);
|
350
|
+
G32(0x20, AddrAlign);
|
351
|
+
G32(0x24, EntSize);
|
169
352
|
}
|
353
|
+
if (EntSize >= ((UInt32)1 << 31))
|
354
|
+
return false;
|
355
|
+
if (EntSize >= ((UInt32)1 << 10) &&
|
356
|
+
EntSize >= VSize &&
|
357
|
+
VSize != 0)
|
358
|
+
return false;
|
359
|
+
return true;
|
170
360
|
}
|
171
361
|
|
172
|
-
static const CUInt32PCharPair
|
362
|
+
static const CUInt32PCharPair g_Machines[] =
|
173
363
|
{
|
174
364
|
{ 0, "None" },
|
175
365
|
{ 1, "AT&T WE 32100" },
|
@@ -192,6 +382,7 @@ static const CUInt32PCharPair g_MachinePairs[] =
|
|
192
382
|
{ 20, "PowerPC" },
|
193
383
|
{ 21, "PowerPC 64-bit" },
|
194
384
|
{ 22, "IBM S/390" },
|
385
|
+
{ 23, "SPU" },
|
195
386
|
|
196
387
|
{ 36, "NEX v800" },
|
197
388
|
{ 37, "Fujitsu FR20" },
|
@@ -222,6 +413,7 @@ static const CUInt32PCharPair g_MachinePairs[] =
|
|
222
413
|
{ 62, "AMD64" },
|
223
414
|
{ 63, "Sony DSP" },
|
224
415
|
|
416
|
+
|
225
417
|
{ 66, "Siemens FX66" },
|
226
418
|
{ 67, "ST9+" },
|
227
419
|
{ 68, "ST7" },
|
@@ -251,15 +443,99 @@ static const CUInt32PCharPair g_MachinePairs[] =
|
|
251
443
|
{ 92, "OpenRISC" },
|
252
444
|
{ 93, "ARC Tangent-A5" },
|
253
445
|
{ 94, "Tensilica Xtensa" },
|
254
|
-
{
|
446
|
+
{ 95, "Alphamosaic VideoCore" },
|
447
|
+
{ 96, "Thompson MM GPP" },
|
448
|
+
{ 97, "National Semiconductor 32K" },
|
449
|
+
{ 98, "Tenor Network TPC" },
|
450
|
+
{ 99, "Trebia SNP 1000" },
|
451
|
+
{ 100, "ST200" },
|
452
|
+
{ 101, "Ubicom IP2xxx" },
|
453
|
+
{ 102, "MAX" },
|
454
|
+
{ 103, "NS CompactRISC" },
|
455
|
+
{ 104, "Fujitsu F2MC16" },
|
456
|
+
{ 105, "TI msp430" },
|
457
|
+
{ 106, "Blackfin (DSP)" },
|
458
|
+
{ 107, "SE S1C33" },
|
459
|
+
{ 108, "Sharp embedded" },
|
460
|
+
{ 109, "Arca RISC" },
|
461
|
+
{ 110, "Unicore" },
|
462
|
+
{ 111, "eXcess" },
|
463
|
+
{ 112, "DXP" },
|
464
|
+
{ 113, "Altera Nios II" },
|
465
|
+
{ 114, "NS CRX" },
|
466
|
+
{ 115, "Motorola XGATE" },
|
467
|
+
{ 116, "Infineon C16x/XC16x" },
|
468
|
+
{ 117, "Renesas M16C" },
|
469
|
+
{ 118, "Microchip Technology dsPIC30F" },
|
470
|
+
{ 119, "Freescale CE" },
|
471
|
+
{ 120, "Renesas M32C" },
|
472
|
+
|
473
|
+
{ 131, "Altium TSK3000" },
|
474
|
+
{ 132, "Freescale RS08" },
|
475
|
+
{ 133, "Analog Devices SHARC" },
|
476
|
+
{ 134, "Cyan Technology eCOG2" },
|
477
|
+
{ 135, "Sunplus S+core7 RISC" },
|
478
|
+
{ 136, "NJR 24-bit DSP" },
|
479
|
+
{ 137, "Broadcom VideoCore III" },
|
480
|
+
{ 138, "Lattice FPGA" },
|
481
|
+
{ 139, "SE C17" },
|
482
|
+
{ 140, "TI TMS320C6000" },
|
483
|
+
{ 141, "TI TMS320C2000" },
|
484
|
+
{ 142, "TI TMS320C55x" },
|
485
|
+
|
486
|
+
{ 160, "STM 64bit VLIW Data Signal" },
|
487
|
+
{ 161, "Cypress M8C" },
|
488
|
+
{ 162, "Renesas R32C" },
|
489
|
+
{ 163, "NXP TriMedia" },
|
490
|
+
{ 164, "Qualcomm Hexagon" },
|
491
|
+
{ 165, "Intel 8051" },
|
492
|
+
{ 166, "STMicroelectronics STxP7x" },
|
493
|
+
{ 167, "Andes" },
|
494
|
+
{ 168, "Cyan Technology eCOG1X" },
|
495
|
+
{ 169, "Dallas Semiconductor MAXQ30" },
|
496
|
+
{ 170, "NJR 16-bit DSP" },
|
497
|
+
{ 171, "M2000" },
|
498
|
+
{ 172, "Cray NV2" },
|
499
|
+
{ 173, "Renesas RX" },
|
500
|
+
{ 174, "Imagination Technologies META" },
|
501
|
+
{ 175, "MCST Elbrus" },
|
502
|
+
{ 176, "Cyan Technology eCOG16" },
|
503
|
+
{ 177, "National Semiconductor CR16" },
|
504
|
+
{ 178, "Freescale ETPUnit" },
|
505
|
+
{ 179, "Infineon SLE9X" },
|
506
|
+
{ 180, "Intel L10M" },
|
507
|
+
{ 181, "Intel K10M" },
|
508
|
+
|
509
|
+
{ 183, "ARM64" },
|
510
|
+
|
511
|
+
{ 185, "Atmel AVR32" },
|
512
|
+
{ 186, "STM8" },
|
513
|
+
{ 187, "Tilera TILE64" },
|
514
|
+
{ 188, "Tilera TILEPro" },
|
515
|
+
{ 189, "Xilinx MicroBlaze" },
|
516
|
+
{ 190, "NVIDIA CUDA" },
|
517
|
+
{ 191, "Tilera TILE-Gx" },
|
518
|
+
{ 192, "CloudShield" },
|
519
|
+
{ 193, "KIPO-KAIST Core-A 1st" },
|
520
|
+
{ 194, "KIPO-KAIST Core-A 2nd" },
|
521
|
+
{ 195, "Synopsys ARCompact V2" },
|
522
|
+
{ 196, "Open8" },
|
523
|
+
{ 197, "Renesas RL78" },
|
524
|
+
{ 198, "Broadcom VideoCore V" },
|
525
|
+
{ 199, "Renesas 78KOR" },
|
526
|
+
{ 200, "Freescale 56800EX" },
|
527
|
+
|
528
|
+
{ 47787, "Xilinx MicroBlaze" },
|
529
|
+
// { 0x9026, "Alpha" }
|
255
530
|
};
|
256
531
|
|
257
|
-
static const CUInt32PCharPair
|
532
|
+
static const CUInt32PCharPair g_OS[] =
|
258
533
|
{
|
259
534
|
{ 0, "None" },
|
260
535
|
{ 1, "HP-UX" },
|
261
536
|
{ 2, "NetBSD" },
|
262
537
|
{ 3, "Linux" },
|
538
|
+
{ 4, "Hurd" },
|
263
539
|
|
264
540
|
{ 6, "Solaris" },
|
265
541
|
{ 7, "AIX" },
|
@@ -271,16 +547,18 @@ static const CUInt32PCharPair g_AbiOS[] =
|
|
271
547
|
{ 13, "OpenVMS" },
|
272
548
|
{ 14, "HP NSK" },
|
273
549
|
{ 15, "AROS" },
|
550
|
+
{ 16, "FenixOS" },
|
551
|
+
{ 64, "Bare-metal TMS320C6000" },
|
552
|
+
{ 65, "Linux TMS320C6000" },
|
274
553
|
{ 97, "ARM" },
|
275
554
|
{ 255, "Standalone" }
|
276
555
|
};
|
277
556
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
};
|
557
|
+
#define ET_NONE 0
|
558
|
+
#define ET_REL 1
|
559
|
+
#define ET_EXEC 2
|
560
|
+
#define ET_DYN 3
|
561
|
+
#define ET_CORE 4
|
284
562
|
|
285
563
|
static const char *g_Types[] =
|
286
564
|
{
|
@@ -291,101 +569,119 @@ static const char *g_Types[] =
|
|
291
569
|
"Core file"
|
292
570
|
};
|
293
571
|
|
294
|
-
static const char *g_SegnmentTypes[] =
|
295
|
-
{
|
296
|
-
"Unused",
|
297
|
-
"Loadable segment",
|
298
|
-
"Dynamic linking tables",
|
299
|
-
"Program interpreter path name",
|
300
|
-
"Note section",
|
301
|
-
"SHLIB",
|
302
|
-
"Program header table",
|
303
|
-
"TLS"
|
304
|
-
};
|
305
|
-
|
306
572
|
class CHandler:
|
307
573
|
public IInArchive,
|
574
|
+
public IArchiveAllowTail,
|
308
575
|
public CMyUnknownImp
|
309
576
|
{
|
577
|
+
CRecordVector<CSegment> _segments;
|
578
|
+
CRecordVector<CSection> _sections;
|
579
|
+
CByteBuffer _namesData;
|
310
580
|
CMyComPtr<IInStream> _inStream;
|
311
|
-
CObjectVector<CSegment> _sections;
|
312
|
-
UInt32 _peOffset;
|
313
|
-
CHeader _header;
|
314
581
|
UInt64 _totalSize;
|
582
|
+
CHeader _header;
|
583
|
+
bool _headersError;
|
584
|
+
bool _allowTail;
|
585
|
+
|
586
|
+
void GetSectionName(UInt32 index, NCOM::CPropVariant &prop, bool showNULL) const;
|
315
587
|
HRESULT Open2(IInStream *stream);
|
316
|
-
bool Parse(const Byte *buf, UInt32 size);
|
317
588
|
public:
|
318
|
-
|
589
|
+
MY_UNKNOWN_IMP2(IInArchive, IArchiveAllowTail)
|
319
590
|
INTERFACE_IInArchive(;)
|
320
|
-
|
591
|
+
STDMETHOD(AllowTail)(Int32 allowTail);
|
321
592
|
|
322
|
-
|
593
|
+
CHandler(): _allowTail(false) {}
|
594
|
+
};
|
323
595
|
|
324
|
-
|
596
|
+
void CHandler::GetSectionName(UInt32 index, NCOM::CPropVariant &prop, bool showNULL) const
|
325
597
|
{
|
326
|
-
if (
|
327
|
-
return
|
328
|
-
|
329
|
-
|
330
|
-
if (
|
331
|
-
_header.ProgOffset + (UInt64)_header.SegmentEntrySize * _header.NumSegments > size ||
|
332
|
-
_header.NumSegments > NUM_SCAN_SECTIONS_MAX)
|
333
|
-
return false;
|
334
|
-
const Byte *p = buf + _header.ProgOffset;
|
335
|
-
_totalSize = _header.ProgOffset;
|
336
|
-
|
337
|
-
for (int i = 0; i < _header.NumSegments; i++, p += _header.SegmentEntrySize)
|
598
|
+
if (index >= _sections.Size())
|
599
|
+
return;
|
600
|
+
const CSection §ion = _sections[index];
|
601
|
+
UInt32 offset = section.Name;
|
602
|
+
if (index == SHN_UNDEF /* && section.Type == SHT_NULL && offset == 0 */)
|
338
603
|
{
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
if (sect.Type != ELF_PT_PHDR)
|
343
|
-
_sections.Add(sect);
|
604
|
+
if (showNULL)
|
605
|
+
prop = "NULL";
|
606
|
+
return;
|
344
607
|
}
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
608
|
+
const Byte *p = _namesData;
|
609
|
+
size_t size = _namesData.Size();
|
610
|
+
for (size_t i = offset; i < size; i++)
|
611
|
+
if (p[i] == 0)
|
612
|
+
{
|
613
|
+
prop = (const char *)(p + offset);
|
614
|
+
return;
|
615
|
+
}
|
349
616
|
}
|
350
617
|
|
351
|
-
|
618
|
+
static const Byte kArcProps[] =
|
619
|
+
{
|
620
|
+
kpidCpu,
|
621
|
+
kpidBit64,
|
622
|
+
kpidBigEndian,
|
623
|
+
kpidHostOS,
|
624
|
+
kpidCharacts,
|
625
|
+
kpidHeadersSize,
|
626
|
+
kpidName
|
627
|
+
};
|
628
|
+
|
629
|
+
enum
|
352
630
|
{
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
{ NULL, kpidPhySize, VT_UI8},
|
359
|
-
{ NULL, kpidHeadersSize, VT_UI8}
|
360
|
-
};
|
361
|
-
|
362
|
-
STATPROPSTG kProps[] =
|
631
|
+
kpidLinkSection = kpidUserDefined,
|
632
|
+
kpidInfoSection
|
633
|
+
};
|
634
|
+
|
635
|
+
static const CStatProp kProps[] =
|
363
636
|
{
|
364
|
-
{ NULL, kpidPath, VT_BSTR},
|
365
|
-
{ NULL, kpidSize, VT_UI8},
|
366
|
-
{ NULL,
|
367
|
-
{ NULL,
|
368
|
-
{ NULL,
|
369
|
-
{ NULL,
|
370
|
-
{ NULL,
|
637
|
+
{ NULL, kpidPath, VT_BSTR },
|
638
|
+
{ NULL, kpidSize, VT_UI8 },
|
639
|
+
{ NULL, kpidVirtualSize, VT_UI8 },
|
640
|
+
{ NULL, kpidOffset, VT_UI8 },
|
641
|
+
{ NULL, kpidVa, VT_UI8 },
|
642
|
+
{ NULL, kpidType, VT_BSTR },
|
643
|
+
{ NULL, kpidCharacts, VT_BSTR }
|
644
|
+
, { "Link Section", kpidLinkSection, VT_BSTR}
|
645
|
+
, { "Info Section", kpidInfoSection, VT_BSTR}
|
371
646
|
};
|
372
647
|
|
373
|
-
|
648
|
+
IMP_IInArchive_Props_WITH_NAME
|
374
649
|
IMP_IInArchive_ArcProps
|
375
650
|
|
376
651
|
STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
|
377
652
|
{
|
378
653
|
COM_TRY_BEGIN
|
379
654
|
NCOM::CPropVariant prop;
|
380
|
-
switch(propID)
|
655
|
+
switch (propID)
|
381
656
|
{
|
382
|
-
case kpidPhySize:
|
383
|
-
case kpidHeadersSize:
|
384
|
-
case kpidBit64:
|
385
|
-
case kpidBigEndian:
|
386
|
-
case
|
387
|
-
case
|
388
|
-
case
|
657
|
+
case kpidPhySize: prop = _totalSize; break;
|
658
|
+
case kpidHeadersSize: prop = _header.GetHeadersSize(); break;
|
659
|
+
case kpidBit64: if (_header.Mode64) prop = _header.Mode64; break;
|
660
|
+
case kpidBigEndian: if (_header.Be) prop = _header.Be; break;
|
661
|
+
case kpidShortComment:
|
662
|
+
case kpidCpu: PAIR_TO_PROP(g_Machines, _header.Machine, prop); break;
|
663
|
+
case kpidHostOS: PAIR_TO_PROP(g_OS, _header.Os, prop); break;
|
664
|
+
case kpidCharacts: TYPE_TO_PROP(g_Types, _header.Type, prop); break;
|
665
|
+
case kpidExtension:
|
666
|
+
{
|
667
|
+
const char *s = NULL;
|
668
|
+
if (_header.Type == ET_DYN)
|
669
|
+
s = "so";
|
670
|
+
else if (_header.Type == ET_REL)
|
671
|
+
s = "o";
|
672
|
+
if (s)
|
673
|
+
prop = s;
|
674
|
+
break;
|
675
|
+
}
|
676
|
+
// case kpidIsSelfExe: prop = (_header.Type != ET_DYN) && (_header.Type == ET_REL); break;
|
677
|
+
case kpidErrorFlags:
|
678
|
+
{
|
679
|
+
UInt32 flags = 0;
|
680
|
+
if (_headersError) flags |= kpv_ErrorFlags_HeadersError;
|
681
|
+
if (flags != 0)
|
682
|
+
prop = flags;
|
683
|
+
break;
|
684
|
+
}
|
389
685
|
}
|
390
686
|
prop.Detach(value);
|
391
687
|
return S_OK;
|
@@ -396,22 +692,45 @@ STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *val
|
|
396
692
|
{
|
397
693
|
COM_TRY_BEGIN
|
398
694
|
NCOM::CPropVariant prop;
|
399
|
-
|
400
|
-
switch(propID)
|
695
|
+
if (index < _segments.Size())
|
401
696
|
{
|
402
|
-
|
697
|
+
const CSegment &item = _segments[index];
|
698
|
+
switch (propID)
|
403
699
|
{
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
700
|
+
case kpidPath:
|
701
|
+
{
|
702
|
+
char sz[16];
|
703
|
+
ConvertUInt32ToString(index, sz);
|
704
|
+
prop = sz;
|
705
|
+
break;
|
706
|
+
}
|
707
|
+
case kpidOffset: prop = item.Offset; break;
|
708
|
+
case kpidVa: prop = item.Va; break;
|
709
|
+
case kpidSize:
|
710
|
+
case kpidPackSize: prop = (UInt64)item.Size; break;
|
711
|
+
case kpidVirtualSize: prop = (UInt64)item.VSize; break;
|
712
|
+
case kpidType: TYPE_TO_PROP(g_SegnmentTypes, item.Type, prop); break;
|
713
|
+
case kpidCharacts: FLAGS_TO_PROP(g_SegmentFlags, item.Flags, prop); break;
|
714
|
+
|
715
|
+
}
|
716
|
+
}
|
717
|
+
else
|
718
|
+
{
|
719
|
+
index -= _segments.Size();
|
720
|
+
const CSection &item = _sections[index];
|
721
|
+
switch (propID)
|
722
|
+
{
|
723
|
+
case kpidPath: GetSectionName(index, prop, true); break;
|
724
|
+
case kpidOffset: prop = item.Offset; break;
|
725
|
+
case kpidVa: prop = item.Va; break;
|
726
|
+
case kpidSize:
|
727
|
+
case kpidPackSize: prop = (UInt64)(item.Type == SHT_NOBITS ? 0 : item.VSize); break;
|
728
|
+
case kpidVirtualSize: prop = item.GetSize(); break;
|
729
|
+
case kpidType: PAIR_TO_PROP(g_SectTypes, item.Type, prop); break;
|
730
|
+
case kpidCharacts: FLAGS_TO_PROP(g_SectionFlags, (UInt32)item.Flags, prop); break;
|
731
|
+
case kpidLinkSection: GetSectionName(item.Link, prop, false); break;
|
732
|
+
case kpidInfoSection: GetSectionName(item.Info, prop, false); break;
|
408
733
|
}
|
409
|
-
case kpidSize: prop = (UInt64)item.VSize; break;
|
410
|
-
case kpidPackSize: prop = (UInt64)item.PSize; break;
|
411
|
-
case kpidOffset: prop = item.Offset; break;
|
412
|
-
case kpidVa: prop = item.Va; break;
|
413
|
-
case kpidType: TYPE_TO_PROP(g_SegnmentTypes, item.Type, prop); break;
|
414
|
-
case kpidCharacts: FLAGS_TO_PROP(g_SegmentFlags, item.Flags, prop); break;
|
415
734
|
}
|
416
735
|
prop.Detach(value);
|
417
736
|
return S_OK;
|
@@ -420,25 +739,118 @@ STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *val
|
|
420
739
|
|
421
740
|
HRESULT CHandler::Open2(IInStream *stream)
|
422
741
|
{
|
423
|
-
const UInt32
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
buffer.SetCapacity(kBufSize);
|
428
|
-
Byte *buf = buffer;
|
429
|
-
|
430
|
-
size_t processed = kSigSize;
|
431
|
-
RINOK(ReadStream_FALSE(stream, buf, processed));
|
432
|
-
if (buf[0] != 0x7F || buf[1] != 'E' || buf[2] != 'L' || buf[3] != 'F')
|
742
|
+
const UInt32 kStartSize = kHeaderSize64;
|
743
|
+
Byte h[kStartSize];
|
744
|
+
RINOK(ReadStream_FALSE(stream, h, kStartSize));
|
745
|
+
if (h[0] != 0x7F || h[1] != 'E' || h[2] != 'L' || h[3] != 'F')
|
433
746
|
return S_FALSE;
|
434
|
-
|
435
|
-
RINOK(ReadStream(stream, buf + kSigSize, &processed));
|
436
|
-
processed += kSigSize;
|
437
|
-
if (!Parse(buf, (UInt32)processed))
|
747
|
+
if (!_header.Parse(h))
|
438
748
|
return S_FALSE;
|
439
|
-
|
440
|
-
|
441
|
-
|
749
|
+
|
750
|
+
_totalSize = _header.HeaderSize;
|
751
|
+
|
752
|
+
bool addSegments = false;
|
753
|
+
bool addSections = false;
|
754
|
+
|
755
|
+
if (_header.NumSections > 1)
|
756
|
+
addSections = true;
|
757
|
+
else
|
758
|
+
addSegments = true;
|
759
|
+
|
760
|
+
if (_header.NumSegments != 0)
|
761
|
+
{
|
762
|
+
if (_header.ProgOffset > (UInt64)1 << 60) return S_FALSE;
|
763
|
+
RINOK(stream->Seek(_header.ProgOffset, STREAM_SEEK_SET, NULL));
|
764
|
+
size_t size = (size_t)_header.SegmentEntrySize * _header.NumSegments;
|
765
|
+
|
766
|
+
CByteArr buf(size);
|
767
|
+
|
768
|
+
RINOK(ReadStream_FALSE(stream, buf, size));
|
769
|
+
|
770
|
+
UInt64 total = _header.ProgOffset + size;
|
771
|
+
if (_totalSize < total)
|
772
|
+
_totalSize = total;
|
773
|
+
|
774
|
+
const Byte *p = buf;
|
775
|
+
|
776
|
+
if (addSegments)
|
777
|
+
_segments.ClearAndReserve(_header.NumSegments);
|
778
|
+
for (unsigned i = 0; i < _header.NumSegments; i++, p += _header.SegmentEntrySize)
|
779
|
+
{
|
780
|
+
CSegment seg;
|
781
|
+
seg.Parse(p, _header.Mode64, _header.Be);
|
782
|
+
seg.UpdateTotalSize(_totalSize);
|
783
|
+
if (addSegments)
|
784
|
+
if (seg.Type != PT_PHDR)
|
785
|
+
_segments.AddInReserved(seg);
|
786
|
+
}
|
787
|
+
}
|
788
|
+
|
789
|
+
if (_header.NumSections != 0)
|
790
|
+
{
|
791
|
+
if (_header.SectOffset > (UInt64)1 << 60) return S_FALSE;
|
792
|
+
RINOK(stream->Seek(_header.SectOffset, STREAM_SEEK_SET, NULL));
|
793
|
+
size_t size = (size_t)_header.SectionEntrySize * _header.NumSections;
|
794
|
+
|
795
|
+
CByteArr buf(size);
|
796
|
+
|
797
|
+
RINOK(ReadStream_FALSE(stream, buf, size));
|
798
|
+
|
799
|
+
UInt64 total = _header.SectOffset + size;
|
800
|
+
if (_totalSize < total)
|
801
|
+
_totalSize = total;
|
802
|
+
|
803
|
+
const Byte *p = buf;
|
804
|
+
|
805
|
+
if (addSections)
|
806
|
+
_sections.ClearAndReserve(_header.NumSections);
|
807
|
+
for (unsigned i = 0; i < _header.NumSections; i++, p += _header.SectionEntrySize)
|
808
|
+
{
|
809
|
+
CSection sect;
|
810
|
+
if (!sect.Parse(p, _header.Mode64, _header.Be))
|
811
|
+
{
|
812
|
+
_headersError = true;
|
813
|
+
return S_FALSE;
|
814
|
+
}
|
815
|
+
sect.UpdateTotalSize(_totalSize);
|
816
|
+
if (addSections)
|
817
|
+
_sections.AddInReserved(sect);
|
818
|
+
}
|
819
|
+
}
|
820
|
+
|
821
|
+
if (addSections)
|
822
|
+
{
|
823
|
+
if (_header.NamesSectIndex < _sections.Size())
|
824
|
+
{
|
825
|
+
const CSection § = _sections[_header.NamesSectIndex];
|
826
|
+
UInt64 size = sect.GetSize();
|
827
|
+
if (size != 0
|
828
|
+
&& size < ((UInt64)1 << 31)
|
829
|
+
&& (Int64)sect.Offset >= 0)
|
830
|
+
{
|
831
|
+
_namesData.Alloc((size_t)size);
|
832
|
+
RINOK(stream->Seek(sect.Offset, STREAM_SEEK_SET, NULL));
|
833
|
+
RINOK(ReadStream_FALSE(stream, _namesData, (size_t)size));
|
834
|
+
}
|
835
|
+
}
|
836
|
+
|
837
|
+
/*
|
838
|
+
// we will not delete NULL sections, since we have links to section via indexes
|
839
|
+
for (int i = _sections.Size() - 1; i >= 0; i--)
|
840
|
+
if (_sections[i].Type == SHT_NULL)
|
841
|
+
_items.Delete(i);
|
842
|
+
*/
|
843
|
+
}
|
844
|
+
|
845
|
+
if (!_allowTail)
|
846
|
+
{
|
847
|
+
UInt64 fileSize;
|
848
|
+
RINOK(stream->Seek(0, STREAM_SEEK_END, &fileSize));
|
849
|
+
if (fileSize > _totalSize)
|
850
|
+
return S_FALSE;
|
851
|
+
}
|
852
|
+
|
853
|
+
return S_OK;
|
442
854
|
}
|
443
855
|
|
444
856
|
STDMETHODIMP CHandler::Open(IInStream *inStream,
|
@@ -455,14 +867,19 @@ STDMETHODIMP CHandler::Open(IInStream *inStream,
|
|
455
867
|
|
456
868
|
STDMETHODIMP CHandler::Close()
|
457
869
|
{
|
870
|
+
_totalSize = 0;
|
871
|
+
_headersError = false;
|
872
|
+
|
458
873
|
_inStream.Release();
|
874
|
+
_segments.Clear();
|
459
875
|
_sections.Clear();
|
876
|
+
_namesData.Free();
|
460
877
|
return S_OK;
|
461
878
|
}
|
462
879
|
|
463
880
|
STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
|
464
881
|
{
|
465
|
-
*numItems = _sections.Size();
|
882
|
+
*numItems = _segments.Size() + _sections.Size();
|
466
883
|
return S_OK;
|
467
884
|
}
|
468
885
|
|
@@ -470,15 +887,20 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
470
887
|
Int32 testMode, IArchiveExtractCallback *extractCallback)
|
471
888
|
{
|
472
889
|
COM_TRY_BEGIN
|
473
|
-
bool allFilesMode = (numItems == (UInt32)-1);
|
890
|
+
bool allFilesMode = (numItems == (UInt32)(Int32)-1);
|
474
891
|
if (allFilesMode)
|
475
|
-
numItems = _sections.Size();
|
892
|
+
numItems = _segments.Size() + _sections.Size();
|
476
893
|
if (numItems == 0)
|
477
894
|
return S_OK;
|
478
895
|
UInt64 totalSize = 0;
|
479
896
|
UInt32 i;
|
480
897
|
for (i = 0; i < numItems; i++)
|
481
|
-
|
898
|
+
{
|
899
|
+
UInt32 index = allFilesMode ? i : indices[i];
|
900
|
+
totalSize += (index < _segments.Size()) ?
|
901
|
+
_segments[index].Size :
|
902
|
+
_sections[index - _segments.Size()].GetSize();
|
903
|
+
}
|
482
904
|
extractCallback->SetTotal(totalSize);
|
483
905
|
|
484
906
|
UInt64 currentTotalSize = 0;
|
@@ -503,8 +925,19 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
503
925
|
NExtract::NAskMode::kTest :
|
504
926
|
NExtract::NAskMode::kExtract;
|
505
927
|
UInt32 index = allFilesMode ? i : indices[i];
|
506
|
-
|
507
|
-
|
928
|
+
UInt64 offset;
|
929
|
+
if (index < _segments.Size())
|
930
|
+
{
|
931
|
+
const CSegment &item = _segments[index];
|
932
|
+
currentItemSize = item.Size;
|
933
|
+
offset = item.Offset;
|
934
|
+
}
|
935
|
+
else
|
936
|
+
{
|
937
|
+
const CSection &item = _sections[index - _segments.Size()];
|
938
|
+
currentItemSize = item.GetSize();
|
939
|
+
offset = item.Offset;
|
940
|
+
}
|
508
941
|
|
509
942
|
CMyComPtr<ISequentialOutStream> outStream;
|
510
943
|
RINOK(extractCallback->GetStream(index, &outStream, askMode));
|
@@ -512,7 +945,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
512
945
|
continue;
|
513
946
|
|
514
947
|
RINOK(extractCallback->PrepareOperation(askMode));
|
515
|
-
RINOK(_inStream->Seek(
|
948
|
+
RINOK(_inStream->Seek(offset, STREAM_SEEK_SET, NULL));
|
516
949
|
streamSpec->Init(currentItemSize);
|
517
950
|
RINOK(copyCoder->Code(inStream, outStream, NULL, NULL, progress));
|
518
951
|
outStream.Release();
|
@@ -524,11 +957,19 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
524
957
|
COM_TRY_END
|
525
958
|
}
|
526
959
|
|
527
|
-
|
960
|
+
STDMETHODIMP CHandler::AllowTail(Int32 allowTail)
|
961
|
+
{
|
962
|
+
_allowTail = IntToBool(allowTail);
|
963
|
+
return S_OK;
|
964
|
+
}
|
528
965
|
|
529
|
-
static
|
530
|
-
{ L"ELF", L"", 0, 0xDE, { 0 }, 0, false, CreateArc, 0 };
|
966
|
+
static const Byte k_Signature[] = { 0x7F, 'E', 'L', 'F' };
|
531
967
|
|
532
|
-
|
968
|
+
REGISTER_ARC_I(
|
969
|
+
"ELF", "elf", 0, 0xDE,
|
970
|
+
k_Signature,
|
971
|
+
0,
|
972
|
+
NArcInfoFlags::kPreArc,
|
973
|
+
NULL)
|
533
974
|
|
534
975
|
}}
|