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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// MultiStream.h
|
|
2
|
+
|
|
3
|
+
#ifndef __MULTI_STREAM_H
|
|
4
|
+
#define __MULTI_STREAM_H
|
|
5
|
+
|
|
6
|
+
#include "../../../Common/MyCom.h"
|
|
7
|
+
#include "../../../Common/MyVector.h"
|
|
8
|
+
|
|
9
|
+
#include "../../IStream.h"
|
|
10
|
+
|
|
11
|
+
class CMultiStream:
|
|
12
|
+
public IInStream,
|
|
13
|
+
public CMyUnknownImp
|
|
14
|
+
{
|
|
15
|
+
UInt64 _pos;
|
|
16
|
+
UInt64 _totalLength;
|
|
17
|
+
int _streamIndex;
|
|
18
|
+
public:
|
|
19
|
+
struct CSubStreamInfo
|
|
20
|
+
{
|
|
21
|
+
CMyComPtr<IInStream> Stream;
|
|
22
|
+
UInt64 Size;
|
|
23
|
+
UInt64 GlobalOffset;
|
|
24
|
+
UInt64 LocalPos;
|
|
25
|
+
};
|
|
26
|
+
CObjectVector<CSubStreamInfo> Streams;
|
|
27
|
+
|
|
28
|
+
HRESULT Init()
|
|
29
|
+
{
|
|
30
|
+
UInt64 total = 0;
|
|
31
|
+
for (int i = 0; i < Streams.Size(); i++)
|
|
32
|
+
{
|
|
33
|
+
CSubStreamInfo &s = Streams[i];
|
|
34
|
+
s.GlobalOffset = total;
|
|
35
|
+
total += Streams[i].Size;
|
|
36
|
+
RINOK(s.Stream->Seek(0, STREAM_SEEK_CUR, &s.LocalPos));
|
|
37
|
+
}
|
|
38
|
+
_totalLength = total;
|
|
39
|
+
_pos = 0;
|
|
40
|
+
_streamIndex = 0;
|
|
41
|
+
return S_OK;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
MY_UNKNOWN_IMP1(IInStream)
|
|
45
|
+
|
|
46
|
+
STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
|
|
47
|
+
STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
class COutMultiStream:
|
|
52
|
+
public IOutStream,
|
|
53
|
+
public CMyUnknownImp
|
|
54
|
+
{
|
|
55
|
+
int _streamIndex; // required stream
|
|
56
|
+
UInt64 _offsetPos; // offset from start of _streamIndex index
|
|
57
|
+
UInt64 _absPos;
|
|
58
|
+
UInt64 _length;
|
|
59
|
+
|
|
60
|
+
struct CSubStreamInfo
|
|
61
|
+
{
|
|
62
|
+
CMyComPtr<ISequentialOutStream> Stream;
|
|
63
|
+
UInt64 Size;
|
|
64
|
+
UInt64 Pos;
|
|
65
|
+
};
|
|
66
|
+
CObjectVector<CSubStreamInfo> Streams;
|
|
67
|
+
public:
|
|
68
|
+
CMyComPtr<IArchiveUpdateCallback2> VolumeCallback;
|
|
69
|
+
void Init()
|
|
70
|
+
{
|
|
71
|
+
_streamIndex = 0;
|
|
72
|
+
_offsetPos = 0;
|
|
73
|
+
_absPos = 0;
|
|
74
|
+
_length = 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
MY_UNKNOWN_IMP1(IOutStream)
|
|
78
|
+
|
|
79
|
+
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
|
|
80
|
+
STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
|
|
81
|
+
};
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
#endif
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// OutStreamWithCRC.cpp
|
|
2
|
+
|
|
3
|
+
#include "StdAfx.h"
|
|
4
|
+
|
|
5
|
+
#include "OutStreamWithCRC.h"
|
|
6
|
+
|
|
7
|
+
STDMETHODIMP COutStreamWithCRC::Write(const void *data, UInt32 size, UInt32 *processedSize)
|
|
8
|
+
{
|
|
9
|
+
HRESULT result = S_OK;
|
|
10
|
+
if (_stream)
|
|
11
|
+
result = _stream->Write(data, size, &size);
|
|
12
|
+
if (_calculate)
|
|
13
|
+
_crc = CrcUpdate(_crc, data, size);
|
|
14
|
+
_size += size;
|
|
15
|
+
if (processedSize != NULL)
|
|
16
|
+
*processedSize = size;
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// OutStreamWithCRC.h
|
|
2
|
+
|
|
3
|
+
#ifndef __OUT_STREAM_WITH_CRC_H
|
|
4
|
+
#define __OUT_STREAM_WITH_CRC_H
|
|
5
|
+
|
|
6
|
+
#include "../../../../C/7zCrc.h"
|
|
7
|
+
|
|
8
|
+
#include "../../../Common/MyCom.h"
|
|
9
|
+
|
|
10
|
+
#include "../../IStream.h"
|
|
11
|
+
|
|
12
|
+
class COutStreamWithCRC:
|
|
13
|
+
public ISequentialOutStream,
|
|
14
|
+
public CMyUnknownImp
|
|
15
|
+
{
|
|
16
|
+
CMyComPtr<ISequentialOutStream> _stream;
|
|
17
|
+
UInt64 _size;
|
|
18
|
+
UInt32 _crc;
|
|
19
|
+
bool _calculate;
|
|
20
|
+
public:
|
|
21
|
+
MY_UNKNOWN_IMP
|
|
22
|
+
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
|
|
23
|
+
void SetStream(ISequentialOutStream *stream) { _stream = stream; }
|
|
24
|
+
void ReleaseStream() { _stream.Release(); }
|
|
25
|
+
void Init(bool calculate = true)
|
|
26
|
+
{
|
|
27
|
+
_size = 0;
|
|
28
|
+
_calculate = calculate;
|
|
29
|
+
_crc = CRC_INIT_VAL;
|
|
30
|
+
}
|
|
31
|
+
void InitCRC() { _crc = CRC_INIT_VAL; }
|
|
32
|
+
UInt64 GetSize() const { return _size; }
|
|
33
|
+
UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
#endif
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// OutStreamWithSha1.cpp
|
|
2
|
+
|
|
3
|
+
#include "StdAfx.h"
|
|
4
|
+
|
|
5
|
+
#include "OutStreamWithSha1.h"
|
|
6
|
+
|
|
7
|
+
STDMETHODIMP COutStreamWithSha1::Write(const void *data, UInt32 size, UInt32 *processedSize)
|
|
8
|
+
{
|
|
9
|
+
HRESULT result = S_OK;
|
|
10
|
+
if (_stream)
|
|
11
|
+
result = _stream->Write(data, size, &size);
|
|
12
|
+
if (_calculate)
|
|
13
|
+
_sha.Update((const Byte *)data, size);
|
|
14
|
+
_size += size;
|
|
15
|
+
if (processedSize != NULL)
|
|
16
|
+
*processedSize = size;
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// OutStreamWithSha1.h
|
|
2
|
+
|
|
3
|
+
#ifndef __OUT_STREAM_WITH_SHA1_H
|
|
4
|
+
#define __OUT_STREAM_WITH_SHA1_H
|
|
5
|
+
|
|
6
|
+
#include "../../Crypto/Sha1.h"
|
|
7
|
+
|
|
8
|
+
#include "../../../Common/MyCom.h"
|
|
9
|
+
|
|
10
|
+
#include "../../IStream.h"
|
|
11
|
+
|
|
12
|
+
class COutStreamWithSha1:
|
|
13
|
+
public ISequentialOutStream,
|
|
14
|
+
public CMyUnknownImp
|
|
15
|
+
{
|
|
16
|
+
CMyComPtr<ISequentialOutStream> _stream;
|
|
17
|
+
UInt64 _size;
|
|
18
|
+
NCrypto::NSha1::CContext _sha;
|
|
19
|
+
bool _calculate;
|
|
20
|
+
public:
|
|
21
|
+
MY_UNKNOWN_IMP
|
|
22
|
+
STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
|
|
23
|
+
void SetStream(ISequentialOutStream *stream) { _stream = stream; }
|
|
24
|
+
void ReleaseStream() { _stream.Release(); }
|
|
25
|
+
void Init(bool calculate = true)
|
|
26
|
+
{
|
|
27
|
+
_size = 0;
|
|
28
|
+
_calculate = calculate;
|
|
29
|
+
_sha.Init();
|
|
30
|
+
}
|
|
31
|
+
void InitSha1() { _sha.Init(); }
|
|
32
|
+
UInt64 GetSize() const { return _size; }
|
|
33
|
+
void Final(Byte *digest) { _sha.Final(digest); }
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
#endif
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// ParseProperties.cpp
|
|
2
|
+
|
|
3
|
+
#include "StdAfx.h"
|
|
4
|
+
|
|
5
|
+
#include "ParseProperties.h"
|
|
6
|
+
|
|
7
|
+
#include "Common/StringToInt.h"
|
|
8
|
+
#include "Common/MyCom.h"
|
|
9
|
+
|
|
10
|
+
HRESULT ParsePropValue(const UString &name, const PROPVARIANT &prop, UInt32 &resValue)
|
|
11
|
+
{
|
|
12
|
+
if (prop.vt == VT_UI4)
|
|
13
|
+
{
|
|
14
|
+
if (!name.IsEmpty())
|
|
15
|
+
return E_INVALIDARG;
|
|
16
|
+
resValue = prop.ulVal;
|
|
17
|
+
}
|
|
18
|
+
else if (prop.vt == VT_EMPTY)
|
|
19
|
+
{
|
|
20
|
+
if(!name.IsEmpty())
|
|
21
|
+
{
|
|
22
|
+
const wchar_t *start = name;
|
|
23
|
+
const wchar_t *end;
|
|
24
|
+
UInt64 v = ConvertStringToUInt64(start, &end);
|
|
25
|
+
if (end - start != name.Length())
|
|
26
|
+
return E_INVALIDARG;
|
|
27
|
+
resValue = (UInt32)v;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else
|
|
31
|
+
return E_INVALIDARG;
|
|
32
|
+
return S_OK;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static const int kLogarithmicSizeLimit = 32;
|
|
36
|
+
static const wchar_t kByteSymbol = L'B';
|
|
37
|
+
static const wchar_t kKiloByteSymbol = L'K';
|
|
38
|
+
static const wchar_t kMegaByteSymbol = L'M';
|
|
39
|
+
|
|
40
|
+
HRESULT ParsePropDictionaryValue(const UString &srcStringSpec, UInt32 &dicSize)
|
|
41
|
+
{
|
|
42
|
+
UString srcString = srcStringSpec;
|
|
43
|
+
srcString.MakeUpper();
|
|
44
|
+
|
|
45
|
+
const wchar_t *start = srcString;
|
|
46
|
+
const wchar_t *end;
|
|
47
|
+
UInt64 number = ConvertStringToUInt64(start, &end);
|
|
48
|
+
int numDigits = (int)(end - start);
|
|
49
|
+
if (numDigits == 0 || srcString.Length() > numDigits + 1)
|
|
50
|
+
return E_INVALIDARG;
|
|
51
|
+
if (srcString.Length() == numDigits)
|
|
52
|
+
{
|
|
53
|
+
if (number >= kLogarithmicSizeLimit)
|
|
54
|
+
return E_INVALIDARG;
|
|
55
|
+
dicSize = (UInt32)1 << (int)number;
|
|
56
|
+
return S_OK;
|
|
57
|
+
}
|
|
58
|
+
switch (srcString[numDigits])
|
|
59
|
+
{
|
|
60
|
+
case kByteSymbol:
|
|
61
|
+
if (number >= ((UInt64)1 << kLogarithmicSizeLimit))
|
|
62
|
+
return E_INVALIDARG;
|
|
63
|
+
dicSize = (UInt32)number;
|
|
64
|
+
break;
|
|
65
|
+
case kKiloByteSymbol:
|
|
66
|
+
if (number >= ((UInt64)1 << (kLogarithmicSizeLimit - 10)))
|
|
67
|
+
return E_INVALIDARG;
|
|
68
|
+
dicSize = (UInt32)(number << 10);
|
|
69
|
+
break;
|
|
70
|
+
case kMegaByteSymbol:
|
|
71
|
+
if (number >= ((UInt64)1 << (kLogarithmicSizeLimit - 20)))
|
|
72
|
+
return E_INVALIDARG;
|
|
73
|
+
dicSize = (UInt32)(number << 20);
|
|
74
|
+
break;
|
|
75
|
+
default:
|
|
76
|
+
return E_INVALIDARG;
|
|
77
|
+
}
|
|
78
|
+
return S_OK;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
HRESULT ParsePropDictionaryValue(const UString &name, const PROPVARIANT &prop, UInt32 &resValue)
|
|
82
|
+
{
|
|
83
|
+
if (name.IsEmpty())
|
|
84
|
+
{
|
|
85
|
+
if (prop.vt == VT_UI4)
|
|
86
|
+
{
|
|
87
|
+
UInt32 logDicSize = prop.ulVal;
|
|
88
|
+
if (logDicSize >= 32)
|
|
89
|
+
return E_INVALIDARG;
|
|
90
|
+
resValue = (UInt32)1 << logDicSize;
|
|
91
|
+
return S_OK;
|
|
92
|
+
}
|
|
93
|
+
if (prop.vt == VT_BSTR)
|
|
94
|
+
return ParsePropDictionaryValue(prop.bstrVal, resValue);
|
|
95
|
+
return E_INVALIDARG;
|
|
96
|
+
}
|
|
97
|
+
return ParsePropDictionaryValue(name, resValue);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
bool StringToBool(const UString &s, bool &res)
|
|
101
|
+
{
|
|
102
|
+
if (s.IsEmpty() || s.CompareNoCase(L"ON") == 0 || s.Compare(L"+") == 0)
|
|
103
|
+
{
|
|
104
|
+
res = true;
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (s.CompareNoCase(L"OFF") == 0 || s.Compare(L"-") == 0)
|
|
108
|
+
{
|
|
109
|
+
res = false;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
HRESULT SetBoolProperty(bool &dest, const PROPVARIANT &value)
|
|
116
|
+
{
|
|
117
|
+
switch(value.vt)
|
|
118
|
+
{
|
|
119
|
+
case VT_EMPTY:
|
|
120
|
+
dest = true;
|
|
121
|
+
return S_OK;
|
|
122
|
+
case VT_BOOL:
|
|
123
|
+
dest = (value.boolVal != VARIANT_FALSE);
|
|
124
|
+
return S_OK;
|
|
125
|
+
/*
|
|
126
|
+
case VT_UI4:
|
|
127
|
+
dest = (value.ulVal != 0);
|
|
128
|
+
break;
|
|
129
|
+
*/
|
|
130
|
+
case VT_BSTR:
|
|
131
|
+
return StringToBool(value.bstrVal, dest) ? S_OK : E_INVALIDARG;
|
|
132
|
+
}
|
|
133
|
+
return E_INVALIDARG;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
int ParseStringToUInt32(const UString &srcString, UInt32 &number)
|
|
137
|
+
{
|
|
138
|
+
const wchar_t *start = srcString;
|
|
139
|
+
const wchar_t *end;
|
|
140
|
+
UInt64 number64 = ConvertStringToUInt64(start, &end);
|
|
141
|
+
if (number64 > 0xFFFFFFFF)
|
|
142
|
+
{
|
|
143
|
+
number = 0;
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
number = (UInt32)number64;
|
|
147
|
+
return (int)(end - start);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
HRESULT ParseMtProp(const UString &name, const PROPVARIANT &prop, UInt32 defaultNumThreads, UInt32 &numThreads)
|
|
151
|
+
{
|
|
152
|
+
if (name.IsEmpty())
|
|
153
|
+
{
|
|
154
|
+
switch(prop.vt)
|
|
155
|
+
{
|
|
156
|
+
case VT_UI4:
|
|
157
|
+
numThreads = prop.ulVal;
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
{
|
|
161
|
+
bool val;
|
|
162
|
+
RINOK(SetBoolProperty(val, prop));
|
|
163
|
+
numThreads = (val ? defaultNumThreads : 1);
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else
|
|
169
|
+
{
|
|
170
|
+
UInt32 number;
|
|
171
|
+
int index = ParseStringToUInt32(name, number);
|
|
172
|
+
if (index != name.Length())
|
|
173
|
+
return E_INVALIDARG;
|
|
174
|
+
numThreads = number;
|
|
175
|
+
}
|
|
176
|
+
return S_OK;
|
|
177
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// ParseProperties.h
|
|
2
|
+
|
|
3
|
+
#ifndef __PARSEPROPERTIES_H
|
|
4
|
+
#define __PARSEPROPERTIES_H
|
|
5
|
+
|
|
6
|
+
#include "Common/MyString.h"
|
|
7
|
+
#include "Common/Types.h"
|
|
8
|
+
|
|
9
|
+
HRESULT ParsePropValue(const UString &name, const PROPVARIANT &prop, UInt32 &resValue);
|
|
10
|
+
HRESULT ParsePropDictionaryValue(const UString &srcStringSpec, UInt32 &dicSize);
|
|
11
|
+
HRESULT ParsePropDictionaryValue(const UString &name, const PROPVARIANT &prop, UInt32 &resValue);
|
|
12
|
+
|
|
13
|
+
bool StringToBool(const UString &s, bool &res);
|
|
14
|
+
HRESULT SetBoolProperty(bool &dest, const PROPVARIANT &value);
|
|
15
|
+
int ParseStringToUInt32(const UString &srcString, UInt32 &number);
|
|
16
|
+
HRESULT ParseMtProp(const UString &name, const PROPVARIANT &prop, UInt32 defaultNumThreads, UInt32 &numThreads);
|
|
17
|
+
|
|
18
|
+
#endif
|
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
// CpioHandler.cpp
|
|
2
|
+
|
|
3
|
+
#include "StdAfx.h"
|
|
4
|
+
|
|
5
|
+
#include "Common/ComTry.h"
|
|
6
|
+
#include "Common/StringConvert.h"
|
|
7
|
+
#include "Common/StringToInt.h"
|
|
8
|
+
|
|
9
|
+
#include "Windows/PropVariant.h"
|
|
10
|
+
#include "Windows/Time.h"
|
|
11
|
+
|
|
12
|
+
#include "../Common/LimitedStreams.h"
|
|
13
|
+
#include "../Common/ProgressUtils.h"
|
|
14
|
+
#include "../Common/RegisterArc.h"
|
|
15
|
+
#include "../Common/StreamUtils.h"
|
|
16
|
+
|
|
17
|
+
#include "../Compress/CopyCoder.h"
|
|
18
|
+
|
|
19
|
+
#include "Common/ItemNameUtils.h"
|
|
20
|
+
|
|
21
|
+
namespace NArchive {
|
|
22
|
+
namespace NCpio {
|
|
23
|
+
|
|
24
|
+
namespace NFileHeader
|
|
25
|
+
{
|
|
26
|
+
namespace NMagic
|
|
27
|
+
{
|
|
28
|
+
const char *kMagic1 = "070701";
|
|
29
|
+
const char *kMagic2 = "070702";
|
|
30
|
+
const char *kMagic3 = "070707";
|
|
31
|
+
const char *kEndName = "TRAILER!!!";
|
|
32
|
+
|
|
33
|
+
const Byte kMagicForRecord2[2] = { 0xC7, 0x71 };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const UInt32 kRecord2Size = 26;
|
|
37
|
+
/*
|
|
38
|
+
struct CRecord2
|
|
39
|
+
{
|
|
40
|
+
unsigned short c_magic;
|
|
41
|
+
short c_dev;
|
|
42
|
+
unsigned short c_ino;
|
|
43
|
+
unsigned short c_mode;
|
|
44
|
+
unsigned short c_uid;
|
|
45
|
+
unsigned short c_gid;
|
|
46
|
+
unsigned short c_nlink;
|
|
47
|
+
short c_rdev;
|
|
48
|
+
unsigned short c_mtimes[2];
|
|
49
|
+
unsigned short c_namesize;
|
|
50
|
+
unsigned short c_filesizes[2];
|
|
51
|
+
};
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
const UInt32 kRecordSize = 110;
|
|
55
|
+
/*
|
|
56
|
+
struct CRecord
|
|
57
|
+
{
|
|
58
|
+
char Magic[6]; // "070701" for "new" portable format, "070702" for CRC format
|
|
59
|
+
char inode[8];
|
|
60
|
+
char Mode[8];
|
|
61
|
+
char UID[8];
|
|
62
|
+
char GID[8];
|
|
63
|
+
char nlink[8];
|
|
64
|
+
char mtime[8];
|
|
65
|
+
char Size[8]; // must be 0 for FIFOs and directories
|
|
66
|
+
char DevMajor[8];
|
|
67
|
+
char DevMinor[8];
|
|
68
|
+
char RDevMajor[8]; //only valid for chr and blk special files
|
|
69
|
+
char RDevMinor[8]; //only valid for chr and blk special files
|
|
70
|
+
char NameSize[8]; // count includes terminating NUL in pathname
|
|
71
|
+
char ChkSum[8]; // 0 for "new" portable format; for CRC format the sum of all the bytes in the file
|
|
72
|
+
bool CheckMagic() const
|
|
73
|
+
{ return memcmp(Magic, NMagic::kMagic1, 6) == 0 ||
|
|
74
|
+
memcmp(Magic, NMagic::kMagic2, 6) == 0; };
|
|
75
|
+
};
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
const UInt32 kOctRecordSize = 76;
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
struct CItem
|
|
83
|
+
{
|
|
84
|
+
AString Name;
|
|
85
|
+
UInt32 inode;
|
|
86
|
+
UInt32 Mode;
|
|
87
|
+
UInt32 UID;
|
|
88
|
+
UInt32 GID;
|
|
89
|
+
UInt32 Size;
|
|
90
|
+
UInt32 MTime;
|
|
91
|
+
|
|
92
|
+
// char LinkFlag;
|
|
93
|
+
// AString LinkName; ?????
|
|
94
|
+
char Magic[8];
|
|
95
|
+
UInt32 NumLinks;
|
|
96
|
+
UInt32 DevMajor;
|
|
97
|
+
UInt32 DevMinor;
|
|
98
|
+
UInt32 RDevMajor;
|
|
99
|
+
UInt32 RDevMinor;
|
|
100
|
+
UInt32 ChkSum;
|
|
101
|
+
|
|
102
|
+
UInt32 Align;
|
|
103
|
+
|
|
104
|
+
bool IsDir() const { return (Mode & 0170000) == 0040000; }
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
class CItemEx: public CItem
|
|
108
|
+
{
|
|
109
|
+
public:
|
|
110
|
+
UInt64 HeaderPosition;
|
|
111
|
+
UInt32 HeaderSize;
|
|
112
|
+
UInt64 GetDataPosition() const { return HeaderPosition + HeaderSize; };
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const UInt32 kMaxBlockSize = NFileHeader::kRecordSize;
|
|
116
|
+
|
|
117
|
+
class CInArchive
|
|
118
|
+
{
|
|
119
|
+
CMyComPtr<IInStream> m_Stream;
|
|
120
|
+
UInt64 m_Position;
|
|
121
|
+
|
|
122
|
+
UInt16 _blockSize;
|
|
123
|
+
Byte _block[kMaxBlockSize];
|
|
124
|
+
UInt32 _blockPos;
|
|
125
|
+
Byte ReadByte();
|
|
126
|
+
UInt16 ReadUInt16();
|
|
127
|
+
UInt32 ReadUInt32();
|
|
128
|
+
|
|
129
|
+
bool ReadNumber(UInt32 &resultValue);
|
|
130
|
+
bool ReadOctNumber(int size, UInt32 &resultValue);
|
|
131
|
+
|
|
132
|
+
HRESULT ReadBytes(void *data, UInt32 size, UInt32 &processedSize);
|
|
133
|
+
public:
|
|
134
|
+
HRESULT Open(IInStream *inStream);
|
|
135
|
+
HRESULT GetNextItem(bool &filled, CItemEx &itemInfo);
|
|
136
|
+
HRESULT Skip(UInt64 numBytes);
|
|
137
|
+
HRESULT SkipDataRecords(UInt64 dataSize, UInt32 align);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
HRESULT CInArchive::ReadBytes(void *data, UInt32 size, UInt32 &processedSize)
|
|
141
|
+
{
|
|
142
|
+
size_t realProcessedSize = size;
|
|
143
|
+
RINOK(ReadStream(m_Stream, data, &realProcessedSize));
|
|
144
|
+
processedSize = (UInt32)realProcessedSize;
|
|
145
|
+
m_Position += processedSize;
|
|
146
|
+
return S_OK;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
Byte CInArchive::ReadByte()
|
|
150
|
+
{
|
|
151
|
+
if (_blockPos >= _blockSize)
|
|
152
|
+
throw "Incorrect cpio archive";
|
|
153
|
+
return _block[_blockPos++];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
UInt16 CInArchive::ReadUInt16()
|
|
157
|
+
{
|
|
158
|
+
UInt16 value = 0;
|
|
159
|
+
for (int i = 0; i < 2; i++)
|
|
160
|
+
{
|
|
161
|
+
Byte b = ReadByte();
|
|
162
|
+
value |= (UInt16(b) << (8 * i));
|
|
163
|
+
}
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
UInt32 CInArchive::ReadUInt32()
|
|
168
|
+
{
|
|
169
|
+
UInt32 value = 0;
|
|
170
|
+
for (int i = 0; i < 4; i++)
|
|
171
|
+
{
|
|
172
|
+
Byte b = ReadByte();
|
|
173
|
+
value |= (UInt32(b) << (8 * i));
|
|
174
|
+
}
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
HRESULT CInArchive::Open(IInStream *inStream)
|
|
179
|
+
{
|
|
180
|
+
RINOK(inStream->Seek(0, STREAM_SEEK_CUR, &m_Position));
|
|
181
|
+
m_Stream = inStream;
|
|
182
|
+
return S_OK;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
bool CInArchive::ReadNumber(UInt32 &resultValue)
|
|
186
|
+
{
|
|
187
|
+
resultValue = 0;
|
|
188
|
+
for (int i = 0; i < 8; i++)
|
|
189
|
+
{
|
|
190
|
+
char c = char(ReadByte());
|
|
191
|
+
int d;
|
|
192
|
+
if (c >= '0' && c <= '9')
|
|
193
|
+
d = c - '0';
|
|
194
|
+
else if (c >= 'A' && c <= 'F')
|
|
195
|
+
d = 10 + c - 'A';
|
|
196
|
+
else if (c >= 'a' && c <= 'f')
|
|
197
|
+
d = 10 + c - 'a';
|
|
198
|
+
else
|
|
199
|
+
return false;
|
|
200
|
+
resultValue *= 0x10;
|
|
201
|
+
resultValue += d;
|
|
202
|
+
}
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
static bool OctalToNumber(const char *s, UInt64 &res)
|
|
207
|
+
{
|
|
208
|
+
const char *end;
|
|
209
|
+
res = ConvertOctStringToUInt64(s, &end);
|
|
210
|
+
return (*end == ' ' || *end == 0);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
static bool OctalToNumber32(const char *s, UInt32 &res)
|
|
214
|
+
{
|
|
215
|
+
UInt64 res64;
|
|
216
|
+
if (!OctalToNumber(s, res64))
|
|
217
|
+
return false;
|
|
218
|
+
res = (UInt32)res64;
|
|
219
|
+
return (res64 <= 0xFFFFFFFF);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
bool CInArchive::ReadOctNumber(int size, UInt32 &resultValue)
|
|
223
|
+
{
|
|
224
|
+
char sz[32 + 4];
|
|
225
|
+
int i;
|
|
226
|
+
for (i = 0; i < size && i < 32; i++)
|
|
227
|
+
sz[i] = (char)ReadByte();
|
|
228
|
+
sz[i] = 0;
|
|
229
|
+
return OctalToNumber32(sz, resultValue);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
#define GetFromHex(y) { if (!ReadNumber(y)) return S_FALSE; }
|
|
233
|
+
#define GetFromOct6(y) { if (!ReadOctNumber(6, y)) return S_FALSE; }
|
|
234
|
+
#define GetFromOct11(y) { if (!ReadOctNumber(11, y)) return S_FALSE; }
|
|
235
|
+
|
|
236
|
+
static unsigned short ConvertValue(unsigned short value, bool convert)
|
|
237
|
+
{
|
|
238
|
+
if (!convert)
|
|
239
|
+
return value;
|
|
240
|
+
return (unsigned short)((((unsigned short)(value & 0xFF)) << 8) | (value >> 8));
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
static UInt32 GetAlignedSize(UInt32 size, UInt32 align)
|
|
244
|
+
{
|
|
245
|
+
while ((size & (align - 1)) != 0)
|
|
246
|
+
size++;
|
|
247
|
+
return size;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
HRESULT CInArchive::GetNextItem(bool &filled, CItemEx &item)
|
|
252
|
+
{
|
|
253
|
+
filled = false;
|
|
254
|
+
|
|
255
|
+
UInt32 processedSize;
|
|
256
|
+
item.HeaderPosition = m_Position;
|
|
257
|
+
|
|
258
|
+
_blockSize = kMaxBlockSize;
|
|
259
|
+
RINOK(ReadBytes(_block, 2, processedSize));
|
|
260
|
+
if (processedSize != 2)
|
|
261
|
+
return S_FALSE;
|
|
262
|
+
_blockPos = 0;
|
|
263
|
+
|
|
264
|
+
UInt32 nameSize;
|
|
265
|
+
|
|
266
|
+
bool oldBE =
|
|
267
|
+
_block[0] == NFileHeader::NMagic::kMagicForRecord2[1] &&
|
|
268
|
+
_block[1] == NFileHeader::NMagic::kMagicForRecord2[0];
|
|
269
|
+
|
|
270
|
+
bool binMode = (_block[0] == NFileHeader::NMagic::kMagicForRecord2[0] &&
|
|
271
|
+
_block[1] == NFileHeader::NMagic::kMagicForRecord2[1]) ||
|
|
272
|
+
oldBE;
|
|
273
|
+
|
|
274
|
+
if (binMode)
|
|
275
|
+
{
|
|
276
|
+
RINOK(ReadBytes(_block + 2, NFileHeader::kRecord2Size - 2, processedSize));
|
|
277
|
+
if (processedSize != NFileHeader::kRecord2Size - 2)
|
|
278
|
+
return S_FALSE;
|
|
279
|
+
item.Align = 2;
|
|
280
|
+
_blockPos = 2;
|
|
281
|
+
item.DevMajor = 0;
|
|
282
|
+
item.DevMinor = ConvertValue(ReadUInt16(), oldBE);
|
|
283
|
+
item.inode = ConvertValue(ReadUInt16(), oldBE);
|
|
284
|
+
item.Mode = ConvertValue(ReadUInt16(), oldBE);
|
|
285
|
+
item.UID = ConvertValue(ReadUInt16(), oldBE);
|
|
286
|
+
item.GID = ConvertValue(ReadUInt16(), oldBE);
|
|
287
|
+
item.NumLinks = ConvertValue(ReadUInt16(), oldBE);
|
|
288
|
+
item.RDevMajor =0;
|
|
289
|
+
item.RDevMinor = ConvertValue(ReadUInt16(), oldBE);
|
|
290
|
+
UInt16 timeHigh = ConvertValue(ReadUInt16(), oldBE);
|
|
291
|
+
UInt16 timeLow = ConvertValue(ReadUInt16(), oldBE);
|
|
292
|
+
item.MTime = (UInt32(timeHigh) << 16) + timeLow;
|
|
293
|
+
nameSize = ConvertValue(ReadUInt16(), oldBE);
|
|
294
|
+
UInt16 sizeHigh = ConvertValue(ReadUInt16(), oldBE);
|
|
295
|
+
UInt16 sizeLow = ConvertValue(ReadUInt16(), oldBE);
|
|
296
|
+
item.Size = (UInt32(sizeHigh) << 16) + sizeLow;
|
|
297
|
+
|
|
298
|
+
item.ChkSum = 0;
|
|
299
|
+
item.HeaderSize = GetAlignedSize(
|
|
300
|
+
nameSize + NFileHeader::kRecord2Size, item.Align);
|
|
301
|
+
nameSize = item.HeaderSize - NFileHeader::kRecord2Size;
|
|
302
|
+
}
|
|
303
|
+
else
|
|
304
|
+
{
|
|
305
|
+
RINOK(ReadBytes(_block + 2, 4, processedSize));
|
|
306
|
+
if (processedSize != 4)
|
|
307
|
+
return S_FALSE;
|
|
308
|
+
|
|
309
|
+
bool magicOK =
|
|
310
|
+
memcmp(_block, NFileHeader::NMagic::kMagic1, 6) == 0 ||
|
|
311
|
+
memcmp(_block, NFileHeader::NMagic::kMagic2, 6) == 0;
|
|
312
|
+
_blockPos = 6;
|
|
313
|
+
if (magicOK)
|
|
314
|
+
{
|
|
315
|
+
RINOK(ReadBytes(_block + 6, NFileHeader::kRecordSize - 6, processedSize));
|
|
316
|
+
if (processedSize != NFileHeader::kRecordSize - 6)
|
|
317
|
+
return S_FALSE;
|
|
318
|
+
item.Align = 4;
|
|
319
|
+
|
|
320
|
+
GetFromHex(item.inode);
|
|
321
|
+
GetFromHex(item.Mode);
|
|
322
|
+
GetFromHex(item.UID);
|
|
323
|
+
GetFromHex(item.GID);
|
|
324
|
+
GetFromHex(item.NumLinks);
|
|
325
|
+
UInt32 mTime;
|
|
326
|
+
GetFromHex(mTime);
|
|
327
|
+
item.MTime = mTime;
|
|
328
|
+
GetFromHex(item.Size);
|
|
329
|
+
GetFromHex(item.DevMajor);
|
|
330
|
+
GetFromHex(item.DevMinor);
|
|
331
|
+
GetFromHex(item.RDevMajor);
|
|
332
|
+
GetFromHex(item.RDevMinor);
|
|
333
|
+
GetFromHex(nameSize);
|
|
334
|
+
GetFromHex(item.ChkSum);
|
|
335
|
+
item.HeaderSize = GetAlignedSize(
|
|
336
|
+
nameSize + NFileHeader::kRecordSize, item.Align);
|
|
337
|
+
nameSize = item.HeaderSize - NFileHeader::kRecordSize;
|
|
338
|
+
}
|
|
339
|
+
else
|
|
340
|
+
{
|
|
341
|
+
if (!memcmp(_block, NFileHeader::NMagic::kMagic3, 6) == 0)
|
|
342
|
+
return S_FALSE;
|
|
343
|
+
RINOK(ReadBytes(_block + 6, NFileHeader::kOctRecordSize - 6, processedSize));
|
|
344
|
+
if (processedSize != NFileHeader::kOctRecordSize - 6)
|
|
345
|
+
return S_FALSE;
|
|
346
|
+
item.Align = 1;
|
|
347
|
+
item.DevMajor = 0;
|
|
348
|
+
GetFromOct6(item.DevMinor);
|
|
349
|
+
GetFromOct6(item.inode);
|
|
350
|
+
GetFromOct6(item.Mode);
|
|
351
|
+
GetFromOct6(item.UID);
|
|
352
|
+
GetFromOct6(item.GID);
|
|
353
|
+
GetFromOct6(item.NumLinks);
|
|
354
|
+
item.RDevMajor = 0;
|
|
355
|
+
GetFromOct6(item.RDevMinor);
|
|
356
|
+
UInt32 mTime;
|
|
357
|
+
GetFromOct11(mTime);
|
|
358
|
+
item.MTime = mTime;
|
|
359
|
+
GetFromOct6(nameSize);
|
|
360
|
+
GetFromOct11(item.Size); // ?????
|
|
361
|
+
item.HeaderSize = GetAlignedSize(
|
|
362
|
+
nameSize + NFileHeader::kOctRecordSize, item.Align);
|
|
363
|
+
nameSize = item.HeaderSize - NFileHeader::kOctRecordSize;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (nameSize == 0 || nameSize >= (1 << 27))
|
|
367
|
+
return E_FAIL;
|
|
368
|
+
RINOK(ReadBytes(item.Name.GetBuffer(nameSize), nameSize, processedSize));
|
|
369
|
+
if (processedSize != nameSize)
|
|
370
|
+
return E_FAIL;
|
|
371
|
+
item.Name.ReleaseBuffer();
|
|
372
|
+
if (strcmp(item.Name, NFileHeader::NMagic::kEndName) == 0)
|
|
373
|
+
return S_OK;
|
|
374
|
+
filled = true;
|
|
375
|
+
return S_OK;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
HRESULT CInArchive::Skip(UInt64 numBytes)
|
|
379
|
+
{
|
|
380
|
+
UInt64 newPostion;
|
|
381
|
+
RINOK(m_Stream->Seek(numBytes, STREAM_SEEK_CUR, &newPostion));
|
|
382
|
+
m_Position += numBytes;
|
|
383
|
+
if (m_Position != newPostion)
|
|
384
|
+
return E_FAIL;
|
|
385
|
+
return S_OK;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
HRESULT CInArchive::SkipDataRecords(UInt64 dataSize, UInt32 align)
|
|
389
|
+
{
|
|
390
|
+
while ((dataSize & (align - 1)) != 0)
|
|
391
|
+
dataSize++;
|
|
392
|
+
return Skip(dataSize);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
class CHandler:
|
|
397
|
+
public IInArchive,
|
|
398
|
+
public IInArchiveGetStream,
|
|
399
|
+
public CMyUnknownImp
|
|
400
|
+
{
|
|
401
|
+
CObjectVector<CItemEx> _items;
|
|
402
|
+
CMyComPtr<IInStream> _stream;
|
|
403
|
+
public:
|
|
404
|
+
MY_UNKNOWN_IMP2(IInArchive, IInArchiveGetStream)
|
|
405
|
+
INTERFACE_IInArchive(;)
|
|
406
|
+
STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **stream);
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
/*
|
|
410
|
+
enum
|
|
411
|
+
{
|
|
412
|
+
kpidinode = kpidUserDefined,
|
|
413
|
+
kpidiChkSum
|
|
414
|
+
};
|
|
415
|
+
*/
|
|
416
|
+
|
|
417
|
+
STATPROPSTG kProps[] =
|
|
418
|
+
{
|
|
419
|
+
{ NULL, kpidPath, VT_BSTR},
|
|
420
|
+
{ NULL, kpidIsDir, VT_BOOL},
|
|
421
|
+
{ NULL, kpidSize, VT_UI8},
|
|
422
|
+
{ NULL, kpidPackSize, VT_UI8},
|
|
423
|
+
{ NULL, kpidMTime, VT_FILETIME},
|
|
424
|
+
{ NULL, kpidPosixAttrib, VT_UI4},
|
|
425
|
+
// { L"inode", kpidinode, VT_UI4}
|
|
426
|
+
// { L"CheckSum", kpidiChkSum, VT_UI4}
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
IMP_IInArchive_Props
|
|
430
|
+
IMP_IInArchive_ArcProps_NO
|
|
431
|
+
|
|
432
|
+
STDMETHODIMP CHandler::Open(IInStream *stream, const UInt64 *, IArchiveOpenCallback *callback)
|
|
433
|
+
{
|
|
434
|
+
COM_TRY_BEGIN
|
|
435
|
+
// try
|
|
436
|
+
{
|
|
437
|
+
CInArchive archive;
|
|
438
|
+
|
|
439
|
+
UInt64 endPos = 0;
|
|
440
|
+
bool needSetTotal = true;
|
|
441
|
+
|
|
442
|
+
if (callback != NULL)
|
|
443
|
+
{
|
|
444
|
+
RINOK(stream->Seek(0, STREAM_SEEK_END, &endPos));
|
|
445
|
+
RINOK(stream->Seek(0, STREAM_SEEK_SET, NULL));
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
RINOK(archive.Open(stream));
|
|
449
|
+
|
|
450
|
+
_items.Clear();
|
|
451
|
+
|
|
452
|
+
for (;;)
|
|
453
|
+
{
|
|
454
|
+
CItemEx item;
|
|
455
|
+
bool filled;
|
|
456
|
+
HRESULT result = archive.GetNextItem(filled, item);
|
|
457
|
+
if (result == S_FALSE)
|
|
458
|
+
return S_FALSE;
|
|
459
|
+
if (result != S_OK)
|
|
460
|
+
return S_FALSE;
|
|
461
|
+
if (!filled)
|
|
462
|
+
break;
|
|
463
|
+
_items.Add(item);
|
|
464
|
+
archive.SkipDataRecords(item.Size, item.Align);
|
|
465
|
+
if (callback != NULL)
|
|
466
|
+
{
|
|
467
|
+
if (needSetTotal)
|
|
468
|
+
{
|
|
469
|
+
RINOK(callback->SetTotal(NULL, &endPos));
|
|
470
|
+
needSetTotal = false;
|
|
471
|
+
}
|
|
472
|
+
if (_items.Size() % 100 == 0)
|
|
473
|
+
{
|
|
474
|
+
UInt64 numFiles = _items.Size();
|
|
475
|
+
UInt64 numBytes = item.HeaderPosition;
|
|
476
|
+
RINOK(callback->SetCompleted(&numFiles, &numBytes));
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (_items.Size() == 0)
|
|
481
|
+
return S_FALSE;
|
|
482
|
+
|
|
483
|
+
_stream = stream;
|
|
484
|
+
}
|
|
485
|
+
/*
|
|
486
|
+
catch(...)
|
|
487
|
+
{
|
|
488
|
+
return S_FALSE;
|
|
489
|
+
}
|
|
490
|
+
*/
|
|
491
|
+
return S_OK;
|
|
492
|
+
COM_TRY_END
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
STDMETHODIMP CHandler::Close()
|
|
496
|
+
{
|
|
497
|
+
_items.Clear();
|
|
498
|
+
_stream.Release();
|
|
499
|
+
return S_OK;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
|
|
503
|
+
{
|
|
504
|
+
*numItems = _items.Size();
|
|
505
|
+
return S_OK;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)
|
|
509
|
+
{
|
|
510
|
+
COM_TRY_BEGIN
|
|
511
|
+
NWindows::NCOM::CPropVariant prop;
|
|
512
|
+
const CItemEx &item = _items[index];
|
|
513
|
+
|
|
514
|
+
switch(propID)
|
|
515
|
+
{
|
|
516
|
+
case kpidPath: prop = NItemName::GetOSName(MultiByteToUnicodeString(item.Name, CP_OEMCP)); break;
|
|
517
|
+
case kpidIsDir: prop = item.IsDir(); break;
|
|
518
|
+
case kpidSize:
|
|
519
|
+
case kpidPackSize:
|
|
520
|
+
prop = (UInt64)item.Size;
|
|
521
|
+
break;
|
|
522
|
+
case kpidMTime:
|
|
523
|
+
{
|
|
524
|
+
if (item.MTime != 0)
|
|
525
|
+
{
|
|
526
|
+
FILETIME utc;
|
|
527
|
+
NWindows::NTime::UnixTimeToFileTime(item.MTime, utc);
|
|
528
|
+
prop = utc;
|
|
529
|
+
}
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
case kpidPosixAttrib: prop = item.Mode; break;
|
|
533
|
+
/*
|
|
534
|
+
case kpidinode: prop = item.inode; break;
|
|
535
|
+
case kpidiChkSum: prop = item.ChkSum; break;
|
|
536
|
+
*/
|
|
537
|
+
}
|
|
538
|
+
prop.Detach(value);
|
|
539
|
+
return S_OK;
|
|
540
|
+
COM_TRY_END
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
|
|
544
|
+
Int32 testMode, IArchiveExtractCallback *extractCallback)
|
|
545
|
+
{
|
|
546
|
+
COM_TRY_BEGIN
|
|
547
|
+
bool allFilesMode = (numItems == (UInt32)-1);
|
|
548
|
+
if (allFilesMode)
|
|
549
|
+
numItems = _items.Size();
|
|
550
|
+
if (numItems == 0)
|
|
551
|
+
return S_OK;
|
|
552
|
+
UInt64 totalSize = 0;
|
|
553
|
+
UInt32 i;
|
|
554
|
+
for (i = 0; i < numItems; i++)
|
|
555
|
+
totalSize += _items[allFilesMode ? i : indices[i]].Size;
|
|
556
|
+
extractCallback->SetTotal(totalSize);
|
|
557
|
+
|
|
558
|
+
UInt64 currentTotalSize = 0;
|
|
559
|
+
|
|
560
|
+
NCompress::CCopyCoder *copyCoderSpec = new NCompress::CCopyCoder();
|
|
561
|
+
CMyComPtr<ICompressCoder> copyCoder = copyCoderSpec;
|
|
562
|
+
|
|
563
|
+
CLocalProgress *lps = new CLocalProgress;
|
|
564
|
+
CMyComPtr<ICompressProgressInfo> progress = lps;
|
|
565
|
+
lps->Init(extractCallback, false);
|
|
566
|
+
|
|
567
|
+
CLimitedSequentialInStream *streamSpec = new CLimitedSequentialInStream;
|
|
568
|
+
CMyComPtr<ISequentialInStream> inStream(streamSpec);
|
|
569
|
+
streamSpec->SetStream(_stream);
|
|
570
|
+
|
|
571
|
+
for (i = 0; i < numItems; i++)
|
|
572
|
+
{
|
|
573
|
+
lps->InSize = lps->OutSize = currentTotalSize;
|
|
574
|
+
RINOK(lps->SetCur());
|
|
575
|
+
CMyComPtr<ISequentialOutStream> outStream;
|
|
576
|
+
Int32 askMode = testMode ?
|
|
577
|
+
NExtract::NAskMode::kTest :
|
|
578
|
+
NExtract::NAskMode::kExtract;
|
|
579
|
+
Int32 index = allFilesMode ? i : indices[i];
|
|
580
|
+
const CItemEx &item = _items[index];
|
|
581
|
+
RINOK(extractCallback->GetStream(index, &outStream, askMode));
|
|
582
|
+
currentTotalSize += item.Size;
|
|
583
|
+
if (item.IsDir())
|
|
584
|
+
{
|
|
585
|
+
RINOK(extractCallback->PrepareOperation(askMode));
|
|
586
|
+
RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK));
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
if (!testMode && !outStream)
|
|
590
|
+
continue;
|
|
591
|
+
RINOK(extractCallback->PrepareOperation(askMode));
|
|
592
|
+
if (testMode)
|
|
593
|
+
{
|
|
594
|
+
RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK));
|
|
595
|
+
continue;
|
|
596
|
+
}
|
|
597
|
+
RINOK(_stream->Seek(item.GetDataPosition(), STREAM_SEEK_SET, NULL));
|
|
598
|
+
streamSpec->Init(item.Size);
|
|
599
|
+
RINOK(copyCoder->Code(inStream, outStream, NULL, NULL, progress));
|
|
600
|
+
outStream.Release();
|
|
601
|
+
RINOK(extractCallback->SetOperationResult((copyCoderSpec->TotalSize == item.Size) ?
|
|
602
|
+
NExtract::NOperationResult::kOK:
|
|
603
|
+
NExtract::NOperationResult::kDataError));
|
|
604
|
+
}
|
|
605
|
+
return S_OK;
|
|
606
|
+
COM_TRY_END
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
STDMETHODIMP CHandler::GetStream(UInt32 index, ISequentialInStream **stream)
|
|
610
|
+
{
|
|
611
|
+
COM_TRY_BEGIN
|
|
612
|
+
const CItemEx &item = _items[index];
|
|
613
|
+
return CreateLimitedInStream(_stream, item.GetDataPosition(), item.Size, stream);
|
|
614
|
+
COM_TRY_END
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
static IInArchive *CreateArc() { return new NArchive::NCpio::CHandler; }
|
|
618
|
+
|
|
619
|
+
static CArcInfo g_ArcInfo =
|
|
620
|
+
{ L"Cpio", L"cpio", 0, 0xED, { 0 }, 0, false, CreateArc, 0 };
|
|
621
|
+
|
|
622
|
+
REGISTER_ARC(Cpio)
|
|
623
|
+
|
|
624
|
+
}}
|