seven_zip_ruby 1.0.0
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 +7 -0
- data/.gitignore +25 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +39 -0
- data/README.md +176 -0
- data/Rakefile +47 -0
- data/ext/C/Types.h +254 -0
- data/ext/CPP/7zip/Archive/IArchive.h +234 -0
- data/ext/CPP/7zip/IDecl.h +15 -0
- data/ext/CPP/7zip/IPassword.h +24 -0
- data/ext/CPP/7zip/IProgress.h +33 -0
- data/ext/CPP/7zip/IStream.h +58 -0
- data/ext/CPP/7zip/PropID.h +76 -0
- data/ext/CPP/Common/MyCom.h +225 -0
- data/ext/CPP/Common/MyGuidDef.h +54 -0
- data/ext/CPP/Common/MyInitGuid.h +22 -0
- data/ext/CPP/Common/MyUnknown.h +13 -0
- data/ext/CPP/Common/MyWindows.h +204 -0
- data/ext/CPP/Common/Types.h +11 -0
- data/ext/CPP/Windows/PropVariant.h +56 -0
- data/ext/CPP/include_windows/basetyps.h +19 -0
- data/ext/CPP/include_windows/tchar.h +89 -0
- data/ext/CPP/include_windows/windows.h +194 -0
- data/ext/p7zip/Asm/x64/7zCrcT8U.asm +103 -0
- data/ext/p7zip/Asm/x86/7zCrcT8U.asm +101 -0
- data/ext/p7zip/C/7zBuf.h +39 -0
- data/ext/p7zip/C/7zBuf2.c +45 -0
- data/ext/p7zip/C/7zCrc.c +76 -0
- data/ext/p7zip/C/7zCrc.h +25 -0
- data/ext/p7zip/C/7zCrcOpt.c +34 -0
- data/ext/p7zip/C/7zCrcT8.c +43 -0
- data/ext/p7zip/C/7zStream.c +169 -0
- data/ext/p7zip/C/7zVersion.h +7 -0
- data/ext/p7zip/C/Aes.c +284 -0
- data/ext/p7zip/C/Aes.h +38 -0
- data/ext/p7zip/C/Alloc.back3 +238 -0
- data/ext/p7zip/C/Alloc.c +280 -0
- data/ext/p7zip/C/Alloc.c.back +243 -0
- data/ext/p7zip/C/Alloc.c.back2 +222 -0
- data/ext/p7zip/C/Alloc.h +27 -0
- data/ext/p7zip/C/Bra.c +133 -0
- data/ext/p7zip/C/Bra.h +68 -0
- data/ext/p7zip/C/Bra86.c +85 -0
- data/ext/p7zip/C/BraIA64.c +67 -0
- data/ext/p7zip/C/BwtSort.c +516 -0
- data/ext/p7zip/C/BwtSort.h +30 -0
- data/ext/p7zip/C/CpuArch.c +168 -0
- data/ext/p7zip/C/CpuArch.h +155 -0
- data/ext/p7zip/C/Delta.c +62 -0
- data/ext/p7zip/C/Delta.h +23 -0
- data/ext/p7zip/C/HuffEnc.c +146 -0
- data/ext/p7zip/C/HuffEnc.h +27 -0
- data/ext/p7zip/C/LzFind.c +761 -0
- data/ext/p7zip/C/LzFind.h +115 -0
- data/ext/p7zip/C/LzFindMt.c +793 -0
- data/ext/p7zip/C/LzFindMt.h +105 -0
- data/ext/p7zip/C/LzHash.h +54 -0
- data/ext/p7zip/C/Lzma2Dec.c +356 -0
- data/ext/p7zip/C/Lzma2Dec.h +84 -0
- data/ext/p7zip/C/Lzma2Enc.c +477 -0
- data/ext/p7zip/C/Lzma2Enc.h +66 -0
- data/ext/p7zip/C/LzmaDec.c +999 -0
- data/ext/p7zip/C/LzmaDec.h +231 -0
- data/ext/p7zip/C/LzmaEnc.c +2268 -0
- data/ext/p7zip/C/LzmaEnc.h +80 -0
- data/ext/p7zip/C/LzmaUtil/Lzma86Dec.c +61 -0
- data/ext/p7zip/C/LzmaUtil/Lzma86Dec.h +51 -0
- data/ext/p7zip/C/LzmaUtil/Lzma86Enc.c +113 -0
- data/ext/p7zip/C/LzmaUtil/Lzma86Enc.h +78 -0
- data/ext/p7zip/C/MtCoder.c +327 -0
- data/ext/p7zip/C/MtCoder.h +98 -0
- data/ext/p7zip/C/Ppmd.h +85 -0
- data/ext/p7zip/C/Ppmd7.c +708 -0
- data/ext/p7zip/C/Ppmd7.h +140 -0
- data/ext/p7zip/C/Ppmd7Dec.c +187 -0
- data/ext/p7zip/C/Ppmd7Enc.c +185 -0
- data/ext/p7zip/C/Ppmd8.c +1120 -0
- data/ext/p7zip/C/Ppmd8.h +133 -0
- data/ext/p7zip/C/Ppmd8Dec.c +155 -0
- data/ext/p7zip/C/Ppmd8Enc.c +161 -0
- data/ext/p7zip/C/RotateDefs.h +20 -0
- data/ext/p7zip/C/Sha256.c +204 -0
- data/ext/p7zip/C/Sha256.h +26 -0
- data/ext/p7zip/C/Sort.c +93 -0
- data/ext/p7zip/C/Sort.h +20 -0
- data/ext/p7zip/C/Threads.c +582 -0
- data/ext/p7zip/C/Threads.h +123 -0
- data/ext/p7zip/C/Types.h +254 -0
- data/ext/p7zip/C/Xz.c +88 -0
- data/ext/p7zip/C/Xz.h +252 -0
- data/ext/p7zip/C/XzCrc64.c +33 -0
- data/ext/p7zip/C/XzCrc64.h +26 -0
- data/ext/p7zip/C/XzDec.c +875 -0
- data/ext/p7zip/C/XzEnc.c +497 -0
- data/ext/p7zip/C/XzEnc.h +25 -0
- data/ext/p7zip/C/XzIn.c +306 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +50 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.cpp +332 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.h +68 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.cpp +444 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.h +55 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zExtract.cpp +270 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +123 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +58 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.cpp +149 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.h +58 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.cpp +482 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.h +119 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +483 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.cpp +14 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.h +97 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.cpp +1276 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.h +245 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zItem.h +268 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.cpp +866 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.h +152 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.cpp +164 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.h +22 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zRegister.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +24 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.h +35 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +1216 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.h +88 -0
- data/ext/p7zip/CPP/7zip/Archive/ApmHandler.cpp +356 -0
- data/ext/p7zip/CPP/7zip/Archive/ArchiveExports.cpp +135 -0
- data/ext/p7zip/CPP/7zip/Archive/ArjHandler.cpp +798 -0
- data/ext/p7zip/CPP/7zip/Archive/Bz2Handler.cpp +423 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +189 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +44 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +929 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.h +28 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.h +44 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.cpp +272 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.h +161 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabItem.h +63 -0
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +721 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.h +29 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.cpp +24 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.h +28 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +937 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.h +244 -0
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.cpp +239 -0
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.h +28 -0
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.cpp +389 -0
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.h +119 -0
- data/ext/p7zip/CPP/7zip/Archive/Com/ComRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +121 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.h +174 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.cpp +240 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.h +80 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.cpp +239 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.h +88 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.cpp +15 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.h +37 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +22 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.h +24 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.cpp +62 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +623 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.h +87 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +42 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +67 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +61 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +24 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.cpp +190 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.h +84 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +36 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +36 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +177 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.h +18 -0
- data/ext/p7zip/CPP/7zip/Archive/CpioHandler.cpp +624 -0
- data/ext/p7zip/CPP/7zip/Archive/CramfsHandler.cpp +644 -0
- data/ext/p7zip/CPP/7zip/Archive/DebHandler.cpp +413 -0
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.cpp +118 -0
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.h +35 -0
- data/ext/p7zip/CPP/7zip/Archive/DllExports2.cpp +76 -0
- data/ext/p7zip/CPP/7zip/Archive/DmgHandler.cpp +918 -0
- data/ext/p7zip/CPP/7zip/Archive/ElfHandler.cpp +534 -0
- data/ext/p7zip/CPP/7zip/Archive/FatHandler.cpp +996 -0
- data/ext/p7zip/CPP/7zip/Archive/FlvHandler.cpp +544 -0
- data/ext/p7zip/CPP/7zip/Archive/GzHandler.cpp +698 -0
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.cpp +243 -0
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.h +26 -0
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.cpp +480 -0
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.h +154 -0
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/IArchive.h +234 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +326 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.h +30 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +21 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.h +61 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +453 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.h +315 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoItem.h +141 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/LzhHandler.cpp +775 -0
- data/ext/p7zip/CPP/7zip/Archive/LzmaHandler.cpp +430 -0
- data/ext/p7zip/CPP/7zip/Archive/MachoHandler.cpp +500 -0
- data/ext/p7zip/CPP/7zip/Archive/MbrHandler.cpp +507 -0
- data/ext/p7zip/CPP/7zip/Archive/MslzHandler.cpp +257 -0
- data/ext/p7zip/CPP/7zip/Archive/MubHandler.cpp +266 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +130 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +47 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +510 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +43 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +1461 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.h +181 -0
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/NtfsHandler.cpp +1764 -0
- data/ext/p7zip/CPP/7zip/Archive/PeHandler.cpp +1752 -0
- data/ext/p7zip/CPP/7zip/Archive/PpmdHandler.cpp +456 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +869 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.h +66 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.cpp +21 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.h +205 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.cpp +478 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.h +123 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.cpp +55 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.h +79 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp +78 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.h +49 -0
- data/ext/p7zip/CPP/7zip/Archive/RpmHandler.cpp +292 -0
- data/ext/p7zip/CPP/7zip/Archive/SplitHandler.cpp +366 -0
- data/ext/p7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2155 -0
- data/ext/p7zip/CPP/7zip/Archive/SwfHandler.cpp +706 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +386 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.h +61 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +122 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +25 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.h +108 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.cpp +207 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.h +17 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarItem.h +72 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.cpp +187 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.h +28 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +139 -0
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.h +34 -0
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +451 -0
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.h +37 -0
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +876 -0
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.h +375 -0
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfRegister.cpp +13 -0
- data/ext/p7zip/CPP/7zip/Archive/VhdHandler.cpp +734 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +660 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.h +77 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +639 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.cpp +855 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.h +297 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/XarHandler.cpp +588 -0
- data/ext/p7zip/CPP/7zip/Archive/XzHandler.cpp +707 -0
- data/ext/p7zip/CPP/7zip/Archive/ZHandler.cpp +161 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +379 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +56 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +42 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +822 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.h +101 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +537 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.cpp +36 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.h +284 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +893 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.h +125 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +181 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.h +281 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItemEx.h +34 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +289 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.h +56 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +1076 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +58 -0
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile +328 -0
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.depend +4962 -0
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.list +265 -0
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zFM.txt +163 -0
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zG.txt +131 -0
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7za.txt +253 -0
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_ALL.txt +32 -0
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_Format7zFree.txt +290 -0
- data/ext/p7zip/CPP/7zip/CMAKE/generate.sh +37 -0
- data/ext/p7zip/CPP/7zip/CMAKE/generate_xcode.sh +32 -0
- data/ext/p7zip/CPP/7zip/Common/CWrappers.cpp +226 -0
- data/ext/p7zip/CPP/7zip/Common/CWrappers.h +109 -0
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.cpp +293 -0
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.h +98 -0
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.cpp +55 -0
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
- data/ext/p7zip/CPP/7zip/Common/FileStreams.cpp +273 -0
- data/ext/p7zip/CPP/7zip/Common/FileStreams.h +134 -0
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.cpp +247 -0
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.h +128 -0
- data/ext/p7zip/CPP/7zip/Common/InBuffer.cpp +83 -0
- data/ext/p7zip/CPP/7zip/Common/InBuffer.h +81 -0
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.cpp +122 -0
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.h +48 -0
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.cpp +154 -0
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.h +125 -0
- data/ext/p7zip/CPP/7zip/Common/LockedStream.cpp +23 -0
- data/ext/p7zip/CPP/7zip/Common/LockedStream.h +38 -0
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.cpp +183 -0
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.h +71 -0
- data/ext/p7zip/CPP/7zip/Common/MethodId.cpp +27 -0
- data/ext/p7zip/CPP/7zip/Common/MethodId.h +10 -0
- data/ext/p7zip/CPP/7zip/Common/MethodProps.cpp +99 -0
- data/ext/p7zip/CPP/7zip/Common/MethodProps.h +41 -0
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.cpp +35 -0
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.h +25 -0
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.cpp +116 -0
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.h +64 -0
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.cpp +142 -0
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.h +96 -0
- data/ext/p7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
- data/ext/p7zip/CPP/7zip/Common/ProgressMt.h +46 -0
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.cpp +42 -0
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.h +34 -0
- data/ext/p7zip/CPP/7zip/Common/RegisterArc.h +32 -0
- data/ext/p7zip/CPP/7zip/Common/RegisterCodec.h +33 -0
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.cpp +152 -0
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.h +38 -0
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.cpp +221 -0
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.h +135 -0
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.cpp +56 -0
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.h +13 -0
- data/ext/p7zip/CPP/7zip/Common/VirtThread.cpp +46 -0
- data/ext/p7zip/CPP/7zip/Common/VirtThread.h +23 -0
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.cpp +309 -0
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.h +98 -0
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.cpp +90 -0
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.h +59 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Const.h +54 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.cpp +26 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.cpp +943 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.h +205 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.cpp +895 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.h +245 -0
- data/ext/p7zip/CPP/7zip/Compress/BZip2Register.cpp +20 -0
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.cpp +386 -0
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.h +115 -0
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Register.cpp +19 -0
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.cpp +15 -0
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.h +19 -0
- data/ext/p7zip/CPP/7zip/Compress/BcjRegister.cpp +19 -0
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.cpp +24 -0
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.h +141 -0
- data/ext/p7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
- data/ext/p7zip/CPP/7zip/Compress/BitmDecoder.h +66 -0
- data/ext/p7zip/CPP/7zip/Compress/BitmEncoder.h +50 -0
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.cpp +19 -0
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.h +44 -0
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.cpp +37 -0
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.h +14 -0
- data/ext/p7zip/CPP/7zip/Compress/BranchRegister.cpp +30 -0
- data/ext/p7zip/CPP/7zip/Compress/ByteSwap.cpp +73 -0
- data/ext/p7zip/CPP/7zip/Compress/CodecExports.cpp +160 -0
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.cpp +67 -0
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
- data/ext/p7zip/CPP/7zip/Compress/CopyRegister.cpp +14 -0
- data/ext/p7zip/CPP/7zip/Compress/Deflate64Register.cpp +20 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateConst.h +134 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.cpp +353 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.h +157 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.cpp +986 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.h +211 -0
- data/ext/p7zip/CPP/7zip/Compress/DeflateRegister.cpp +21 -0
- data/ext/p7zip/CPP/7zip/Compress/DeltaFilter.cpp +112 -0
- data/ext/p7zip/CPP/7zip/Compress/DllExports.cpp +39 -0
- data/ext/p7zip/CPP/7zip/Compress/DllExports2.cpp +28 -0
- data/ext/p7zip/CPP/7zip/Compress/HuffmanDecoder.h +89 -0
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +219 -0
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.h +57 -0
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +89 -0
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +34 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaAlone.cpp +531 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.cpp +1018 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.h +48 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.cpp +311 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.h +20 -0
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/makefile +173 -0
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.h +66 -0
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.h +106 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +189 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.h +73 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +94 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.h +36 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Register.cpp +20 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.cpp +252 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.h +84 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.cpp +149 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.h +36 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmaRegister.cpp +20 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzx.h +61 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.cpp +90 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.h +46 -0
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.cpp +387 -0
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.h +159 -0
- data/ext/p7zip/CPP/7zip/Compress/Mtf8.h +193 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.cpp +167 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.h +78 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.cpp +119 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.h +48 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdRegister.cpp +21 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.cpp +223 -0
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.h +72 -0
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.cpp +175 -0
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.h +264 -0
- data/ext/p7zip/CPP/7zip/Compress/RangeCoder.h +205 -0
- data/ext/p7zip/CPP/7zip/Compress/RangeCoderBit.h +114 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile +34 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.depend +158 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.list +64 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.cpp +480 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.h +88 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.cpp +391 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.h +174 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.cpp +897 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.h +267 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.cpp +1091 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.h +179 -0
- data/ext/p7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +26 -0
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +145 -0
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.cpp +159 -0
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.h +42 -0
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.cpp +89 -0
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.h +48 -0
- data/ext/p7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
- data/ext/p7zip/CPP/7zip/Compress/ZlibEncoder.h +48 -0
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.cpp +244 -0
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.h +117 -0
- data/ext/p7zip/CPP/7zip/Crypto/7zAesRegister.cpp +18 -0
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.cpp +109 -0
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.h +39 -0
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.cpp +48 -0
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.h +38 -0
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +83 -0
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +21 -0
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.cpp +107 -0
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.h +21 -0
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +133 -0
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.h +50 -0
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.cpp +134 -0
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.h +47 -0
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.cpp +229 -0
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.h +68 -0
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.cpp +221 -0
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.h +125 -0
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.cpp +88 -0
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.h +56 -0
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.cpp +164 -0
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.h +47 -0
- data/ext/p7zip/CPP/7zip/Guid.txt +170 -0
- data/ext/p7zip/CPP/7zip/ICoder.h +186 -0
- data/ext/p7zip/CPP/7zip/IDecl.h +15 -0
- data/ext/p7zip/CPP/7zip/IPassword.h +24 -0
- data/ext/p7zip/CPP/7zip/IProgress.h +33 -0
- data/ext/p7zip/CPP/7zip/IStream.h +58 -0
- data/ext/p7zip/CPP/7zip/MyVersion.h +11 -0
- data/ext/p7zip/CPP/7zip/PREMAKE/generate.sh +18 -0
- data/ext/p7zip/CPP/7zip/PREMAKE/premake4.lua +263 -0
- data/ext/p7zip/CPP/7zip/PropID.h +76 -0
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA.pro +228 -0
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA_osx.pro +228 -0
- data/ext/p7zip/CPP/7zip/QMAKE/test_emul/test_emul.pro +26 -0
- data/ext/p7zip/CPP/7zip/TEST/TestUI/TestUI.cpp +560 -0
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile +33 -0
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.depend +577 -0
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.list +16 -0
- data/ext/p7zip/CPP/Common/AutoPtr.h +35 -0
- data/ext/p7zip/CPP/Common/Buffer.h +77 -0
- data/ext/p7zip/CPP/Common/CRC.cpp +7 -0
- data/ext/p7zip/CPP/Common/C_FileIO.cpp +88 -0
- data/ext/p7zip/CPP/Common/C_FileIO.h +47 -0
- data/ext/p7zip/CPP/Common/ComTry.h +18 -0
- data/ext/p7zip/CPP/Common/CommandLineParser.cpp +230 -0
- data/ext/p7zip/CPP/Common/CommandLineParser.h +72 -0
- data/ext/p7zip/CPP/Common/Defs.h +20 -0
- data/ext/p7zip/CPP/Common/DynamicBuffer.h +50 -0
- data/ext/p7zip/CPP/Common/IntToString.cpp +77 -0
- data/ext/p7zip/CPP/Common/IntToString.h +19 -0
- data/ext/p7zip/CPP/Common/Lang.cpp +130 -0
- data/ext/p7zip/CPP/Common/Lang.h +28 -0
- data/ext/p7zip/CPP/Common/ListFileUtils.cpp +75 -0
- data/ext/p7zip/CPP/Common/ListFileUtils.h +11 -0
- data/ext/p7zip/CPP/Common/MyCom.h +225 -0
- data/ext/p7zip/CPP/Common/MyException.h +14 -0
- data/ext/p7zip/CPP/Common/MyGuidDef.h +54 -0
- data/ext/p7zip/CPP/Common/MyInitGuid.h +22 -0
- data/ext/p7zip/CPP/Common/MyMap.cpp +140 -0
- data/ext/p7zip/CPP/Common/MyMap.h +28 -0
- data/ext/p7zip/CPP/Common/MyString.cpp +206 -0
- data/ext/p7zip/CPP/Common/MyString.h +601 -0
- data/ext/p7zip/CPP/Common/MyUnknown.h +13 -0
- data/ext/p7zip/CPP/Common/MyVector.cpp +87 -0
- data/ext/p7zip/CPP/Common/MyVector.h +266 -0
- data/ext/p7zip/CPP/Common/MyWindows.cpp +111 -0
- data/ext/p7zip/CPP/Common/MyWindows.h +218 -0
- data/ext/p7zip/CPP/Common/MyXml.cpp +209 -0
- data/ext/p7zip/CPP/Common/MyXml.h +40 -0
- data/ext/p7zip/CPP/Common/NewHandler.h +16 -0
- data/ext/p7zip/CPP/Common/StdInStream.cpp +100 -0
- data/ext/p7zip/CPP/Common/StdInStream.h +32 -0
- data/ext/p7zip/CPP/Common/StdOutStream.cpp +93 -0
- data/ext/p7zip/CPP/Common/StdOutStream.h +35 -0
- data/ext/p7zip/CPP/Common/StringConvert.cpp +181 -0
- data/ext/p7zip/CPP/Common/StringConvert.h +73 -0
- data/ext/p7zip/CPP/Common/StringToInt.cpp +90 -0
- data/ext/p7zip/CPP/Common/StringToInt.h +18 -0
- data/ext/p7zip/CPP/Common/TextConfig.cpp +138 -0
- data/ext/p7zip/CPP/Common/TextConfig.h +22 -0
- data/ext/p7zip/CPP/Common/Types.h +11 -0
- data/ext/p7zip/CPP/Common/UTFConvert.cpp +145 -0
- data/ext/p7zip/CPP/Common/UTFConvert.h +11 -0
- data/ext/p7zip/CPP/Common/Wildcard.cpp +462 -0
- data/ext/p7zip/CPP/Common/Wildcard.h +80 -0
- data/ext/p7zip/CPP/Windows/COM.cpp +37 -0
- data/ext/p7zip/CPP/Windows/COM.h +69 -0
- data/ext/p7zip/CPP/Windows/Clipboard.cpp +160 -0
- data/ext/p7zip/CPP/Windows/Clipboard.h +28 -0
- data/ext/p7zip/CPP/Windows/CommonDialog.h +19 -0
- data/ext/p7zip/CPP/Windows/Control/ComboBox.h +82 -0
- data/ext/p7zip/CPP/Windows/Control/Controls.cpp +515 -0
- data/ext/p7zip/CPP/Windows/Control/Dialog.cpp +560 -0
- data/ext/p7zip/CPP/Windows/Control/Dialog.h +179 -0
- data/ext/p7zip/CPP/Windows/Control/DialogImpl.h +73 -0
- data/ext/p7zip/CPP/Windows/Control/Edit.h +24 -0
- data/ext/p7zip/CPP/Windows/Control/ListView.h +164 -0
- data/ext/p7zip/CPP/Windows/Control/ProgressBar.h +34 -0
- data/ext/p7zip/CPP/Windows/Control/Static.h +23 -0
- data/ext/p7zip/CPP/Windows/Control/StatusBar.h +56 -0
- data/ext/p7zip/CPP/Windows/Control/Window2.cpp +211 -0
- data/ext/p7zip/CPP/Windows/Control/Window2.h +111 -0
- data/ext/p7zip/CPP/Windows/DLL.cpp +193 -0
- data/ext/p7zip/CPP/Windows/DLL.h +48 -0
- data/ext/p7zip/CPP/Windows/Defs.h +17 -0
- data/ext/p7zip/CPP/Windows/Error.cpp +58 -0
- data/ext/p7zip/CPP/Windows/Error.h +33 -0
- data/ext/p7zip/CPP/Windows/FileDir.cpp +927 -0
- data/ext/p7zip/CPP/Windows/FileDir.h +115 -0
- data/ext/p7zip/CPP/Windows/FileFind.cpp +604 -0
- data/ext/p7zip/CPP/Windows/FileFind.h +126 -0
- data/ext/p7zip/CPP/Windows/FileIO.cpp +475 -0
- data/ext/p7zip/CPP/Windows/FileIO.h +110 -0
- data/ext/p7zip/CPP/Windows/FileName.cpp +50 -0
- data/ext/p7zip/CPP/Windows/FileName.h +27 -0
- data/ext/p7zip/CPP/Windows/Menu.h +4 -0
- data/ext/p7zip/CPP/Windows/NtCheck.h +44 -0
- data/ext/p7zip/CPP/Windows/PropVariant.cpp +243 -0
- data/ext/p7zip/CPP/Windows/PropVariant.h +56 -0
- data/ext/p7zip/CPP/Windows/PropVariantConversions.cpp +142 -0
- data/ext/p7zip/CPP/Windows/PropVariantConversions.h +14 -0
- data/ext/p7zip/CPP/Windows/PropVariantUtils.cpp +78 -0
- data/ext/p7zip/CPP/Windows/PropVariantUtils.h +28 -0
- data/ext/p7zip/CPP/Windows/Registry.cpp +313 -0
- data/ext/p7zip/CPP/Windows/Registry.h +113 -0
- data/ext/p7zip/CPP/Windows/ResourceString.h +22 -0
- data/ext/p7zip/CPP/Windows/Shell.h +21 -0
- data/ext/p7zip/CPP/Windows/Synchronization.cpp +157 -0
- data/ext/p7zip/CPP/Windows/Synchronization.h +187 -0
- data/ext/p7zip/CPP/Windows/Synchronization2.h +218 -0
- data/ext/p7zip/CPP/Windows/System.cpp +166 -0
- data/ext/p7zip/CPP/Windows/System.h +16 -0
- data/ext/p7zip/CPP/Windows/Thread.h +41 -0
- data/ext/p7zip/CPP/Windows/Time.cpp +88 -0
- data/ext/p7zip/CPP/Windows/Time.h +21 -0
- data/ext/p7zip/CPP/Windows/Window.cpp +101 -0
- data/ext/p7zip/CPP/Windows/Window.h +43 -0
- data/ext/p7zip/CPP/include_windows/basetyps.h +19 -0
- data/ext/p7zip/CPP/include_windows/tchar.h +89 -0
- data/ext/p7zip/CPP/include_windows/windows.h +194 -0
- data/ext/p7zip/CPP/myWindows/StdAfx.h +124 -0
- data/ext/p7zip/CPP/myWindows/config.h +67 -0
- data/ext/p7zip/CPP/myWindows/initguid.h +4 -0
- data/ext/p7zip/CPP/myWindows/makefile +21 -0
- data/ext/p7zip/CPP/myWindows/makefile.depend +32 -0
- data/ext/p7zip/CPP/myWindows/makefile.list +28 -0
- data/ext/p7zip/CPP/myWindows/myAddExeFlag.cpp +20 -0
- data/ext/p7zip/CPP/myWindows/myGetTickCount.cpp +8 -0
- data/ext/p7zip/CPP/myWindows/myPrivate.h +17 -0
- data/ext/p7zip/CPP/myWindows/mySplitCommandLine.cpp +82 -0
- data/ext/p7zip/CPP/myWindows/test_emul.cpp +745 -0
- data/ext/p7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp +741 -0
- data/ext/p7zip/CPP/myWindows/wine_date_and_time.cpp +434 -0
- data/ext/p7zip/ChangeLog +914 -0
- data/ext/p7zip/DOCS/7zC.txt +194 -0
- data/ext/p7zip/DOCS/7zFormat.txt +469 -0
- data/ext/p7zip/DOCS/License.txt +52 -0
- data/ext/p7zip/DOCS/MANUAL/commands/add.htm +87 -0
- data/ext/p7zip/DOCS/MANUAL/commands/bench.htm +79 -0
- data/ext/p7zip/DOCS/MANUAL/commands/delete.htm +59 -0
- data/ext/p7zip/DOCS/MANUAL/commands/extract.htm +91 -0
- data/ext/p7zip/DOCS/MANUAL/commands/extract_full.htm +68 -0
- data/ext/p7zip/DOCS/MANUAL/commands/index.htm +33 -0
- data/ext/p7zip/DOCS/MANUAL/commands/list.htm +77 -0
- data/ext/p7zip/DOCS/MANUAL/commands/style.css +232 -0
- data/ext/p7zip/DOCS/MANUAL/commands/test.htm +46 -0
- data/ext/p7zip/DOCS/MANUAL/commands/update.htm +66 -0
- data/ext/p7zip/DOCS/MANUAL/exit_codes.htm +27 -0
- data/ext/p7zip/DOCS/MANUAL/index.htm +29 -0
- data/ext/p7zip/DOCS/MANUAL/style.css +232 -0
- data/ext/p7zip/DOCS/MANUAL/switches/ar_exclude.htm +56 -0
- data/ext/p7zip/DOCS/MANUAL/switches/ar_include.htm +83 -0
- data/ext/p7zip/DOCS/MANUAL/switches/ar_no.htm +52 -0
- data/ext/p7zip/DOCS/MANUAL/switches/charset.htm +49 -0
- data/ext/p7zip/DOCS/MANUAL/switches/exclude.htm +60 -0
- data/ext/p7zip/DOCS/MANUAL/switches/include.htm +87 -0
- data/ext/p7zip/DOCS/MANUAL/switches/index.htm +64 -0
- data/ext/p7zip/DOCS/MANUAL/switches/large_pages.htm +50 -0
- data/ext/p7zip/DOCS/MANUAL/switches/list_tech.htm +36 -0
- data/ext/p7zip/DOCS/MANUAL/switches/method.htm +625 -0
- data/ext/p7zip/DOCS/MANUAL/switches/output_dir.htm +53 -0
- data/ext/p7zip/DOCS/MANUAL/switches/overwrite.htm +56 -0
- data/ext/p7zip/DOCS/MANUAL/switches/password.htm +54 -0
- data/ext/p7zip/DOCS/MANUAL/switches/recurse.htm +83 -0
- data/ext/p7zip/DOCS/MANUAL/switches/sfx.htm +156 -0
- data/ext/p7zip/DOCS/MANUAL/switches/ssc.htm +50 -0
- data/ext/p7zip/DOCS/MANUAL/switches/stdin.htm +55 -0
- data/ext/p7zip/DOCS/MANUAL/switches/stdout.htm +50 -0
- data/ext/p7zip/DOCS/MANUAL/switches/stop_switch.htm +31 -0
- data/ext/p7zip/DOCS/MANUAL/switches/style.css +232 -0
- data/ext/p7zip/DOCS/MANUAL/switches/type.htm +83 -0
- data/ext/p7zip/DOCS/MANUAL/switches/update.htm +176 -0
- data/ext/p7zip/DOCS/MANUAL/switches/volume.htm +49 -0
- data/ext/p7zip/DOCS/MANUAL/switches/working_dir.htm +55 -0
- data/ext/p7zip/DOCS/MANUAL/switches/yes.htm +48 -0
- data/ext/p7zip/DOCS/MANUAL/syntax.htm +120 -0
- data/ext/p7zip/DOCS/Methods.txt +152 -0
- data/ext/p7zip/DOCS/copying.txt +504 -0
- data/ext/p7zip/DOCS/history.txt +456 -0
- data/ext/p7zip/DOCS/lzma.txt +598 -0
- data/ext/p7zip/DOCS/readme.txt +181 -0
- data/ext/p7zip/DOCS/unRarLicense.txt +41 -0
- data/ext/p7zip/README +358 -0
- data/ext/p7zip/TODO +39 -0
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/ChangeLog +41 -0
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme +21 -0
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme.u7z +30 -0
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/u7z +133 -0
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/README +21 -0
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/check.sh +117 -0
- 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 +33 -0
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/p7zip +144 -0
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-shared +14 -0
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-static +10 -0
- data/ext/p7zip/install.sh +206 -0
- data/ext/p7zip/install_local_context_menu.sh +18 -0
- data/ext/p7zip/integration_context_menu.txt +51 -0
- data/ext/p7zip/makefile +181 -0
- data/ext/p7zip/makefile.aix_gcc +22 -0
- data/ext/p7zip/makefile.beos +18 -0
- data/ext/p7zip/makefile.crc32 +8 -0
- data/ext/p7zip/makefile.cygwin +20 -0
- data/ext/p7zip/makefile.cygwin_asm +21 -0
- data/ext/p7zip/makefile.djgpp_old +21 -0
- data/ext/p7zip/makefile.djgpp_watt +47 -0
- data/ext/p7zip/makefile.freebsd5 +20 -0
- data/ext/p7zip/makefile.freebsd6 +20 -0
- data/ext/p7zip/makefile.glb +39 -0
- data/ext/p7zip/makefile.gprof +18 -0
- data/ext/p7zip/makefile.hpux-acc +17 -0
- data/ext/p7zip/makefile.hpux-acc_64 +19 -0
- data/ext/p7zip/makefile.hpux-gcc +21 -0
- data/ext/p7zip/makefile.linux_amd64 +22 -0
- data/ext/p7zip/makefile.linux_amd64_asm +24 -0
- data/ext/p7zip/makefile.linux_amd64_asm_icc +27 -0
- data/ext/p7zip/makefile.linux_any_cpu +22 -0
- data/ext/p7zip/makefile.linux_any_cpu_gcc_4.X +24 -0
- data/ext/p7zip/makefile.linux_clang_amd64 +22 -0
- data/ext/p7zip/makefile.linux_cross_arm +22 -0
- data/ext/p7zip/makefile.linux_gcc_2.95_no_need_for_libstdc +20 -0
- data/ext/p7zip/makefile.linux_other +23 -0
- data/ext/p7zip/makefile.linux_s390x +23 -0
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X +26 -0
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X_fltk +26 -0
- data/ext/p7zip/makefile.linux_x86_asm_gcc_mudflap_4.X +26 -0
- data/ext/p7zip/makefile.linux_x86_asm_icc +25 -0
- data/ext/p7zip/makefile.linux_x86_icc +24 -0
- data/ext/p7zip/makefile.machine_base +22 -0
- data/ext/p7zip/makefile.macosx_32bits +20 -0
- data/ext/p7zip/makefile.macosx_32bits_asm +23 -0
- data/ext/p7zip/makefile.macosx_32bits_ppc +21 -0
- data/ext/p7zip/makefile.macosx_64bits +20 -0
- data/ext/p7zip/makefile.macosx_llvm_64bits +20 -0
- data/ext/p7zip/makefile.netbsd +21 -0
- data/ext/p7zip/makefile.netware_asm_gcc_3.X +41 -0
- data/ext/p7zip/makefile.oldmake +174 -0
- data/ext/p7zip/makefile.openbsd +20 -0
- data/ext/p7zip/makefile.openbsd_no_port +20 -0
- data/ext/p7zip/makefile.qnx_shared.bin +21 -0
- data/ext/p7zip/makefile.qnx_static +21 -0
- data/ext/p7zip/makefile.rules +661 -0
- data/ext/p7zip/makefile.solaris_sparc_CC_32 +21 -0
- data/ext/p7zip/makefile.solaris_sparc_CC_64 +23 -0
- data/ext/p7zip/makefile.solaris_sparc_gcc +21 -0
- data/ext/p7zip/makefile.solaris_x86 +19 -0
- data/ext/p7zip/makefile.tru64 +22 -0
- data/ext/seven_zip_ruby/depend +5 -0
- data/ext/seven_zip_ruby/extconf.rb +131 -0
- data/ext/seven_zip_ruby/guid_defs.h +29 -0
- data/ext/seven_zip_ruby/mutex.h +10 -0
- data/ext/seven_zip_ruby/posix/mutex.h +94 -0
- data/ext/seven_zip_ruby/seven_zip_archive.cpp +1614 -0
- data/ext/seven_zip_ruby/seven_zip_archive.h +515 -0
- data/ext/seven_zip_ruby/util_common.h +444 -0
- data/ext/seven_zip_ruby/utils.cpp +576 -0
- data/ext/seven_zip_ruby/utils.h +25 -0
- data/ext/seven_zip_ruby/win32/mutex.h +130 -0
- data/lib/seven_zip_ruby.rb +16 -0
- data/lib/seven_zip_ruby/7z.dll +0 -0
- data/lib/seven_zip_ruby/7z64.dll +0 -0
- data/lib/seven_zip_ruby/archive_info.rb +21 -0
- data/lib/seven_zip_ruby/entry_info.rb +45 -0
- data/lib/seven_zip_ruby/exception.rb +7 -0
- data/lib/seven_zip_ruby/seven_zip_reader.rb +180 -0
- data/lib/seven_zip_ruby/seven_zip_writer.rb +143 -0
- data/lib/seven_zip_ruby/update_info.rb +116 -0
- data/lib/seven_zip_ruby/version.rb +3 -0
- data/seven_zip_ruby.gemspec +26 -0
- data/spec/seven_zip_ruby_spec.rb +490 -0
- data/spec/seven_zip_ruby_spec_helper.rb +122 -0
- metadata +820 -0
data/ext/p7zip/C/Xz.h
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/* Xz.h - Xz interface
|
|
2
|
+
2010-09-17 : Igor Pavlov : Public domain */
|
|
3
|
+
|
|
4
|
+
#ifndef __XZ_H
|
|
5
|
+
#define __XZ_H
|
|
6
|
+
|
|
7
|
+
#include "Sha256.h"
|
|
8
|
+
|
|
9
|
+
EXTERN_C_BEGIN
|
|
10
|
+
|
|
11
|
+
#define XZ_ID_Subblock 1
|
|
12
|
+
#define XZ_ID_Delta 3
|
|
13
|
+
#define XZ_ID_X86 4
|
|
14
|
+
#define XZ_ID_PPC 5
|
|
15
|
+
#define XZ_ID_IA64 6
|
|
16
|
+
#define XZ_ID_ARM 7
|
|
17
|
+
#define XZ_ID_ARMT 8
|
|
18
|
+
#define XZ_ID_SPARC 9
|
|
19
|
+
#define XZ_ID_LZMA2 0x21
|
|
20
|
+
|
|
21
|
+
unsigned Xz_ReadVarInt(const Byte *p, size_t maxSize, UInt64 *value);
|
|
22
|
+
unsigned Xz_WriteVarInt(Byte *buf, UInt64 v);
|
|
23
|
+
|
|
24
|
+
/* ---------- xz block ---------- */
|
|
25
|
+
|
|
26
|
+
#define XZ_BLOCK_HEADER_SIZE_MAX 1024
|
|
27
|
+
|
|
28
|
+
#define XZ_NUM_FILTERS_MAX 4
|
|
29
|
+
#define XZ_BF_NUM_FILTERS_MASK 3
|
|
30
|
+
#define XZ_BF_PACK_SIZE (1 << 6)
|
|
31
|
+
#define XZ_BF_UNPACK_SIZE (1 << 7)
|
|
32
|
+
|
|
33
|
+
#define XZ_FILTER_PROPS_SIZE_MAX 20
|
|
34
|
+
|
|
35
|
+
typedef struct
|
|
36
|
+
{
|
|
37
|
+
UInt64 id;
|
|
38
|
+
UInt32 propsSize;
|
|
39
|
+
Byte props[XZ_FILTER_PROPS_SIZE_MAX];
|
|
40
|
+
} CXzFilter;
|
|
41
|
+
|
|
42
|
+
typedef struct
|
|
43
|
+
{
|
|
44
|
+
UInt64 packSize;
|
|
45
|
+
UInt64 unpackSize;
|
|
46
|
+
Byte flags;
|
|
47
|
+
CXzFilter filters[XZ_NUM_FILTERS_MAX];
|
|
48
|
+
} CXzBlock;
|
|
49
|
+
|
|
50
|
+
#define XzBlock_GetNumFilters(p) (((p)->flags & XZ_BF_NUM_FILTERS_MASK) + 1)
|
|
51
|
+
#define XzBlock_HasPackSize(p) (((p)->flags & XZ_BF_PACK_SIZE) != 0)
|
|
52
|
+
#define XzBlock_HasUnpackSize(p) (((p)->flags & XZ_BF_UNPACK_SIZE) != 0)
|
|
53
|
+
|
|
54
|
+
SRes XzBlock_Parse(CXzBlock *p, const Byte *header);
|
|
55
|
+
SRes XzBlock_ReadHeader(CXzBlock *p, ISeqInStream *inStream, Bool *isIndex, UInt32 *headerSizeRes);
|
|
56
|
+
|
|
57
|
+
/* ---------- xz stream ---------- */
|
|
58
|
+
|
|
59
|
+
#define XZ_SIG_SIZE 6
|
|
60
|
+
#define XZ_FOOTER_SIG_SIZE 2
|
|
61
|
+
|
|
62
|
+
extern Byte XZ_SIG[XZ_SIG_SIZE];
|
|
63
|
+
extern Byte XZ_FOOTER_SIG[XZ_FOOTER_SIG_SIZE];
|
|
64
|
+
|
|
65
|
+
#define XZ_STREAM_FLAGS_SIZE 2
|
|
66
|
+
#define XZ_STREAM_CRC_SIZE 4
|
|
67
|
+
|
|
68
|
+
#define XZ_STREAM_HEADER_SIZE (XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE + XZ_STREAM_CRC_SIZE)
|
|
69
|
+
#define XZ_STREAM_FOOTER_SIZE (XZ_FOOTER_SIG_SIZE + XZ_STREAM_FLAGS_SIZE + XZ_STREAM_CRC_SIZE + 4)
|
|
70
|
+
|
|
71
|
+
#define XZ_CHECK_MASK 0xF
|
|
72
|
+
#define XZ_CHECK_NO 0
|
|
73
|
+
#define XZ_CHECK_CRC32 1
|
|
74
|
+
#define XZ_CHECK_CRC64 4
|
|
75
|
+
#define XZ_CHECK_SHA256 10
|
|
76
|
+
|
|
77
|
+
typedef struct
|
|
78
|
+
{
|
|
79
|
+
int mode;
|
|
80
|
+
UInt32 crc;
|
|
81
|
+
UInt64 crc64;
|
|
82
|
+
CSha256 sha;
|
|
83
|
+
} CXzCheck;
|
|
84
|
+
|
|
85
|
+
void XzCheck_Init(CXzCheck *p, int mode);
|
|
86
|
+
void XzCheck_Update(CXzCheck *p, const void *data, size_t size);
|
|
87
|
+
int XzCheck_Final(CXzCheck *p, Byte *digest);
|
|
88
|
+
|
|
89
|
+
typedef UInt16 CXzStreamFlags;
|
|
90
|
+
|
|
91
|
+
#define XzFlags_IsSupported(f) ((f) <= XZ_CHECK_MASK)
|
|
92
|
+
#define XzFlags_GetCheckType(f) ((f) & XZ_CHECK_MASK)
|
|
93
|
+
#define XzFlags_HasDataCrc32(f) (Xz_GetCheckType(f) == XZ_CHECK_CRC32)
|
|
94
|
+
unsigned XzFlags_GetCheckSize(CXzStreamFlags f);
|
|
95
|
+
|
|
96
|
+
SRes Xz_ParseHeader(CXzStreamFlags *p, const Byte *buf);
|
|
97
|
+
SRes Xz_ReadHeader(CXzStreamFlags *p, ISeqInStream *inStream);
|
|
98
|
+
|
|
99
|
+
typedef struct
|
|
100
|
+
{
|
|
101
|
+
UInt64 unpackSize;
|
|
102
|
+
UInt64 totalSize;
|
|
103
|
+
} CXzBlockSizes;
|
|
104
|
+
|
|
105
|
+
typedef struct
|
|
106
|
+
{
|
|
107
|
+
CXzStreamFlags flags;
|
|
108
|
+
size_t numBlocks;
|
|
109
|
+
size_t numBlocksAllocated;
|
|
110
|
+
CXzBlockSizes *blocks;
|
|
111
|
+
UInt64 startOffset;
|
|
112
|
+
} CXzStream;
|
|
113
|
+
|
|
114
|
+
void Xz_Construct(CXzStream *p);
|
|
115
|
+
void Xz_Free(CXzStream *p, ISzAlloc *alloc);
|
|
116
|
+
|
|
117
|
+
#define XZ_SIZE_OVERFLOW ((UInt64)(Int64)-1)
|
|
118
|
+
|
|
119
|
+
UInt64 Xz_GetUnpackSize(const CXzStream *p);
|
|
120
|
+
UInt64 Xz_GetPackSize(const CXzStream *p);
|
|
121
|
+
|
|
122
|
+
typedef struct
|
|
123
|
+
{
|
|
124
|
+
size_t num;
|
|
125
|
+
size_t numAllocated;
|
|
126
|
+
CXzStream *streams;
|
|
127
|
+
} CXzs;
|
|
128
|
+
|
|
129
|
+
void Xzs_Construct(CXzs *p);
|
|
130
|
+
void Xzs_Free(CXzs *p, ISzAlloc *alloc);
|
|
131
|
+
SRes Xzs_ReadBackward(CXzs *p, ILookInStream *inStream, Int64 *startOffset, ICompressProgress *progress, ISzAlloc *alloc);
|
|
132
|
+
|
|
133
|
+
UInt64 Xzs_GetNumBlocks(const CXzs *p);
|
|
134
|
+
UInt64 Xzs_GetUnpackSize(const CXzs *p);
|
|
135
|
+
|
|
136
|
+
typedef enum
|
|
137
|
+
{
|
|
138
|
+
CODER_STATUS_NOT_SPECIFIED, /* use main error code instead */
|
|
139
|
+
CODER_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */
|
|
140
|
+
CODER_STATUS_NOT_FINISHED, /* stream was not finished */
|
|
141
|
+
CODER_STATUS_NEEDS_MORE_INPUT /* you must provide more input bytes */
|
|
142
|
+
} ECoderStatus;
|
|
143
|
+
|
|
144
|
+
typedef enum
|
|
145
|
+
{
|
|
146
|
+
CODER_FINISH_ANY, /* finish at any point */
|
|
147
|
+
CODER_FINISH_END /* block must be finished at the end */
|
|
148
|
+
} ECoderFinishMode;
|
|
149
|
+
|
|
150
|
+
typedef struct _IStateCoder
|
|
151
|
+
{
|
|
152
|
+
void *p;
|
|
153
|
+
void (*Free)(void *p, ISzAlloc *alloc);
|
|
154
|
+
SRes (*SetProps)(void *p, const Byte *props, size_t propSize, ISzAlloc *alloc);
|
|
155
|
+
void (*Init)(void *p);
|
|
156
|
+
SRes (*Code)(void *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
|
|
157
|
+
int srcWasFinished, ECoderFinishMode finishMode, int *wasFinished);
|
|
158
|
+
} IStateCoder;
|
|
159
|
+
|
|
160
|
+
#define MIXCODER_NUM_FILTERS_MAX 4
|
|
161
|
+
|
|
162
|
+
typedef struct
|
|
163
|
+
{
|
|
164
|
+
ISzAlloc *alloc;
|
|
165
|
+
Byte *buf;
|
|
166
|
+
int numCoders;
|
|
167
|
+
int finished[MIXCODER_NUM_FILTERS_MAX - 1];
|
|
168
|
+
size_t pos[MIXCODER_NUM_FILTERS_MAX - 1];
|
|
169
|
+
size_t size[MIXCODER_NUM_FILTERS_MAX - 1];
|
|
170
|
+
UInt64 ids[MIXCODER_NUM_FILTERS_MAX];
|
|
171
|
+
IStateCoder coders[MIXCODER_NUM_FILTERS_MAX];
|
|
172
|
+
} CMixCoder;
|
|
173
|
+
|
|
174
|
+
void MixCoder_Construct(CMixCoder *p, ISzAlloc *alloc);
|
|
175
|
+
void MixCoder_Free(CMixCoder *p);
|
|
176
|
+
void MixCoder_Init(CMixCoder *p);
|
|
177
|
+
SRes MixCoder_SetFromMethod(CMixCoder *p, int coderIndex, UInt64 methodId);
|
|
178
|
+
SRes MixCoder_Code(CMixCoder *p, Byte *dest, SizeT *destLen,
|
|
179
|
+
const Byte *src, SizeT *srcLen, int srcWasFinished,
|
|
180
|
+
ECoderFinishMode finishMode, ECoderStatus *status);
|
|
181
|
+
|
|
182
|
+
typedef enum
|
|
183
|
+
{
|
|
184
|
+
XZ_STATE_STREAM_HEADER,
|
|
185
|
+
XZ_STATE_STREAM_INDEX,
|
|
186
|
+
XZ_STATE_STREAM_INDEX_CRC,
|
|
187
|
+
XZ_STATE_STREAM_FOOTER,
|
|
188
|
+
XZ_STATE_STREAM_PADDING,
|
|
189
|
+
XZ_STATE_BLOCK_HEADER,
|
|
190
|
+
XZ_STATE_BLOCK,
|
|
191
|
+
XZ_STATE_BLOCK_FOOTER
|
|
192
|
+
} EXzState;
|
|
193
|
+
|
|
194
|
+
typedef struct
|
|
195
|
+
{
|
|
196
|
+
EXzState state;
|
|
197
|
+
UInt32 pos;
|
|
198
|
+
unsigned alignPos;
|
|
199
|
+
unsigned indexPreSize;
|
|
200
|
+
|
|
201
|
+
CXzStreamFlags streamFlags;
|
|
202
|
+
|
|
203
|
+
UInt32 blockHeaderSize;
|
|
204
|
+
UInt64 packSize;
|
|
205
|
+
UInt64 unpackSize;
|
|
206
|
+
|
|
207
|
+
UInt64 numBlocks;
|
|
208
|
+
UInt64 indexSize;
|
|
209
|
+
UInt64 indexPos;
|
|
210
|
+
UInt64 padSize;
|
|
211
|
+
|
|
212
|
+
UInt64 numStreams;
|
|
213
|
+
|
|
214
|
+
UInt32 crc;
|
|
215
|
+
CMixCoder decoder;
|
|
216
|
+
CXzBlock block;
|
|
217
|
+
CXzCheck check;
|
|
218
|
+
CSha256 sha;
|
|
219
|
+
Byte shaDigest[SHA256_DIGEST_SIZE];
|
|
220
|
+
Byte buf[XZ_BLOCK_HEADER_SIZE_MAX];
|
|
221
|
+
} CXzUnpacker;
|
|
222
|
+
|
|
223
|
+
SRes XzUnpacker_Create(CXzUnpacker *p, ISzAlloc *alloc);
|
|
224
|
+
void XzUnpacker_Free(CXzUnpacker *p);
|
|
225
|
+
|
|
226
|
+
/*
|
|
227
|
+
finishMode:
|
|
228
|
+
It has meaning only if the decoding reaches output limit (*destLen).
|
|
229
|
+
LZMA_FINISH_ANY - use smallest number of input bytes
|
|
230
|
+
LZMA_FINISH_END - read EndOfStream marker after decoding
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
SZ_OK
|
|
234
|
+
status:
|
|
235
|
+
LZMA_STATUS_FINISHED_WITH_MARK
|
|
236
|
+
LZMA_STATUS_NOT_FINISHED
|
|
237
|
+
SZ_ERROR_DATA - Data error
|
|
238
|
+
SZ_ERROR_MEM - Memory allocation error
|
|
239
|
+
SZ_ERROR_UNSUPPORTED - Unsupported properties
|
|
240
|
+
SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src).
|
|
241
|
+
*/
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen,
|
|
245
|
+
const Byte *src, SizeT *srcLen, /* int srcWasFinished, */ int finishMode,
|
|
246
|
+
ECoderStatus *status);
|
|
247
|
+
|
|
248
|
+
Bool XzUnpacker_IsStreamWasFinished(CXzUnpacker *p);
|
|
249
|
+
|
|
250
|
+
EXTERN_C_END
|
|
251
|
+
|
|
252
|
+
#endif
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* XzCrc64.c -- CRC64 calculation
|
|
2
|
+
2010-04-16 : Igor Pavlov : Public domain */
|
|
3
|
+
|
|
4
|
+
#include "XzCrc64.h"
|
|
5
|
+
|
|
6
|
+
#define kCrc64Poly UINT64_CONST(0xC96C5795D7870F42)
|
|
7
|
+
UInt64 g_Crc64Table[256];
|
|
8
|
+
|
|
9
|
+
void MY_FAST_CALL Crc64GenerateTable(void)
|
|
10
|
+
{
|
|
11
|
+
UInt32 i;
|
|
12
|
+
for (i = 0; i < 256; i++)
|
|
13
|
+
{
|
|
14
|
+
UInt64 r = i;
|
|
15
|
+
int j;
|
|
16
|
+
for (j = 0; j < 8; j++)
|
|
17
|
+
r = (r >> 1) ^ ((UInt64)kCrc64Poly & ~((r & 1) - 1));
|
|
18
|
+
g_Crc64Table[i] = r;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
UInt64 MY_FAST_CALL Crc64Update(UInt64 v, const void *data, size_t size)
|
|
23
|
+
{
|
|
24
|
+
const Byte *p = (const Byte *)data;
|
|
25
|
+
for (; size > 0 ; size--, p++)
|
|
26
|
+
v = CRC64_UPDATE_BYTE(v, *p);
|
|
27
|
+
return v;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
UInt64 MY_FAST_CALL Crc64Calc(const void *data, size_t size)
|
|
31
|
+
{
|
|
32
|
+
return CRC64_GET_DIGEST(Crc64Update(CRC64_INIT_VAL, data, size));
|
|
33
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* XzCrc64.h -- CRC64 calculation
|
|
2
|
+
2010-04-16 : Igor Pavlov : Public domain */
|
|
3
|
+
|
|
4
|
+
#ifndef __XZ_CRC64_H
|
|
5
|
+
#define __XZ_CRC64_H
|
|
6
|
+
|
|
7
|
+
#include <stddef.h>
|
|
8
|
+
|
|
9
|
+
#include "Types.h"
|
|
10
|
+
|
|
11
|
+
EXTERN_C_BEGIN
|
|
12
|
+
|
|
13
|
+
extern UInt64 g_Crc64Table[];
|
|
14
|
+
|
|
15
|
+
void MY_FAST_CALL Crc64GenerateTable(void);
|
|
16
|
+
|
|
17
|
+
#define CRC64_INIT_VAL UINT64_CONST(0xFFFFFFFFFFFFFFFF)
|
|
18
|
+
#define CRC64_GET_DIGEST(crc) ((crc) ^ CRC64_INIT_VAL)
|
|
19
|
+
#define CRC64_UPDATE_BYTE(crc, b) (g_Crc64Table[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8))
|
|
20
|
+
|
|
21
|
+
UInt64 MY_FAST_CALL Crc64Update(UInt64 crc, const void *data, size_t size);
|
|
22
|
+
UInt64 MY_FAST_CALL Crc64Calc(const void *data, size_t size);
|
|
23
|
+
|
|
24
|
+
EXTERN_C_END
|
|
25
|
+
|
|
26
|
+
#endif
|
data/ext/p7zip/C/XzDec.c
ADDED
|
@@ -0,0 +1,875 @@
|
|
|
1
|
+
/* XzDec.c -- Xz Decode
|
|
2
|
+
2010-04-16 : Igor Pavlov : Public domain */
|
|
3
|
+
|
|
4
|
+
/* #define XZ_DUMP */
|
|
5
|
+
|
|
6
|
+
#ifdef XZ_DUMP
|
|
7
|
+
#include <stdio.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#include <stdlib.h>
|
|
11
|
+
#include <string.h>
|
|
12
|
+
|
|
13
|
+
#include "7zCrc.h"
|
|
14
|
+
#include "Alloc.h"
|
|
15
|
+
#include "Bra.h"
|
|
16
|
+
#include "CpuArch.h"
|
|
17
|
+
#include "Delta.h"
|
|
18
|
+
#include "Lzma2Dec.h"
|
|
19
|
+
|
|
20
|
+
#ifdef USE_SUBBLOCK
|
|
21
|
+
#include "SbDec.h"
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#include "Xz.h"
|
|
25
|
+
|
|
26
|
+
#define XZ_CHECK_SIZE_MAX 64
|
|
27
|
+
|
|
28
|
+
#define CODER_BUF_SIZE (1 << 17)
|
|
29
|
+
|
|
30
|
+
unsigned Xz_ReadVarInt(const Byte *p, size_t maxSize, UInt64 *value)
|
|
31
|
+
{
|
|
32
|
+
int i, limit;
|
|
33
|
+
*value = 0;
|
|
34
|
+
limit = (maxSize > 9) ? 9 : (int)maxSize;
|
|
35
|
+
|
|
36
|
+
for (i = 0; i < limit;)
|
|
37
|
+
{
|
|
38
|
+
Byte b = p[i];
|
|
39
|
+
*value |= (UInt64)(b & 0x7F) << (7 * i++);
|
|
40
|
+
if ((b & 0x80) == 0)
|
|
41
|
+
return (b == 0 && i != 1) ? 0 : i;
|
|
42
|
+
}
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* ---------- BraState ---------- */
|
|
47
|
+
|
|
48
|
+
#define BRA_BUF_SIZE (1 << 14)
|
|
49
|
+
|
|
50
|
+
typedef struct
|
|
51
|
+
{
|
|
52
|
+
size_t bufPos;
|
|
53
|
+
size_t bufConv;
|
|
54
|
+
size_t bufTotal;
|
|
55
|
+
|
|
56
|
+
UInt32 methodId;
|
|
57
|
+
int encodeMode;
|
|
58
|
+
UInt32 delta;
|
|
59
|
+
UInt32 ip;
|
|
60
|
+
UInt32 x86State;
|
|
61
|
+
Byte deltaState[DELTA_STATE_SIZE];
|
|
62
|
+
|
|
63
|
+
Byte buf[BRA_BUF_SIZE];
|
|
64
|
+
} CBraState;
|
|
65
|
+
|
|
66
|
+
void BraState_Free(void *pp, ISzAlloc *alloc)
|
|
67
|
+
{
|
|
68
|
+
alloc->Free(alloc, pp);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
SRes BraState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAlloc *alloc)
|
|
72
|
+
{
|
|
73
|
+
CBraState *p = ((CBraState *)pp);
|
|
74
|
+
alloc = alloc;
|
|
75
|
+
p->encodeMode = 0;
|
|
76
|
+
p->ip = 0;
|
|
77
|
+
if (p->methodId == XZ_ID_Delta)
|
|
78
|
+
{
|
|
79
|
+
if (propSize != 1)
|
|
80
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
81
|
+
p->delta = (unsigned)props[0] + 1;
|
|
82
|
+
}
|
|
83
|
+
else
|
|
84
|
+
{
|
|
85
|
+
if (propSize == 4)
|
|
86
|
+
{
|
|
87
|
+
UInt32 v = GetUi32(props);
|
|
88
|
+
switch(p->methodId)
|
|
89
|
+
{
|
|
90
|
+
case XZ_ID_PPC:
|
|
91
|
+
case XZ_ID_ARM:
|
|
92
|
+
case XZ_ID_SPARC:
|
|
93
|
+
if ((v & 3) != 0)
|
|
94
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
95
|
+
break;
|
|
96
|
+
case XZ_ID_ARMT:
|
|
97
|
+
if ((v & 1) != 0)
|
|
98
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
99
|
+
break;
|
|
100
|
+
case XZ_ID_IA64:
|
|
101
|
+
if ((v & 0xF) != 0)
|
|
102
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
p->ip = v;
|
|
106
|
+
}
|
|
107
|
+
else if (propSize != 0)
|
|
108
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
109
|
+
}
|
|
110
|
+
return SZ_OK;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void BraState_Init(void *pp)
|
|
114
|
+
{
|
|
115
|
+
CBraState *p = ((CBraState *)pp);
|
|
116
|
+
p->bufPos = p->bufConv = p->bufTotal = 0;
|
|
117
|
+
x86_Convert_Init(p->x86State);
|
|
118
|
+
if (p->methodId == XZ_ID_Delta)
|
|
119
|
+
Delta_Init(p->deltaState);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
#define CASE_BRA_CONV(isa) case XZ_ID_ ## isa: p->bufConv = isa ## _Convert(p->buf, p->bufTotal, p->ip, p->encodeMode); break;
|
|
123
|
+
|
|
124
|
+
static SRes BraState_Code(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
|
|
125
|
+
int srcWasFinished, ECoderFinishMode finishMode, int *wasFinished)
|
|
126
|
+
{
|
|
127
|
+
CBraState *p = ((CBraState *)pp);
|
|
128
|
+
SizeT destLenOrig = *destLen;
|
|
129
|
+
SizeT srcLenOrig = *srcLen;
|
|
130
|
+
*destLen = 0;
|
|
131
|
+
*srcLen = 0;
|
|
132
|
+
finishMode = finishMode;
|
|
133
|
+
*wasFinished = 0;
|
|
134
|
+
while (destLenOrig > 0)
|
|
135
|
+
{
|
|
136
|
+
if (p->bufPos != p->bufConv)
|
|
137
|
+
{
|
|
138
|
+
size_t curSize = p->bufConv - p->bufPos;
|
|
139
|
+
if (curSize > destLenOrig)
|
|
140
|
+
curSize = destLenOrig;
|
|
141
|
+
memcpy(dest, p->buf + p->bufPos, curSize);
|
|
142
|
+
p->bufPos += curSize;
|
|
143
|
+
*destLen += curSize;
|
|
144
|
+
dest += curSize;
|
|
145
|
+
destLenOrig -= curSize;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
p->bufTotal -= p->bufPos;
|
|
149
|
+
memmove(p->buf, p->buf + p->bufPos, p->bufTotal);
|
|
150
|
+
p->bufPos = 0;
|
|
151
|
+
p->bufConv = 0;
|
|
152
|
+
{
|
|
153
|
+
size_t curSize = BRA_BUF_SIZE - p->bufTotal;
|
|
154
|
+
if (curSize > srcLenOrig)
|
|
155
|
+
curSize = srcLenOrig;
|
|
156
|
+
memcpy(p->buf + p->bufTotal, src, curSize);
|
|
157
|
+
*srcLen += curSize;
|
|
158
|
+
src += curSize;
|
|
159
|
+
srcLenOrig -= curSize;
|
|
160
|
+
p->bufTotal += curSize;
|
|
161
|
+
}
|
|
162
|
+
if (p->bufTotal == 0)
|
|
163
|
+
break;
|
|
164
|
+
switch(p->methodId)
|
|
165
|
+
{
|
|
166
|
+
case XZ_ID_Delta:
|
|
167
|
+
if (p->encodeMode)
|
|
168
|
+
Delta_Encode(p->deltaState, p->delta, p->buf, p->bufTotal);
|
|
169
|
+
else
|
|
170
|
+
Delta_Decode(p->deltaState, p->delta, p->buf, p->bufTotal);
|
|
171
|
+
p->bufConv = p->bufTotal;
|
|
172
|
+
break;
|
|
173
|
+
case XZ_ID_X86:
|
|
174
|
+
p->bufConv = x86_Convert(p->buf, p->bufTotal, p->ip, &p->x86State, p->encodeMode);
|
|
175
|
+
break;
|
|
176
|
+
CASE_BRA_CONV(PPC)
|
|
177
|
+
CASE_BRA_CONV(IA64)
|
|
178
|
+
CASE_BRA_CONV(ARM)
|
|
179
|
+
CASE_BRA_CONV(ARMT)
|
|
180
|
+
CASE_BRA_CONV(SPARC)
|
|
181
|
+
default:
|
|
182
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
183
|
+
}
|
|
184
|
+
p->ip += (UInt32)p->bufConv;
|
|
185
|
+
|
|
186
|
+
if (p->bufConv == 0)
|
|
187
|
+
{
|
|
188
|
+
if (!srcWasFinished)
|
|
189
|
+
break;
|
|
190
|
+
p->bufConv = p->bufTotal;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (p->bufTotal == p->bufPos && srcLenOrig == 0 && srcWasFinished)
|
|
194
|
+
*wasFinished = 1;
|
|
195
|
+
return SZ_OK;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, ISzAlloc *alloc)
|
|
199
|
+
{
|
|
200
|
+
CBraState *decoder;
|
|
201
|
+
if (id != XZ_ID_Delta &&
|
|
202
|
+
id != XZ_ID_X86 &&
|
|
203
|
+
id != XZ_ID_PPC &&
|
|
204
|
+
id != XZ_ID_IA64 &&
|
|
205
|
+
id != XZ_ID_ARM &&
|
|
206
|
+
id != XZ_ID_ARMT &&
|
|
207
|
+
id != XZ_ID_SPARC)
|
|
208
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
209
|
+
p->p = 0;
|
|
210
|
+
decoder = alloc->Alloc(alloc, sizeof(CBraState));
|
|
211
|
+
if (decoder == 0)
|
|
212
|
+
return SZ_ERROR_MEM;
|
|
213
|
+
decoder->methodId = (UInt32)id;
|
|
214
|
+
p->p = decoder;
|
|
215
|
+
p->Free = BraState_Free;
|
|
216
|
+
p->SetProps = BraState_SetProps;
|
|
217
|
+
p->Init = BraState_Init;
|
|
218
|
+
p->Code = BraState_Code;
|
|
219
|
+
return SZ_OK;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* ---------- SbState ---------- */
|
|
223
|
+
|
|
224
|
+
#ifdef USE_SUBBLOCK
|
|
225
|
+
|
|
226
|
+
static void SbState_Free(void *pp, ISzAlloc *alloc)
|
|
227
|
+
{
|
|
228
|
+
CSubblockDec *p = (CSubblockDec *)pp;
|
|
229
|
+
SubblockDec_Free(p, alloc);
|
|
230
|
+
alloc->Free(alloc, pp);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
static SRes SbState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAlloc *alloc)
|
|
234
|
+
{
|
|
235
|
+
pp = pp;
|
|
236
|
+
props = props;
|
|
237
|
+
alloc = alloc;
|
|
238
|
+
return (propSize == 0) ? SZ_OK : SZ_ERROR_UNSUPPORTED;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
static void SbState_Init(void *pp)
|
|
242
|
+
{
|
|
243
|
+
SubblockDec_Init((CSubblockDec *)pp);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
static SRes SbState_Code(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
|
|
247
|
+
int srcWasFinished, ECoderFinishMode finishMode, int *wasFinished)
|
|
248
|
+
{
|
|
249
|
+
ECoderStatus status;
|
|
250
|
+
SRes res = SubblockDec_Decode((CSubblockDec *)pp, dest, destLen, src, srcLen, finishMode, &status);
|
|
251
|
+
srcWasFinished = srcWasFinished;
|
|
252
|
+
*wasFinished = (status == LZMA_STATUS_FINISHED_WITH_MARK);
|
|
253
|
+
return res;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
SRes SbState_SetFromMethod(IStateCoder *p, ISzAlloc *alloc)
|
|
257
|
+
{
|
|
258
|
+
CSubblockDec *decoder;
|
|
259
|
+
p->p = 0;
|
|
260
|
+
decoder = alloc->Alloc(alloc, sizeof(CSubblockDec));
|
|
261
|
+
if (decoder == 0)
|
|
262
|
+
return SZ_ERROR_MEM;
|
|
263
|
+
p->p = decoder;
|
|
264
|
+
p->Free = SbState_Free;
|
|
265
|
+
p->SetProps = SbState_SetProps;
|
|
266
|
+
p->Init = SbState_Init;
|
|
267
|
+
p->Code = SbState_Code;
|
|
268
|
+
SubblockDec_Construct(decoder);
|
|
269
|
+
return SZ_OK;
|
|
270
|
+
}
|
|
271
|
+
#endif
|
|
272
|
+
|
|
273
|
+
/* ---------- Lzma2State ---------- */
|
|
274
|
+
|
|
275
|
+
static void Lzma2State_Free(void *pp, ISzAlloc *alloc)
|
|
276
|
+
{
|
|
277
|
+
Lzma2Dec_Free((CLzma2Dec *)pp, alloc);
|
|
278
|
+
alloc->Free(alloc, pp);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
static SRes Lzma2State_SetProps(void *pp, const Byte *props, size_t propSize, ISzAlloc *alloc)
|
|
282
|
+
{
|
|
283
|
+
if (propSize != 1)
|
|
284
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
285
|
+
return Lzma2Dec_Allocate((CLzma2Dec *)pp, props[0], alloc);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
static void Lzma2State_Init(void *pp)
|
|
289
|
+
{
|
|
290
|
+
Lzma2Dec_Init((CLzma2Dec *)pp);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
static SRes Lzma2State_Code(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
|
|
294
|
+
int srcWasFinished, ECoderFinishMode finishMode, int *wasFinished)
|
|
295
|
+
{
|
|
296
|
+
ELzmaStatus status;
|
|
297
|
+
/* ELzmaFinishMode fm = (finishMode == LZMA_FINISH_ANY) ? LZMA_FINISH_ANY : LZMA_FINISH_END; */
|
|
298
|
+
SRes res = Lzma2Dec_DecodeToBuf((CLzma2Dec *)pp, dest, destLen, src, srcLen, finishMode, &status);
|
|
299
|
+
srcWasFinished = srcWasFinished;
|
|
300
|
+
*wasFinished = (status == LZMA_STATUS_FINISHED_WITH_MARK);
|
|
301
|
+
return res;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
static SRes Lzma2State_SetFromMethod(IStateCoder *p, ISzAlloc *alloc)
|
|
305
|
+
{
|
|
306
|
+
CLzma2Dec *decoder = alloc->Alloc(alloc, sizeof(CLzma2Dec));
|
|
307
|
+
p->p = decoder;
|
|
308
|
+
if (decoder == 0)
|
|
309
|
+
return SZ_ERROR_MEM;
|
|
310
|
+
p->Free = Lzma2State_Free;
|
|
311
|
+
p->SetProps = Lzma2State_SetProps;
|
|
312
|
+
p->Init = Lzma2State_Init;
|
|
313
|
+
p->Code = Lzma2State_Code;
|
|
314
|
+
Lzma2Dec_Construct(decoder);
|
|
315
|
+
return SZ_OK;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
void MixCoder_Construct(CMixCoder *p, ISzAlloc *alloc)
|
|
320
|
+
{
|
|
321
|
+
int i;
|
|
322
|
+
p->alloc = alloc;
|
|
323
|
+
p->buf = 0;
|
|
324
|
+
p->numCoders = 0;
|
|
325
|
+
for (i = 0; i < MIXCODER_NUM_FILTERS_MAX; i++)
|
|
326
|
+
p->coders[i].p = NULL;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
void MixCoder_Free(CMixCoder *p)
|
|
330
|
+
{
|
|
331
|
+
int i;
|
|
332
|
+
for (i = 0; i < p->numCoders; i++)
|
|
333
|
+
{
|
|
334
|
+
IStateCoder *sc = &p->coders[i];
|
|
335
|
+
if (p->alloc && sc->p)
|
|
336
|
+
sc->Free(sc->p, p->alloc);
|
|
337
|
+
}
|
|
338
|
+
p->numCoders = 0;
|
|
339
|
+
if (p->buf)
|
|
340
|
+
p->alloc->Free(p->alloc, p->buf);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
void MixCoder_Init(CMixCoder *p)
|
|
344
|
+
{
|
|
345
|
+
int i;
|
|
346
|
+
for (i = 0; i < p->numCoders - 1; i++)
|
|
347
|
+
{
|
|
348
|
+
p->size[i] = 0;
|
|
349
|
+
p->pos[i] = 0;
|
|
350
|
+
p->finished[i] = 0;
|
|
351
|
+
}
|
|
352
|
+
for (i = 0; i < p->numCoders; i++)
|
|
353
|
+
{
|
|
354
|
+
IStateCoder *coder = &p->coders[i];
|
|
355
|
+
coder->Init(coder->p);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
SRes MixCoder_SetFromMethod(CMixCoder *p, int coderIndex, UInt64 methodId)
|
|
360
|
+
{
|
|
361
|
+
IStateCoder *sc = &p->coders[coderIndex];
|
|
362
|
+
p->ids[coderIndex] = methodId;
|
|
363
|
+
switch(methodId)
|
|
364
|
+
{
|
|
365
|
+
case XZ_ID_LZMA2: return Lzma2State_SetFromMethod(sc, p->alloc);
|
|
366
|
+
#ifdef USE_SUBBLOCK
|
|
367
|
+
case XZ_ID_Subblock: return SbState_SetFromMethod(sc, p->alloc);
|
|
368
|
+
#endif
|
|
369
|
+
}
|
|
370
|
+
if (coderIndex == 0)
|
|
371
|
+
return SZ_ERROR_UNSUPPORTED;
|
|
372
|
+
return BraState_SetFromMethod(sc, methodId, p->alloc);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
SRes MixCoder_Code(CMixCoder *p, Byte *dest, SizeT *destLen,
|
|
376
|
+
const Byte *src, SizeT *srcLen, int srcWasFinished,
|
|
377
|
+
ECoderFinishMode finishMode, ECoderStatus *status)
|
|
378
|
+
{
|
|
379
|
+
SizeT destLenOrig = *destLen;
|
|
380
|
+
SizeT srcLenOrig = *srcLen;
|
|
381
|
+
Bool allFinished = True;
|
|
382
|
+
*destLen = 0;
|
|
383
|
+
*srcLen = 0;
|
|
384
|
+
*status = CODER_STATUS_NOT_FINISHED;
|
|
385
|
+
|
|
386
|
+
if (p->buf == 0)
|
|
387
|
+
{
|
|
388
|
+
p->buf = p->alloc->Alloc(p->alloc, CODER_BUF_SIZE * (MIXCODER_NUM_FILTERS_MAX - 1));
|
|
389
|
+
if (p->buf == 0)
|
|
390
|
+
return SZ_ERROR_MEM;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
if (p->numCoders != 1)
|
|
394
|
+
finishMode = CODER_FINISH_ANY;
|
|
395
|
+
|
|
396
|
+
for (;;)
|
|
397
|
+
{
|
|
398
|
+
Bool processed = False;
|
|
399
|
+
int i;
|
|
400
|
+
/*
|
|
401
|
+
if (p->numCoders == 1 && *destLen == destLenOrig && finishMode == LZMA_FINISH_ANY)
|
|
402
|
+
break;
|
|
403
|
+
*/
|
|
404
|
+
|
|
405
|
+
for (i = 0; i < p->numCoders; i++)
|
|
406
|
+
{
|
|
407
|
+
SRes res;
|
|
408
|
+
IStateCoder *coder = &p->coders[i];
|
|
409
|
+
Byte *destCur;
|
|
410
|
+
SizeT destLenCur, srcLenCur;
|
|
411
|
+
const Byte *srcCur;
|
|
412
|
+
int srcFinishedCur;
|
|
413
|
+
int encodingWasFinished;
|
|
414
|
+
|
|
415
|
+
if (i == 0)
|
|
416
|
+
{
|
|
417
|
+
srcCur = src;
|
|
418
|
+
srcLenCur = srcLenOrig - *srcLen;
|
|
419
|
+
srcFinishedCur = srcWasFinished;
|
|
420
|
+
}
|
|
421
|
+
else
|
|
422
|
+
{
|
|
423
|
+
srcCur = p->buf + (CODER_BUF_SIZE * (i - 1)) + p->pos[i - 1];
|
|
424
|
+
srcLenCur = p->size[i - 1] - p->pos[i - 1];
|
|
425
|
+
srcFinishedCur = p->finished[i - 1];
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
if (i == p->numCoders - 1)
|
|
429
|
+
{
|
|
430
|
+
destCur = dest;
|
|
431
|
+
destLenCur = destLenOrig - *destLen;
|
|
432
|
+
}
|
|
433
|
+
else
|
|
434
|
+
{
|
|
435
|
+
if (p->pos[i] != p->size[i])
|
|
436
|
+
continue;
|
|
437
|
+
destCur = p->buf + (CODER_BUF_SIZE * i);
|
|
438
|
+
destLenCur = CODER_BUF_SIZE;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
res = coder->Code(coder->p, destCur, &destLenCur, srcCur, &srcLenCur, srcFinishedCur, finishMode, &encodingWasFinished);
|
|
442
|
+
|
|
443
|
+
if (!encodingWasFinished)
|
|
444
|
+
allFinished = False;
|
|
445
|
+
|
|
446
|
+
if (i == 0)
|
|
447
|
+
{
|
|
448
|
+
*srcLen += srcLenCur;
|
|
449
|
+
src += srcLenCur;
|
|
450
|
+
}
|
|
451
|
+
else
|
|
452
|
+
{
|
|
453
|
+
p->pos[i - 1] += srcLenCur;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
if (i == p->numCoders - 1)
|
|
457
|
+
{
|
|
458
|
+
*destLen += destLenCur;
|
|
459
|
+
dest += destLenCur;
|
|
460
|
+
}
|
|
461
|
+
else
|
|
462
|
+
{
|
|
463
|
+
p->size[i] = destLenCur;
|
|
464
|
+
p->pos[i] = 0;
|
|
465
|
+
p->finished[i] = encodingWasFinished;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
if (res != SZ_OK)
|
|
469
|
+
return res;
|
|
470
|
+
|
|
471
|
+
if (destLenCur != 0 || srcLenCur != 0)
|
|
472
|
+
processed = True;
|
|
473
|
+
}
|
|
474
|
+
if (!processed)
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
if (allFinished)
|
|
478
|
+
*status = CODER_STATUS_FINISHED_WITH_MARK;
|
|
479
|
+
return SZ_OK;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
SRes Xz_ParseHeader(CXzStreamFlags *p, const Byte *buf)
|
|
483
|
+
{
|
|
484
|
+
*p = (CXzStreamFlags)GetBe16(buf + XZ_SIG_SIZE);
|
|
485
|
+
if (CrcCalc(buf + XZ_SIG_SIZE, XZ_STREAM_FLAGS_SIZE) !=
|
|
486
|
+
GetUi32(buf + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE))
|
|
487
|
+
return SZ_ERROR_NO_ARCHIVE;
|
|
488
|
+
return XzFlags_IsSupported(*p) ? SZ_OK : SZ_ERROR_UNSUPPORTED;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
static Bool Xz_CheckFooter(CXzStreamFlags flags, UInt64 indexSize, const Byte *buf)
|
|
492
|
+
{
|
|
493
|
+
return
|
|
494
|
+
indexSize == (((UInt64)GetUi32(buf + 4) + 1) << 2) &&
|
|
495
|
+
(GetUi32(buf) == CrcCalc(buf + 4, 6) &&
|
|
496
|
+
flags == GetBe16(buf + 8) &&
|
|
497
|
+
memcmp(buf + 10, XZ_FOOTER_SIG, XZ_FOOTER_SIG_SIZE) == 0);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
#define READ_VARINT_AND_CHECK(buf, pos, size, res) \
|
|
501
|
+
{ unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \
|
|
502
|
+
if (s == 0) return SZ_ERROR_ARCHIVE; pos += s; }
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
SRes XzBlock_Parse(CXzBlock *p, const Byte *header)
|
|
506
|
+
{
|
|
507
|
+
unsigned pos;
|
|
508
|
+
int numFilters, i;
|
|
509
|
+
UInt32 headerSize = (UInt32)header[0] << 2;
|
|
510
|
+
|
|
511
|
+
if (CrcCalc(header, headerSize) != GetUi32(header + headerSize))
|
|
512
|
+
return SZ_ERROR_ARCHIVE;
|
|
513
|
+
|
|
514
|
+
pos = 1;
|
|
515
|
+
if (pos == headerSize)
|
|
516
|
+
return SZ_ERROR_ARCHIVE;
|
|
517
|
+
p->flags = header[pos++];
|
|
518
|
+
|
|
519
|
+
if (XzBlock_HasPackSize(p))
|
|
520
|
+
{
|
|
521
|
+
READ_VARINT_AND_CHECK(header, pos, headerSize, &p->packSize);
|
|
522
|
+
if (p->packSize == 0 || p->packSize + headerSize >= (UInt64)1 << 63)
|
|
523
|
+
return SZ_ERROR_ARCHIVE;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if (XzBlock_HasUnpackSize(p))
|
|
527
|
+
READ_VARINT_AND_CHECK(header, pos, headerSize, &p->unpackSize);
|
|
528
|
+
|
|
529
|
+
numFilters = XzBlock_GetNumFilters(p);
|
|
530
|
+
for (i = 0; i < numFilters; i++)
|
|
531
|
+
{
|
|
532
|
+
CXzFilter *filter = p->filters + i;
|
|
533
|
+
UInt64 size;
|
|
534
|
+
READ_VARINT_AND_CHECK(header, pos, headerSize, &filter->id);
|
|
535
|
+
READ_VARINT_AND_CHECK(header, pos, headerSize, &size);
|
|
536
|
+
if (size > headerSize - pos || size > XZ_FILTER_PROPS_SIZE_MAX)
|
|
537
|
+
return SZ_ERROR_ARCHIVE;
|
|
538
|
+
filter->propsSize = (UInt32)size;
|
|
539
|
+
memcpy(filter->props, header + pos, (size_t)size);
|
|
540
|
+
pos += (unsigned)size;
|
|
541
|
+
|
|
542
|
+
#ifdef XZ_DUMP
|
|
543
|
+
printf("\nf[%d] = %2X: ", i, filter->id);
|
|
544
|
+
{
|
|
545
|
+
int i;
|
|
546
|
+
for (i = 0; i < size; i++)
|
|
547
|
+
printf(" %2X", filter->props[i]);
|
|
548
|
+
}
|
|
549
|
+
#endif
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
while (pos < headerSize)
|
|
553
|
+
if (header[pos++] != 0)
|
|
554
|
+
return SZ_ERROR_ARCHIVE;
|
|
555
|
+
return SZ_OK;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
SRes XzDec_Init(CMixCoder *p, const CXzBlock *block)
|
|
559
|
+
{
|
|
560
|
+
int i;
|
|
561
|
+
Bool needReInit = True;
|
|
562
|
+
int numFilters = XzBlock_GetNumFilters(block);
|
|
563
|
+
if (numFilters == p->numCoders)
|
|
564
|
+
{
|
|
565
|
+
for (i = 0; i < numFilters; i++)
|
|
566
|
+
if (p->ids[i] != block->filters[numFilters - 1 - i].id)
|
|
567
|
+
break;
|
|
568
|
+
needReInit = (i != numFilters);
|
|
569
|
+
}
|
|
570
|
+
if (needReInit)
|
|
571
|
+
{
|
|
572
|
+
MixCoder_Free(p);
|
|
573
|
+
p->numCoders = numFilters;
|
|
574
|
+
for (i = 0; i < numFilters; i++)
|
|
575
|
+
{
|
|
576
|
+
const CXzFilter *f = &block->filters[numFilters - 1 - i];
|
|
577
|
+
RINOK(MixCoder_SetFromMethod(p, i, f->id));
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
for (i = 0; i < numFilters; i++)
|
|
581
|
+
{
|
|
582
|
+
const CXzFilter *f = &block->filters[numFilters - 1 - i];
|
|
583
|
+
IStateCoder *sc = &p->coders[i];
|
|
584
|
+
RINOK(sc->SetProps(sc->p, f->props, f->propsSize, p->alloc));
|
|
585
|
+
}
|
|
586
|
+
MixCoder_Init(p);
|
|
587
|
+
return SZ_OK;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
SRes XzUnpacker_Create(CXzUnpacker *p, ISzAlloc *alloc)
|
|
591
|
+
{
|
|
592
|
+
MixCoder_Construct(&p->decoder, alloc);
|
|
593
|
+
p->state = XZ_STATE_STREAM_HEADER;
|
|
594
|
+
p->pos = 0;
|
|
595
|
+
p->numStreams = 0;
|
|
596
|
+
return SZ_OK;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
void XzUnpacker_Free(CXzUnpacker *p)
|
|
600
|
+
{
|
|
601
|
+
MixCoder_Free(&p->decoder);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen,
|
|
605
|
+
const Byte *src, SizeT *srcLen, int finishMode, ECoderStatus *status)
|
|
606
|
+
{
|
|
607
|
+
SizeT destLenOrig = *destLen;
|
|
608
|
+
SizeT srcLenOrig = *srcLen;
|
|
609
|
+
*destLen = 0;
|
|
610
|
+
*srcLen = 0;
|
|
611
|
+
*status = CODER_STATUS_NOT_SPECIFIED;
|
|
612
|
+
for (;;)
|
|
613
|
+
{
|
|
614
|
+
SizeT srcRem = srcLenOrig - *srcLen;
|
|
615
|
+
|
|
616
|
+
if (p->state == XZ_STATE_BLOCK)
|
|
617
|
+
{
|
|
618
|
+
SizeT destLen2 = destLenOrig - *destLen;
|
|
619
|
+
SizeT srcLen2 = srcLenOrig - *srcLen;
|
|
620
|
+
SRes res;
|
|
621
|
+
if (srcLen2 == 0 && destLen2 == 0)
|
|
622
|
+
{
|
|
623
|
+
*status = CODER_STATUS_NOT_FINISHED;
|
|
624
|
+
return SZ_OK;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
res = MixCoder_Code(&p->decoder, dest, &destLen2, src, &srcLen2, False, finishMode, status);
|
|
628
|
+
XzCheck_Update(&p->check, dest, destLen2);
|
|
629
|
+
|
|
630
|
+
(*srcLen) += srcLen2;
|
|
631
|
+
src += srcLen2;
|
|
632
|
+
p->packSize += srcLen2;
|
|
633
|
+
|
|
634
|
+
(*destLen) += destLen2;
|
|
635
|
+
dest += destLen2;
|
|
636
|
+
p->unpackSize += destLen2;
|
|
637
|
+
|
|
638
|
+
RINOK(res);
|
|
639
|
+
|
|
640
|
+
if (*status == CODER_STATUS_FINISHED_WITH_MARK)
|
|
641
|
+
{
|
|
642
|
+
Byte temp[32];
|
|
643
|
+
unsigned num = Xz_WriteVarInt(temp, p->packSize + p->blockHeaderSize + XzFlags_GetCheckSize(p->streamFlags));
|
|
644
|
+
num += Xz_WriteVarInt(temp + num, p->unpackSize);
|
|
645
|
+
Sha256_Update(&p->sha, temp, num);
|
|
646
|
+
p->indexSize += num;
|
|
647
|
+
p->numBlocks++;
|
|
648
|
+
|
|
649
|
+
p->state = XZ_STATE_BLOCK_FOOTER;
|
|
650
|
+
p->pos = 0;
|
|
651
|
+
p->alignPos = 0;
|
|
652
|
+
}
|
|
653
|
+
else if (srcLen2 == 0 && destLen2 == 0)
|
|
654
|
+
return SZ_OK;
|
|
655
|
+
|
|
656
|
+
continue;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
if (srcRem == 0)
|
|
660
|
+
{
|
|
661
|
+
*status = CODER_STATUS_NEEDS_MORE_INPUT;
|
|
662
|
+
return SZ_OK;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
switch(p->state)
|
|
666
|
+
{
|
|
667
|
+
case XZ_STATE_STREAM_HEADER:
|
|
668
|
+
{
|
|
669
|
+
if (p->pos < XZ_STREAM_HEADER_SIZE)
|
|
670
|
+
{
|
|
671
|
+
if (p->pos < XZ_SIG_SIZE && *src != XZ_SIG[p->pos])
|
|
672
|
+
return SZ_ERROR_NO_ARCHIVE;
|
|
673
|
+
p->buf[p->pos++] = *src++;
|
|
674
|
+
(*srcLen)++;
|
|
675
|
+
}
|
|
676
|
+
else
|
|
677
|
+
{
|
|
678
|
+
RINOK(Xz_ParseHeader(&p->streamFlags, p->buf));
|
|
679
|
+
p->state = XZ_STATE_BLOCK_HEADER;
|
|
680
|
+
Sha256_Init(&p->sha);
|
|
681
|
+
p->indexSize = 0;
|
|
682
|
+
p->numBlocks = 0;
|
|
683
|
+
p->pos = 0;
|
|
684
|
+
}
|
|
685
|
+
break;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
case XZ_STATE_BLOCK_HEADER:
|
|
689
|
+
{
|
|
690
|
+
if (p->pos == 0)
|
|
691
|
+
{
|
|
692
|
+
p->buf[p->pos++] = *src++;
|
|
693
|
+
(*srcLen)++;
|
|
694
|
+
if (p->buf[0] == 0)
|
|
695
|
+
{
|
|
696
|
+
p->indexPreSize = 1 + Xz_WriteVarInt(p->buf + 1, p->numBlocks);
|
|
697
|
+
p->indexPos = p->indexPreSize;
|
|
698
|
+
p->indexSize += p->indexPreSize;
|
|
699
|
+
Sha256_Final(&p->sha, p->shaDigest);
|
|
700
|
+
Sha256_Init(&p->sha);
|
|
701
|
+
p->crc = CrcUpdate(CRC_INIT_VAL, p->buf, p->indexPreSize);
|
|
702
|
+
p->state = XZ_STATE_STREAM_INDEX;
|
|
703
|
+
}
|
|
704
|
+
p->blockHeaderSize = ((UInt32)p->buf[0] << 2) + 4;
|
|
705
|
+
}
|
|
706
|
+
else if (p->pos != p->blockHeaderSize)
|
|
707
|
+
{
|
|
708
|
+
UInt32 cur = p->blockHeaderSize - p->pos;
|
|
709
|
+
if (cur > srcRem)
|
|
710
|
+
cur = (UInt32)srcRem;
|
|
711
|
+
memcpy(p->buf + p->pos, src, cur);
|
|
712
|
+
p->pos += cur;
|
|
713
|
+
(*srcLen) += cur;
|
|
714
|
+
src += cur;
|
|
715
|
+
}
|
|
716
|
+
else
|
|
717
|
+
{
|
|
718
|
+
RINOK(XzBlock_Parse(&p->block, p->buf));
|
|
719
|
+
p->state = XZ_STATE_BLOCK;
|
|
720
|
+
p->packSize = 0;
|
|
721
|
+
p->unpackSize = 0;
|
|
722
|
+
XzCheck_Init(&p->check, XzFlags_GetCheckType(p->streamFlags));
|
|
723
|
+
RINOK(XzDec_Init(&p->decoder, &p->block));
|
|
724
|
+
}
|
|
725
|
+
break;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
case XZ_STATE_BLOCK_FOOTER:
|
|
729
|
+
{
|
|
730
|
+
if (((p->packSize + p->alignPos) & 3) != 0)
|
|
731
|
+
{
|
|
732
|
+
(*srcLen)++;
|
|
733
|
+
p->alignPos++;
|
|
734
|
+
if (*src++ != 0)
|
|
735
|
+
return SZ_ERROR_CRC;
|
|
736
|
+
}
|
|
737
|
+
else
|
|
738
|
+
{
|
|
739
|
+
UInt32 checkSize = XzFlags_GetCheckSize(p->streamFlags);
|
|
740
|
+
UInt32 cur = checkSize - p->pos;
|
|
741
|
+
if (cur != 0)
|
|
742
|
+
{
|
|
743
|
+
if (cur > srcRem)
|
|
744
|
+
cur = (UInt32)srcRem;
|
|
745
|
+
memcpy(p->buf + p->pos, src, cur);
|
|
746
|
+
p->pos += cur;
|
|
747
|
+
(*srcLen) += cur;
|
|
748
|
+
src += cur;
|
|
749
|
+
}
|
|
750
|
+
else
|
|
751
|
+
{
|
|
752
|
+
Byte digest[XZ_CHECK_SIZE_MAX];
|
|
753
|
+
p->state = XZ_STATE_BLOCK_HEADER;
|
|
754
|
+
p->pos = 0;
|
|
755
|
+
if (XzCheck_Final(&p->check, digest) && memcmp(digest, p->buf, checkSize) != 0)
|
|
756
|
+
return SZ_ERROR_CRC;
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
break;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
case XZ_STATE_STREAM_INDEX:
|
|
763
|
+
{
|
|
764
|
+
if (p->pos < p->indexPreSize)
|
|
765
|
+
{
|
|
766
|
+
(*srcLen)++;
|
|
767
|
+
if (*src++ != p->buf[p->pos++])
|
|
768
|
+
return SZ_ERROR_CRC;
|
|
769
|
+
}
|
|
770
|
+
else
|
|
771
|
+
{
|
|
772
|
+
if (p->indexPos < p->indexSize)
|
|
773
|
+
{
|
|
774
|
+
UInt64 cur = p->indexSize - p->indexPos;
|
|
775
|
+
if (srcRem > cur)
|
|
776
|
+
srcRem = (SizeT)cur;
|
|
777
|
+
p->crc = CrcUpdate(p->crc, src, srcRem);
|
|
778
|
+
Sha256_Update(&p->sha, src, srcRem);
|
|
779
|
+
(*srcLen) += srcRem;
|
|
780
|
+
src += srcRem;
|
|
781
|
+
p->indexPos += srcRem;
|
|
782
|
+
}
|
|
783
|
+
else if ((p->indexPos & 3) != 0)
|
|
784
|
+
{
|
|
785
|
+
Byte b = *src++;
|
|
786
|
+
p->crc = CRC_UPDATE_BYTE(p->crc, b);
|
|
787
|
+
(*srcLen)++;
|
|
788
|
+
p->indexPos++;
|
|
789
|
+
p->indexSize++;
|
|
790
|
+
if (b != 0)
|
|
791
|
+
return SZ_ERROR_CRC;
|
|
792
|
+
}
|
|
793
|
+
else
|
|
794
|
+
{
|
|
795
|
+
Byte digest[SHA256_DIGEST_SIZE];
|
|
796
|
+
p->state = XZ_STATE_STREAM_INDEX_CRC;
|
|
797
|
+
p->indexSize += 4;
|
|
798
|
+
p->pos = 0;
|
|
799
|
+
Sha256_Final(&p->sha, digest);
|
|
800
|
+
if (memcmp(digest, p->shaDigest, SHA256_DIGEST_SIZE) != 0)
|
|
801
|
+
return SZ_ERROR_CRC;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
break;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
case XZ_STATE_STREAM_INDEX_CRC:
|
|
808
|
+
{
|
|
809
|
+
if (p->pos < 4)
|
|
810
|
+
{
|
|
811
|
+
(*srcLen)++;
|
|
812
|
+
p->buf[p->pos++] = *src++;
|
|
813
|
+
}
|
|
814
|
+
else
|
|
815
|
+
{
|
|
816
|
+
p->state = XZ_STATE_STREAM_FOOTER;
|
|
817
|
+
p->pos = 0;
|
|
818
|
+
if (CRC_GET_DIGEST(p->crc) != GetUi32(p->buf))
|
|
819
|
+
return SZ_ERROR_CRC;
|
|
820
|
+
}
|
|
821
|
+
break;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
case XZ_STATE_STREAM_FOOTER:
|
|
825
|
+
{
|
|
826
|
+
UInt32 cur = XZ_STREAM_FOOTER_SIZE - p->pos;
|
|
827
|
+
if (cur > srcRem)
|
|
828
|
+
cur = (UInt32)srcRem;
|
|
829
|
+
memcpy(p->buf + p->pos, src, cur);
|
|
830
|
+
p->pos += cur;
|
|
831
|
+
(*srcLen) += cur;
|
|
832
|
+
src += cur;
|
|
833
|
+
if (p->pos == XZ_STREAM_FOOTER_SIZE)
|
|
834
|
+
{
|
|
835
|
+
p->state = XZ_STATE_STREAM_PADDING;
|
|
836
|
+
p->numStreams++;
|
|
837
|
+
p->padSize = 0;
|
|
838
|
+
if (!Xz_CheckFooter(p->streamFlags, p->indexSize, p->buf))
|
|
839
|
+
return SZ_ERROR_CRC;
|
|
840
|
+
}
|
|
841
|
+
break;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
case XZ_STATE_STREAM_PADDING:
|
|
845
|
+
{
|
|
846
|
+
if (*src != 0)
|
|
847
|
+
{
|
|
848
|
+
if (((UInt32)p->padSize & 3) != 0)
|
|
849
|
+
return SZ_ERROR_NO_ARCHIVE;
|
|
850
|
+
p->pos = 0;
|
|
851
|
+
p->state = XZ_STATE_STREAM_HEADER;
|
|
852
|
+
}
|
|
853
|
+
else
|
|
854
|
+
{
|
|
855
|
+
(*srcLen)++;
|
|
856
|
+
src++;
|
|
857
|
+
p->padSize++;
|
|
858
|
+
}
|
|
859
|
+
break;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
case XZ_STATE_BLOCK: break; /* to disable GCC warning */
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
/*
|
|
866
|
+
if (p->state == XZ_STATE_FINISHED)
|
|
867
|
+
*status = CODER_STATUS_FINISHED_WITH_MARK;
|
|
868
|
+
return SZ_OK;
|
|
869
|
+
*/
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
Bool XzUnpacker_IsStreamWasFinished(CXzUnpacker *p)
|
|
873
|
+
{
|
|
874
|
+
return (p->state == XZ_STATE_STREAM_PADDING) && (((UInt32)p->padSize & 3) == 0);
|
|
875
|
+
}
|