7zip-native 0.0.0-stage → 0.0.1

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.
Files changed (1313) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -2
  3. package/THIRD_PARTY_NOTICES.md +23 -0
  4. package/bench/args.mts +69 -0
  5. package/bench/benchmark.mts +102 -0
  6. package/bench/compare.mts +546 -0
  7. package/bench/concurrency.mts +196 -0
  8. package/binding.gyp +51 -0
  9. package/dist/index.cjs +433 -0
  10. package/dist/index.d.cts +59 -0
  11. package/dist/index.d.mts +59 -0
  12. package/dist/index.d.ts +59 -0
  13. package/dist/index.mjs +429 -0
  14. package/docs/architecture.md +112 -0
  15. package/examples/basic.mts +19 -0
  16. package/native/addon.cpp +2154 -0
  17. package/package.json +85 -5
  18. package/prebuilds/linux-x64/7z.so +0 -0
  19. package/prebuilds/linux-x64/7zip_native.node +0 -0
  20. package/vendor/7zip/.gitattributes +2 -0
  21. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  22. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  23. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  24. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  25. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  26. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  27. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  28. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  29. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  30. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  31. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  32. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  33. package/vendor/7zip/C/7z.h +204 -0
  34. package/vendor/7zip/C/7zAlloc.c +89 -0
  35. package/vendor/7zip/C/7zAlloc.h +19 -0
  36. package/vendor/7zip/C/7zArcIn.c +1701 -0
  37. package/vendor/7zip/C/7zBuf.c +36 -0
  38. package/vendor/7zip/C/7zBuf.h +35 -0
  39. package/vendor/7zip/C/7zBuf2.c +52 -0
  40. package/vendor/7zip/C/7zCrc.c +420 -0
  41. package/vendor/7zip/C/7zCrc.h +28 -0
  42. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  43. package/vendor/7zip/C/7zDec.c +672 -0
  44. package/vendor/7zip/C/7zFile.c +443 -0
  45. package/vendor/7zip/C/7zFile.h +91 -0
  46. package/vendor/7zip/C/7zStream.c +199 -0
  47. package/vendor/7zip/C/7zTypes.h +600 -0
  48. package/vendor/7zip/C/7zVersion.h +27 -0
  49. package/vendor/7zip/C/7zVersion.rc +55 -0
  50. package/vendor/7zip/C/7zWindows.h +107 -0
  51. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  52. package/vendor/7zip/C/Aes.c +429 -0
  53. package/vendor/7zip/C/Aes.h +60 -0
  54. package/vendor/7zip/C/AesOpt.c +1002 -0
  55. package/vendor/7zip/C/Alloc.c +774 -0
  56. package/vendor/7zip/C/Alloc.h +76 -0
  57. package/vendor/7zip/C/Asm_c.mak +12 -0
  58. package/vendor/7zip/C/Bcj2.c +290 -0
  59. package/vendor/7zip/C/Bcj2.h +332 -0
  60. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  61. package/vendor/7zip/C/Blake2.h +105 -0
  62. package/vendor/7zip/C/Blake2s.c +2672 -0
  63. package/vendor/7zip/C/Bra.c +709 -0
  64. package/vendor/7zip/C/Bra.h +105 -0
  65. package/vendor/7zip/C/Bra86.c +187 -0
  66. package/vendor/7zip/C/BraIA64.c +14 -0
  67. package/vendor/7zip/C/BwtSort.c +630 -0
  68. package/vendor/7zip/C/BwtSort.h +27 -0
  69. package/vendor/7zip/C/Compiler.h +287 -0
  70. package/vendor/7zip/C/CpuArch.c +970 -0
  71. package/vendor/7zip/C/CpuArch.h +719 -0
  72. package/vendor/7zip/C/Delta.c +169 -0
  73. package/vendor/7zip/C/Delta.h +19 -0
  74. package/vendor/7zip/C/DllSecur.c +99 -0
  75. package/vendor/7zip/C/DllSecur.h +20 -0
  76. package/vendor/7zip/C/HuffEnc.c +361 -0
  77. package/vendor/7zip/C/HuffEnc.h +23 -0
  78. package/vendor/7zip/C/LzFind.c +1746 -0
  79. package/vendor/7zip/C/LzFind.h +160 -0
  80. package/vendor/7zip/C/LzFindMt.c +1422 -0
  81. package/vendor/7zip/C/LzFindMt.h +114 -0
  82. package/vendor/7zip/C/LzFindOpt.c +578 -0
  83. package/vendor/7zip/C/LzHash.h +34 -0
  84. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  85. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  86. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  87. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  88. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  89. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  90. package/vendor/7zip/C/Lzma86.h +111 -0
  91. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  92. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  93. package/vendor/7zip/C/LzmaDec.c +1367 -0
  94. package/vendor/7zip/C/LzmaDec.h +237 -0
  95. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  96. package/vendor/7zip/C/LzmaEnc.h +85 -0
  97. package/vendor/7zip/C/LzmaLib.c +42 -0
  98. package/vendor/7zip/C/LzmaLib.h +138 -0
  99. package/vendor/7zip/C/Md5.c +206 -0
  100. package/vendor/7zip/C/Md5.h +34 -0
  101. package/vendor/7zip/C/MtCoder.c +604 -0
  102. package/vendor/7zip/C/MtCoder.h +144 -0
  103. package/vendor/7zip/C/MtDec.c +1124 -0
  104. package/vendor/7zip/C/MtDec.h +202 -0
  105. package/vendor/7zip/C/Ppmd.h +169 -0
  106. package/vendor/7zip/C/Ppmd7.c +1131 -0
  107. package/vendor/7zip/C/Ppmd7.h +181 -0
  108. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  109. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  110. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  111. package/vendor/7zip/C/Ppmd8.c +1574 -0
  112. package/vendor/7zip/C/Ppmd8.h +181 -0
  113. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  114. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  115. package/vendor/7zip/C/Precomp.h +127 -0
  116. package/vendor/7zip/C/RotateDefs.h +50 -0
  117. package/vendor/7zip/C/Sha1.c +441 -0
  118. package/vendor/7zip/C/Sha1.h +86 -0
  119. package/vendor/7zip/C/Sha1Opt.c +424 -0
  120. package/vendor/7zip/C/Sha256.c +492 -0
  121. package/vendor/7zip/C/Sha256.h +86 -0
  122. package/vendor/7zip/C/Sha256Opt.c +451 -0
  123. package/vendor/7zip/C/Sha3.c +359 -0
  124. package/vendor/7zip/C/Sha3.h +36 -0
  125. package/vendor/7zip/C/Sha512.c +711 -0
  126. package/vendor/7zip/C/Sha512.h +86 -0
  127. package/vendor/7zip/C/Sha512Opt.c +395 -0
  128. package/vendor/7zip/C/Sort.c +268 -0
  129. package/vendor/7zip/C/Sort.h +15 -0
  130. package/vendor/7zip/C/SwapBytes.c +835 -0
  131. package/vendor/7zip/C/SwapBytes.h +17 -0
  132. package/vendor/7zip/C/Threads.c +826 -0
  133. package/vendor/7zip/C/Threads.h +260 -0
  134. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  135. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  136. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  137. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  138. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  139. package/vendor/7zip/C/Util/7z/makefile +44 -0
  140. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  141. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  142. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  143. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  144. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  145. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  146. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  147. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  148. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  149. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  150. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  151. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  152. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  153. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  154. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  155. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  156. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  157. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  158. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  159. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  160. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  161. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  162. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  163. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  164. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  165. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  166. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  167. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  168. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  169. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  170. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  171. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  172. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  173. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  174. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  175. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  176. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  177. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  178. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  179. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  180. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  181. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  182. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  183. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  184. package/vendor/7zip/C/Xxh64.c +389 -0
  185. package/vendor/7zip/C/Xxh64.h +50 -0
  186. package/vendor/7zip/C/Xz.c +92 -0
  187. package/vendor/7zip/C/Xz.h +542 -0
  188. package/vendor/7zip/C/XzCrc64.c +140 -0
  189. package/vendor/7zip/C/XzCrc64.h +26 -0
  190. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  191. package/vendor/7zip/C/XzDec.c +2865 -0
  192. package/vendor/7zip/C/XzEnc.c +1374 -0
  193. package/vendor/7zip/C/XzEnc.h +62 -0
  194. package/vendor/7zip/C/XzIn.c +385 -0
  195. package/vendor/7zip/C/ZstdDec.c +4067 -0
  196. package/vendor/7zip/C/ZstdDec.h +173 -0
  197. package/vendor/7zip/C/var_clang.mak +11 -0
  198. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  199. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  200. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  201. package/vendor/7zip/C/var_gcc.mak +12 -0
  202. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  203. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  204. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  205. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  206. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  207. package/vendor/7zip/C/warn_clang.mak +1 -0
  208. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  209. package/vendor/7zip/C/warn_gcc.mak +51 -0
  210. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  211. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  212. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  213. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  214. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  215. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  216. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  217. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  218. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  219. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  220. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  221. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  222. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  223. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  224. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  225. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  226. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  245. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  246. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  247. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  248. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  249. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  250. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  251. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  252. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  253. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  254. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  255. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  256. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  257. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  258. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  259. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  260. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  261. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  264. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  265. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  266. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  271. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  285. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  293. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  294. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  295. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  296. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  297. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  298. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  299. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  300. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  301. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  302. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  303. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  304. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  305. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  306. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  307. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  308. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  309. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  310. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  311. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  312. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  313. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  314. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  315. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  316. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  317. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  318. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  319. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  320. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  321. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  322. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  323. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  324. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  348. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  349. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  350. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  351. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  352. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  353. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  354. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  355. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  362. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  363. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  364. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  365. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  366. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  367. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  368. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  369. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  377. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  378. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  379. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  380. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  381. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  382. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  391. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  392. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  393. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  394. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  395. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  396. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  402. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  403. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  404. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  405. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  406. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  414. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  415. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  416. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  417. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  418. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  419. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  420. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  428. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  429. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  430. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  431. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  435. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  436. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  437. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  438. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  439. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  440. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  441. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  442. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  443. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  444. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  445. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  446. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  447. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  448. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  449. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  450. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  451. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  528. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  529. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  530. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  531. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  532. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  533. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  534. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  535. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  536. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  537. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  538. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  539. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  540. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  541. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  542. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  543. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  544. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  545. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  546. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  547. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  548. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  549. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  550. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  551. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  552. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  553. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  554. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  555. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  556. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  557. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  558. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  559. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  560. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  561. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  562. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  563. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  564. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  565. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  566. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  567. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  568. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  569. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  570. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  571. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  572. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  573. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  574. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  575. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  576. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  577. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  578. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  579. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  580. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  581. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  582. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  583. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  584. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  585. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  586. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  587. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  588. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  589. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  590. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  591. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  600. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  602. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  603. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  604. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  605. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  606. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  607. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  608. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  609. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  610. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  611. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  612. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  613. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  614. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  615. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  616. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  617. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  618. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  619. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  620. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  621. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  622. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  623. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  624. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  625. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  626. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  627. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  628. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  629. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  630. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  631. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  632. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  633. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  634. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  639. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  641. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  643. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  644. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  645. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  646. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  647. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  648. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  649. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  650. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  651. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  652. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  654. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  655. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  657. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  658. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  659. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  660. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  661. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  662. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  663. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  664. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  665. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  666. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  667. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  668. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  669. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  670. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  671. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  672. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  673. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  674. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  675. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  676. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  679. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  680. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  681. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  682. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  683. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  684. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  685. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  686. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  687. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  688. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  689. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  690. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  691. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  692. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  693. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  694. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  695. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  696. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  712. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  713. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  714. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  715. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  716. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  717. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  718. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  719. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  720. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  721. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  722. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  723. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  724. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  725. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  726. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  727. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  728. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  729. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  730. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  731. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  732. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  733. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  734. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  735. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  736. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  737. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  738. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  739. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  740. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  741. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  742. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  743. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  744. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  745. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  746. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  747. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  748. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  749. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  750. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  751. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  752. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  753. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  754. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  755. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  756. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  757. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  758. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  759. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  760. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  761. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  762. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  804. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  805. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  806. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  807. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  808. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  809. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  810. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  811. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  812. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  813. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  814. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  815. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  816. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  817. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  833. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  834. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  835. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  836. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  837. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  838. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  839. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  840. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  841. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  842. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  843. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  844. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  845. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  846. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  853. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  854. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  855. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  856. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  857. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  858. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  859. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  860. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  861. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  862. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  863. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  864. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  865. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  866. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  879. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  880. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  881. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  882. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  883. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  884. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  885. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  886. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  887. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  888. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  889. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  890. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  891. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  892. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1076. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1077. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1078. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1079. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1080. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1081. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1082. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1083. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1084. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1085. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1086. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1087. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1088. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1089. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1114. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1115. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1116. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1117. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1118. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1119. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1120. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1121. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1122. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1123. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1124. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1125. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1126. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1127. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1128. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1129. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1130. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1131. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1132. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1133. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1134. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1135. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1136. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1137. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1138. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1140. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1141. package/vendor/7zip/CPP/Build.mak +259 -0
  1142. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1143. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1144. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1145. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1146. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1147. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1148. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1149. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1150. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1151. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1152. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1153. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1154. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1155. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1156. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1157. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1158. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1159. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1160. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1161. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1162. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1163. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1164. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1165. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1166. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1167. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1168. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1169. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1170. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1171. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1172. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1173. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1174. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1175. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1176. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1177. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1178. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1179. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1180. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1181. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1182. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1183. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1184. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1185. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1186. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1187. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1188. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1189. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1190. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1191. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1192. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1193. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1194. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1195. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1196. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1197. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1198. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1199. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1200. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1201. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1202. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1203. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1204. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1205. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1206. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1207. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1208. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1209. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1210. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1211. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1212. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1213. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1214. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1215. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1216. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1217. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1218. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1219. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1220. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1221. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1222. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1223. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1224. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1225. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1226. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1227. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1228. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1229. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1230. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1231. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1232. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1233. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1234. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1235. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1236. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1237. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1238. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1241. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1242. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1243. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1244. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1245. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1246. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1247. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1248. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1249. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1250. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1251. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1252. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1253. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1254. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1255. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1256. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1257. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1258. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1259. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1260. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1261. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1262. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1263. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1264. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1265. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1266. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1267. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1268. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1269. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1270. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1271. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1272. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1273. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1274. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1275. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1276. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1277. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1278. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1279. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1280. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1281. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1282. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1283. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1284. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1285. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1286. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1287. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1288. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1289. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1290. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1291. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1292. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1293. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1294. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1295. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1296. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1297. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1298. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1299. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1300. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1301. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1302. package/vendor/7zip/DOC/7zC.txt +187 -0
  1303. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1304. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1305. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1306. package/vendor/7zip/DOC/License.txt +151 -0
  1307. package/vendor/7zip/DOC/Methods.txt +177 -0
  1308. package/vendor/7zip/DOC/copying.txt +502 -0
  1309. package/vendor/7zip/DOC/lzma.txt +345 -0
  1310. package/vendor/7zip/DOC/readme.txt +299 -0
  1311. package/vendor/7zip/DOC/src-history.txt +884 -0
  1312. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1313. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,2631 @@
1
+ // HfsHandler.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ #include "../../../C/CpuArch.h"
6
+
7
+ #include "../../Common/ComTry.h"
8
+ #include "../../Common/MyString.h"
9
+
10
+ #include "../../Windows/PropVariantUtils.h"
11
+
12
+ #include "../Common/LimitedStreams.h"
13
+ #include "../Common/RegisterArc.h"
14
+ #include "../Common/StreamObjects.h"
15
+ #include "../Common/StreamUtils.h"
16
+
17
+ #include "HfsHandler.h"
18
+
19
+ /* if HFS_SHOW_ALT_STREAMS is defined, the handler will show attribute files
20
+ and resource forks. In most cases it looks useless. So we disable it. */
21
+
22
+ #define HFS_SHOW_ALT_STREAMS
23
+
24
+ #define Get16(p) GetBe16(p)
25
+ #define Get32(p) GetBe32(p)
26
+ #define Get64(p) GetBe64(p)
27
+
28
+ #define Get16a(p) GetBe16a(p)
29
+ #define Get32a(p) GetBe32a(p)
30
+
31
+ namespace NArchive {
32
+ namespace NHfs {
33
+
34
+ static const char * const kResFileName = "rsrc"; // "com.apple.ResourceFork";
35
+
36
+ struct CExtent
37
+ {
38
+ UInt32 Pos;
39
+ UInt32 NumBlocks;
40
+ };
41
+
42
+ struct CIdExtents
43
+ {
44
+ UInt32 ID;
45
+ UInt32 StartBlock;
46
+ CRecordVector<CExtent> Extents;
47
+ };
48
+
49
+ struct CFork
50
+ {
51
+ UInt64 Size;
52
+ UInt32 NumBlocks;
53
+ // UInt32 ClumpSize;
54
+ CRecordVector<CExtent> Extents;
55
+
56
+ CFork(): Size(0), NumBlocks(0) {}
57
+
58
+ void Parse(const Byte *p);
59
+
60
+ bool IsEmpty() const { return Size == 0 && NumBlocks == 0 && Extents.Size() == 0; }
61
+
62
+ UInt32 Calc_NumBlocks_from_Extents() const;
63
+ bool Check_NumBlocks() const;
64
+
65
+ bool Check_Size_with_NumBlocks(unsigned blockSizeLog) const
66
+ {
67
+ return Size <= ((UInt64)NumBlocks << blockSizeLog);
68
+ }
69
+
70
+ bool IsOk(unsigned blockSizeLog) const
71
+ {
72
+ // we don't check cases with extra (empty) blocks in last extent
73
+ return Check_NumBlocks() && Check_Size_with_NumBlocks(blockSizeLog);
74
+ }
75
+
76
+ bool Upgrade(const CObjectVector<CIdExtents> &items, UInt32 id);
77
+ bool UpgradeAndTest(const CObjectVector<CIdExtents> &items, UInt32 id, unsigned blockSizeLog)
78
+ {
79
+ if (!Upgrade(items, id))
80
+ return false;
81
+ return IsOk(blockSizeLog);
82
+ }
83
+ };
84
+
85
+ static const unsigned kNumFixedExtents = 8;
86
+ static const unsigned kForkRecSize = 16 + kNumFixedExtents * 8;
87
+
88
+
89
+ void CFork::Parse(const Byte *p)
90
+ {
91
+ Extents.Clear();
92
+ Size = Get64(p);
93
+ // ClumpSize = Get32(p + 8);
94
+ NumBlocks = Get32(p + 12);
95
+ p += 16;
96
+ for (unsigned i = 0; i < kNumFixedExtents; i++, p += 8)
97
+ {
98
+ CExtent e;
99
+ e.Pos = Get32(p);
100
+ e.NumBlocks = Get32(p + 4);
101
+ if (e.NumBlocks != 0)
102
+ Extents.Add(e);
103
+ }
104
+ }
105
+
106
+ UInt32 CFork::Calc_NumBlocks_from_Extents() const
107
+ {
108
+ UInt32 num = 0;
109
+ FOR_VECTOR (i, Extents)
110
+ num += Extents[i].NumBlocks;
111
+ return num;
112
+ }
113
+
114
+ bool CFork::Check_NumBlocks() const
115
+ {
116
+ UInt32 num = NumBlocks;
117
+ FOR_VECTOR (i, Extents)
118
+ {
119
+ const UInt32 cur = Extents[i].NumBlocks;
120
+ if (num < cur)
121
+ return false;
122
+ num -= cur;
123
+ }
124
+ return num == 0;
125
+ }
126
+
127
+ struct CIdIndexPair
128
+ {
129
+ UInt32 ID;
130
+ unsigned Index;
131
+
132
+ int Compare(const CIdIndexPair &a) const;
133
+ };
134
+
135
+ #define RINOZ(x) { const int _t_ = (x); if (_t_ != 0) return _t_; }
136
+
137
+ int CIdIndexPair::Compare(const CIdIndexPair &a) const
138
+ {
139
+ RINOZ(MyCompare(ID, a.ID))
140
+ return MyCompare(Index, a.Index);
141
+ }
142
+
143
+ static int FindItemIndex(const CRecordVector<CIdIndexPair> &items, UInt32 id)
144
+ {
145
+ unsigned left = 0, right = items.Size();
146
+ while (left != right)
147
+ {
148
+ const unsigned mid = (left + right) / 2;
149
+ const UInt32 midVal = items[mid].ID;
150
+ if (id == midVal)
151
+ return (int)items[mid].Index;
152
+ if (id < midVal)
153
+ right = mid;
154
+ else
155
+ left = mid + 1;
156
+ }
157
+ return -1;
158
+ }
159
+
160
+ static int Find_in_IdExtents(const CObjectVector<CIdExtents> &items, UInt32 id)
161
+ {
162
+ unsigned left = 0, right = items.Size();
163
+ while (left != right)
164
+ {
165
+ const unsigned mid = (left + right) / 2;
166
+ const UInt32 midVal = items[mid].ID;
167
+ if (id == midVal)
168
+ return (int)mid;
169
+ if (id < midVal)
170
+ right = mid;
171
+ else
172
+ left = mid + 1;
173
+ }
174
+ return -1;
175
+ }
176
+
177
+ bool CFork::Upgrade(const CObjectVector<CIdExtents> &items, UInt32 id)
178
+ {
179
+ const int index = Find_in_IdExtents(items, id);
180
+ if (index < 0)
181
+ return true;
182
+ const CIdExtents &item = items[index];
183
+ if (Calc_NumBlocks_from_Extents() != item.StartBlock)
184
+ return false;
185
+ Extents += item.Extents;
186
+ return true;
187
+ }
188
+
189
+
190
+ struct CVolHeader
191
+ {
192
+ unsigned BlockSizeLog;
193
+ UInt32 NumFiles;
194
+ UInt32 NumFolders;
195
+ UInt32 NumBlocks;
196
+ UInt32 NumFreeBlocks;
197
+
198
+ bool Is_Hsfx_ver5;
199
+ // UInt32 Attr;
200
+ // UInt32 LastMountedVersion;
201
+ // UInt32 JournalInfoBlock;
202
+
203
+ UInt32 CTime;
204
+ UInt32 MTime;
205
+ // UInt32 BackupTime;
206
+ // UInt32 CheckedTime;
207
+
208
+ // UInt32 WriteCount;
209
+ // UInt32 FinderInfo[8];
210
+ // UInt64 VolID;
211
+
212
+ UInt64 GetPhySize() const { return (UInt64)NumBlocks << BlockSizeLog; }
213
+ UInt64 GetFreeSize() const { return (UInt64)NumFreeBlocks << BlockSizeLog; }
214
+ bool IsHfsX() const { return Is_Hsfx_ver5; }
215
+ };
216
+
217
+ inline void HfsTimeToFileTime(UInt32 hfsTime, FILETIME &ft)
218
+ {
219
+ UInt64 v = ((UInt64)3600 * 24 * (365 * 303 + 24 * 3) + hfsTime) * 10000000;
220
+ ft.dwLowDateTime = (DWORD)v;
221
+ ft.dwHighDateTime = (DWORD)(v >> 32);
222
+ }
223
+
224
+ enum ERecordType
225
+ {
226
+ RECORD_TYPE_FOLDER = 1,
227
+ RECORD_TYPE_FILE,
228
+ RECORD_TYPE_FOLDER_THREAD,
229
+ RECORD_TYPE_FILE_THREAD
230
+ };
231
+
232
+
233
+
234
+ // static const UInt32 kMethod_1_NO_COMPRESSION = 1; // in xattr
235
+ static const UInt32 kMethod_ZLIB_ATTR = 3;
236
+ static const UInt32 kMethod_ZLIB_RSRC = 4;
237
+ // static const UInt32 kMethod_DEDUP = 5; // de-dup within the generation store
238
+ // macos 10.10
239
+ static const UInt32 kMethod_LZVN_ATTR = 7;
240
+ static const UInt32 kMethod_LZVN_RSRC = 8;
241
+ static const UInt32 kMethod_COPY_ATTR = 9;
242
+ static const UInt32 kMethod_COPY_RSRC = 10;
243
+ // macos 10.11
244
+ // static const UInt32 kMethod_LZFSE_ATTR = 11;
245
+ static const UInt32 kMethod_LZFSE_RSRC = 12;
246
+
247
+ // static const UInt32 kMethod_ZBM_RSRC = 14;
248
+
249
+ static const char * const g_Methods[] =
250
+ {
251
+ NULL
252
+ , NULL
253
+ , NULL
254
+ , "ZLIB-attr"
255
+ , "ZLIB-rsrc"
256
+ , NULL
257
+ , NULL
258
+ , "LZVN-attr"
259
+ , "LZVN-rsrc"
260
+ , "COPY-attr"
261
+ , "COPY-rsrc"
262
+ , "LZFSE-attr"
263
+ , "LZFSE-rsrc"
264
+ , NULL
265
+ , "ZBM-rsrc"
266
+ };
267
+
268
+
269
+ static const Byte k_COPY_Uncompressed_Marker = 0xcc;
270
+ static const Byte k_LZVN_Uncompressed_Marker = 6;
271
+
272
+ void CCompressHeader::Parse(const Byte *p, size_t dataSize)
273
+ {
274
+ Clear();
275
+
276
+ if (dataSize < k_decmpfs_HeaderSize)
277
+ return;
278
+ if (GetUi32(p) != 0x636D7066) // magic == "fpmc"
279
+ return;
280
+ Method = GetUi32(p + 4);
281
+ UnpackSize = GetUi64(p + 8);
282
+ dataSize -= k_decmpfs_HeaderSize;
283
+ IsCorrect = true;
284
+
285
+ if ( Method == kMethod_ZLIB_RSRC
286
+ || Method == kMethod_COPY_RSRC
287
+ || Method == kMethod_LZVN_RSRC
288
+ || Method == kMethod_LZFSE_RSRC
289
+ // || Method == kMethod_ZBM_RSRC // for debug
290
+ )
291
+ {
292
+ IsResource = true;
293
+ if (dataSize == 0)
294
+ IsSupported = (
295
+ Method != kMethod_LZFSE_RSRC &&
296
+ Method != kMethod_COPY_RSRC);
297
+ return;
298
+ }
299
+
300
+ if ( Method == kMethod_ZLIB_ATTR
301
+ || Method == kMethod_COPY_ATTR
302
+ || Method == kMethod_LZVN_ATTR
303
+ // || Method == kMethod_LZFSE_ATTR
304
+ )
305
+ {
306
+ if (dataSize == 0)
307
+ return;
308
+ const Byte b = p[k_decmpfs_HeaderSize];
309
+ if ( (Method == kMethod_ZLIB_ATTR && (b & 0xf) == 0xf)
310
+ || (Method == kMethod_COPY_ATTR && b == k_COPY_Uncompressed_Marker)
311
+ || (Method == kMethod_LZVN_ATTR && b == k_LZVN_Uncompressed_Marker))
312
+ {
313
+ dataSize--;
314
+ // if (UnpackSize > dataSize)
315
+ if (UnpackSize != dataSize)
316
+ return;
317
+ DataPos = k_decmpfs_HeaderSize + 1;
318
+ IsSupported = true;
319
+ }
320
+ else
321
+ {
322
+ if (Method != kMethod_COPY_ATTR)
323
+ IsSupported = true;
324
+ DataPos = k_decmpfs_HeaderSize;
325
+ }
326
+ }
327
+ }
328
+
329
+
330
+ void CCompressHeader::MethodToProp(NWindows::NCOM::CPropVariant &prop) const
331
+ {
332
+ if (!IsCorrect)
333
+ return;
334
+ const UInt32 method = Method;
335
+ const char *p = NULL;
336
+ if (method < Z7_ARRAY_SIZE(g_Methods))
337
+ p = g_Methods[method];
338
+ AString s;
339
+ if (p)
340
+ s = p;
341
+ else
342
+ s.Add_UInt32(method);
343
+ // if (!IsSupported) s += "-unsuported";
344
+ prop = s;
345
+ }
346
+
347
+ void MethodsMaskToProp(UInt32 methodsMask, NWindows::NCOM::CPropVariant &prop)
348
+ {
349
+ FLAGS_TO_PROP(g_Methods, methodsMask, prop);
350
+ }
351
+
352
+
353
+ struct CItem
354
+ {
355
+ UString Name;
356
+
357
+ UInt32 ParentID;
358
+
359
+ UInt16 Type;
360
+ UInt16 FileMode;
361
+ // UInt16 Flags;
362
+ // UInt32 Valence;
363
+ UInt32 ID;
364
+ UInt32 CTime;
365
+ UInt32 MTime;
366
+ UInt32 AttrMTime;
367
+ UInt32 ATime;
368
+ // UInt32 BackupDate;
369
+
370
+ /*
371
+ UInt32 OwnerID;
372
+ UInt32 GroupID;
373
+ Byte AdminFlags;
374
+ Byte OwnerFlags;
375
+ union
376
+ {
377
+ UInt32 iNodeNum;
378
+ UInt32 LinkCount;
379
+ UInt32 RawDevice;
380
+ } special;
381
+
382
+ UInt32 FileType;
383
+ UInt32 FileCreator;
384
+ UInt16 FinderFlags;
385
+ UInt16 Point[2];
386
+ */
387
+
388
+ CFork DataFork;
389
+ CFork ResourceFork;
390
+
391
+ // for compressed attribute (decmpfs)
392
+ int decmpfs_AttrIndex;
393
+ CCompressHeader CompressHeader;
394
+
395
+ CItem():
396
+ decmpfs_AttrIndex(-1)
397
+ {}
398
+ bool IsDir() const { return Type == RECORD_TYPE_FOLDER; }
399
+ // const CFork *GetFork(bool isResource) const { return (isResource ? &ResourceFork: &DataFork); }
400
+ };
401
+
402
+
403
+ struct CAttr
404
+ {
405
+ UInt32 ID;
406
+ bool Fork_defined;
407
+
408
+ // UInt32 Size; // for (Fork_defined == false) case
409
+ // size_t DataPos; // for (Fork_defined == false) case
410
+ CByteBuffer Data;
411
+
412
+ CFork Fork;
413
+
414
+ UString Name;
415
+
416
+ UInt64 GetSize() const
417
+ {
418
+ if (Fork_defined)
419
+ return Fork.Size;
420
+ return Data.Size();
421
+ }
422
+
423
+ CAttr():
424
+ Fork_defined(false)
425
+ // Size(0),
426
+ // DataPos(0),
427
+ {}
428
+ };
429
+
430
+
431
+ static const int kAttrIndex_Item = -1;
432
+ static const int kAttrIndex_Resource = -2;
433
+
434
+ struct CRef
435
+ {
436
+ unsigned ItemIndex;
437
+ int AttrIndex;
438
+ int Parent;
439
+
440
+ void Construct() { AttrIndex = kAttrIndex_Item; Parent = -1; }
441
+ bool IsResource() const { return AttrIndex == kAttrIndex_Resource; }
442
+ bool IsAltStream() const { return AttrIndex != kAttrIndex_Item; }
443
+ bool IsItem() const { return AttrIndex == kAttrIndex_Item; }
444
+ };
445
+
446
+
447
+ class CDatabase
448
+ {
449
+ HRESULT ReadFile(const CFork &fork, CByteBuffer &buf, IInStream *inStream);
450
+ HRESULT LoadExtentFile(const CFork &fork, IInStream *inStream, CObjectVector<CIdExtents> *overflowExtentsArray);
451
+ HRESULT LoadAttrs(const CFork &fork, IInStream *inStream, IArchiveOpenCallback *progress);
452
+ HRESULT LoadCatalog(const CFork &fork, const CObjectVector<CIdExtents> *overflowExtentsArray, IInStream *inStream, IArchiveOpenCallback *progress);
453
+ bool Parse_decmpgfs(unsigned attrIndex, CItem &item, bool &skip);
454
+ public:
455
+ CRecordVector<CRef> Refs;
456
+ CObjectVector<CItem> Items;
457
+ CObjectVector<CAttr> Attrs;
458
+
459
+ // CByteBuffer AttrBuf;
460
+
461
+ CVolHeader Header;
462
+ bool HeadersError;
463
+ bool UnsupportedFeature;
464
+ bool ThereAreAltStreams;
465
+ // bool CaseSensetive;
466
+ UInt32 MethodsMask;
467
+ UString ResFileName;
468
+
469
+ UInt64 SpecOffset;
470
+ // UInt64 PhySize;
471
+ UInt64 PhySize2;
472
+ UInt64 ArcFileSize;
473
+
474
+ void Clear()
475
+ {
476
+ SpecOffset = 0;
477
+ // PhySize = 0;
478
+ PhySize2 = 0;
479
+ ArcFileSize = 0;
480
+ MethodsMask = 0;
481
+ HeadersError = false;
482
+ UnsupportedFeature = false;
483
+ ThereAreAltStreams = false;
484
+ // CaseSensetive = false;
485
+
486
+ Refs.Clear();
487
+ Items.Clear();
488
+ Attrs.Clear();
489
+ // AttrBuf.Free();
490
+ }
491
+
492
+ UInt64 Get_UnpackSize_of_Ref(const CRef &ref) const
493
+ {
494
+ if (ref.AttrIndex >= 0)
495
+ return Attrs[ref.AttrIndex].GetSize();
496
+ const CItem &item = Items[ref.ItemIndex];
497
+ if (ref.IsResource())
498
+ return item.ResourceFork.Size;
499
+ if (item.IsDir())
500
+ return 0;
501
+ else if (item.CompressHeader.IsCorrect)
502
+ return item.CompressHeader.UnpackSize;
503
+ return item.DataFork.Size;
504
+ }
505
+
506
+ void GetItemPath(unsigned index, NWindows::NCOM::CPropVariant &path) const;
507
+ HRESULT Open2(IInStream *inStream, IArchiveOpenCallback *progress);
508
+ };
509
+
510
+ enum
511
+ {
512
+ kHfsID_Root = 1,
513
+ kHfsID_RootFolder = 2,
514
+ kHfsID_ExtentsFile = 3,
515
+ kHfsID_CatalogFile = 4,
516
+ kHfsID_BadBlockFile = 5,
517
+ kHfsID_AllocationFile = 6,
518
+ kHfsID_StartupFile = 7,
519
+ kHfsID_AttributesFile = 8,
520
+ kHfsID_RepairCatalogFile = 14,
521
+ kHfsID_BogusExtentFile = 15,
522
+ kHfsID_FirstUserCatalogNode = 16
523
+ };
524
+
525
+ void CDatabase::GetItemPath(unsigned index, NWindows::NCOM::CPropVariant &path) const
526
+ {
527
+ unsigned len = 0;
528
+ const unsigned kNumLevelsMax = (1 << 10);
529
+ unsigned cur = index;
530
+ unsigned i;
531
+
532
+ for (i = 0; i < kNumLevelsMax; i++)
533
+ {
534
+ const CRef &ref = Refs[cur];
535
+ const UString *s;
536
+
537
+ if (ref.IsResource())
538
+ s = &ResFileName;
539
+ else if (ref.AttrIndex >= 0)
540
+ s = &Attrs[ref.AttrIndex].Name;
541
+ else
542
+ s = &Items[ref.ItemIndex].Name;
543
+
544
+ len += s->Len();
545
+ len++;
546
+ cur = (unsigned)ref.Parent;
547
+ if (ref.Parent < 0)
548
+ break;
549
+ }
550
+
551
+ len--;
552
+ wchar_t *p = path.AllocBstr(len);
553
+ p[len] = 0;
554
+ cur = index;
555
+
556
+ for (;;)
557
+ {
558
+ const CRef &ref = Refs[cur];
559
+ const UString *s;
560
+ wchar_t delimChar = L':';
561
+
562
+ if (ref.IsResource())
563
+ s = &ResFileName;
564
+ else if (ref.AttrIndex >= 0)
565
+ s = &Attrs[ref.AttrIndex].Name;
566
+ else
567
+ {
568
+ delimChar = WCHAR_PATH_SEPARATOR;
569
+ s = &Items[ref.ItemIndex].Name;
570
+ }
571
+
572
+ unsigned curLen = s->Len();
573
+ len -= curLen;
574
+
575
+ const wchar_t *src = (const wchar_t *)*s;
576
+ wchar_t *dest = p + len;
577
+ for (unsigned j = 0; j < curLen; j++)
578
+ {
579
+ wchar_t c = src[j];
580
+ // 18.06
581
+ if (c == CHAR_PATH_SEPARATOR || c == '/')
582
+ c = '_';
583
+ dest[j] = c;
584
+ }
585
+
586
+ if (len == 0)
587
+ break;
588
+ p[--len] = delimChar;
589
+ cur = (unsigned)ref.Parent;
590
+ }
591
+ }
592
+
593
+ // Actually we read all blocks. It can be larger than fork.Size
594
+
595
+ HRESULT CDatabase::ReadFile(const CFork &fork, CByteBuffer &buf, IInStream *inStream)
596
+ {
597
+ if (fork.NumBlocks >= Header.NumBlocks)
598
+ return S_FALSE;
599
+ if (((ArcFileSize - SpecOffset) >> Header.BlockSizeLog) + 1 < fork.NumBlocks)
600
+ return S_FALSE;
601
+
602
+ const size_t totalSize = (size_t)fork.NumBlocks << Header.BlockSizeLog;
603
+ if ((totalSize >> Header.BlockSizeLog) != fork.NumBlocks)
604
+ return S_FALSE;
605
+ buf.Alloc(totalSize);
606
+ UInt32 curBlock = 0;
607
+ FOR_VECTOR (i, fork.Extents)
608
+ {
609
+ if (curBlock >= fork.NumBlocks)
610
+ return S_FALSE;
611
+ const CExtent &e = fork.Extents[i];
612
+ if (e.Pos > Header.NumBlocks ||
613
+ e.NumBlocks > fork.NumBlocks - curBlock ||
614
+ e.NumBlocks > Header.NumBlocks - e.Pos)
615
+ return S_FALSE;
616
+ RINOK(InStream_SeekSet(inStream, SpecOffset + ((UInt64)e.Pos << Header.BlockSizeLog)))
617
+ RINOK(ReadStream_FALSE(inStream,
618
+ (Byte *)buf + ((size_t)curBlock << Header.BlockSizeLog),
619
+ (size_t)e.NumBlocks << Header.BlockSizeLog))
620
+ curBlock += e.NumBlocks;
621
+ }
622
+ return S_OK;
623
+ }
624
+
625
+ static const unsigned kNodeDescriptor_Size = 14;
626
+
627
+ struct CNodeDescriptor
628
+ {
629
+ UInt32 fLink;
630
+ // UInt32 bLink;
631
+ Byte Kind;
632
+ // Byte Height;
633
+ unsigned NumRecords;
634
+
635
+ bool Parse(const Byte *p, unsigned nodeSizeLog);
636
+ };
637
+
638
+
639
+ bool CNodeDescriptor::Parse(const Byte *p, unsigned nodeSizeLog)
640
+ {
641
+ fLink = Get32(p);
642
+ // bLink = Get32(p + 4);
643
+ Kind = p[8];
644
+ // Height = p[9];
645
+ NumRecords = Get16(p + 10);
646
+
647
+ const size_t nodeSize = (size_t)1 << nodeSizeLog;
648
+ if (kNodeDescriptor_Size + ((UInt32)NumRecords + 1) * 2 > nodeSize)
649
+ return false;
650
+ const size_t limit = nodeSize - ((UInt32)NumRecords + 1) * 2;
651
+
652
+ p += nodeSize - 2;
653
+
654
+ for (unsigned i = 0; i < NumRecords; i++)
655
+ {
656
+ const UInt32 offs = Get16(p);
657
+ p -= 2;
658
+ const UInt32 offsNext = Get16(p);
659
+ if (offs < kNodeDescriptor_Size
660
+ || offs >= offsNext
661
+ || offsNext > limit)
662
+ return false;
663
+ }
664
+ return true;
665
+ }
666
+
667
+ struct CHeaderRec
668
+ {
669
+ // UInt16 TreeDepth;
670
+ // UInt32 RootNode;
671
+ // UInt32 LeafRecords;
672
+ UInt32 FirstLeafNode;
673
+ // UInt32 LastLeafNode;
674
+ unsigned NodeSizeLog;
675
+ // UInt16 MaxKeyLength;
676
+ UInt32 TotalNodes;
677
+ // UInt32 FreeNodes;
678
+ // UInt16 Reserved1;
679
+ // UInt32 ClumpSize;
680
+ // Byte BtreeType;
681
+ // Byte KeyCompareType;
682
+ // UInt32 Attributes;
683
+ // UInt32 Reserved3[16];
684
+
685
+ HRESULT Parse2(const CByteBuffer &buf);
686
+ };
687
+
688
+ HRESULT CHeaderRec::Parse2(const CByteBuffer &buf)
689
+ {
690
+ if (buf.Size() < kNodeDescriptor_Size + 0x2A + 16 * 4)
691
+ return S_FALSE;
692
+ const Byte * p = (const Byte *)buf + kNodeDescriptor_Size;
693
+ // TreeDepth = Get16(p);
694
+ // RootNode = Get32(p + 2);
695
+ // LeafRecords = Get32(p + 6);
696
+ FirstLeafNode = Get32(p + 0xA);
697
+ // LastLeafNode = Get32(p + 0xE);
698
+ const UInt32 nodeSize = Get16(p + 0x12);
699
+
700
+ unsigned i;
701
+ for (i = 9; ((UInt32)1 << i) != nodeSize; i++)
702
+ if (i == 16)
703
+ return S_FALSE;
704
+ NodeSizeLog = i;
705
+
706
+ // MaxKeyLength = Get16(p + 0x14);
707
+ TotalNodes = Get32(p + 0x16);
708
+ // FreeNodes = Get32(p + 0x1A);
709
+ // Reserved1 = Get16(p + 0x1E);
710
+ // ClumpSize = Get32(p + 0x20);
711
+ // BtreeType = p[0x24];
712
+ // KeyCompareType = p[0x25];
713
+ // Attributes = Get32(p + 0x26);
714
+ /*
715
+ for (int i = 0; i < 16; i++)
716
+ Reserved3[i] = Get32(p + 0x2A + i * 4);
717
+ */
718
+
719
+ if ((buf.Size() >> NodeSizeLog) < TotalNodes)
720
+ return S_FALSE;
721
+
722
+ return S_OK;
723
+ }
724
+
725
+
726
+ static const Byte kNodeType_Leaf = 0xFF;
727
+ // static const Byte kNodeType_Index = 0;
728
+ // static const Byte kNodeType_Header = 1;
729
+ // static const Byte kNodeType_Mode = 2;
730
+
731
+ static const Byte kExtentForkType_Data = 0;
732
+ static const Byte kExtentForkType_Resource = 0xFF;
733
+
734
+ /* It loads data extents from Extents Overflow File
735
+ Most dmg installers are not fragmented. So there are no extents in Overflow File. */
736
+
737
+ HRESULT CDatabase::LoadExtentFile(const CFork &fork, IInStream *inStream, CObjectVector<CIdExtents> *overflowExtentsArray)
738
+ {
739
+ if (fork.NumBlocks == 0)
740
+ return S_OK;
741
+ CByteBuffer buf;
742
+ RINOK(ReadFile(fork, buf, inStream))
743
+ const Byte *p = (const Byte *)buf;
744
+
745
+ // CNodeDescriptor nodeDesc;
746
+ // nodeDesc.Parse(p);
747
+ CHeaderRec hr;
748
+ RINOK(hr.Parse2(buf))
749
+
750
+ UInt32 node = hr.FirstLeafNode;
751
+ if (node == 0)
752
+ return S_OK;
753
+ if (hr.TotalNodes == 0)
754
+ return S_FALSE;
755
+
756
+ CByteArr usedBuf(hr.TotalNodes);
757
+ memset(usedBuf, 0, hr.TotalNodes);
758
+
759
+ while (node != 0)
760
+ {
761
+ if (node >= hr.TotalNodes || usedBuf[node] != 0)
762
+ return S_FALSE;
763
+ usedBuf[node] = 1;
764
+
765
+ const size_t nodeOffset = (size_t)node << hr.NodeSizeLog;
766
+ CNodeDescriptor desc;
767
+ if (!desc.Parse(p + nodeOffset, hr.NodeSizeLog))
768
+ return S_FALSE;
769
+ if (desc.Kind != kNodeType_Leaf)
770
+ return S_FALSE;
771
+
772
+ UInt32 endBlock = 0;
773
+
774
+ for (unsigned i = 0; i < desc.NumRecords; i++)
775
+ {
776
+ const UInt32 nodeSize = ((UInt32)1 << hr.NodeSizeLog);
777
+ const Byte *r = p + nodeOffset + nodeSize - i * 2;
778
+ const UInt32 offs = Get16(r - 2);
779
+ UInt32 recSize = Get16(r - 4) - offs;
780
+ const unsigned kKeyLen = 10;
781
+
782
+ if (recSize != 2 + kKeyLen + kNumFixedExtents * 8)
783
+ return S_FALSE;
784
+
785
+ r = p + nodeOffset + offs;
786
+ if (Get16(r) != kKeyLen)
787
+ return S_FALSE;
788
+
789
+ const Byte forkType = r[2];
790
+ unsigned forkTypeIndex;
791
+ if (forkType == kExtentForkType_Data)
792
+ forkTypeIndex = 0;
793
+ else if (forkType == kExtentForkType_Resource)
794
+ forkTypeIndex = 1;
795
+ else
796
+ continue;
797
+ CObjectVector<CIdExtents> &overflowExtents = overflowExtentsArray[forkTypeIndex];
798
+
799
+ const UInt32 id = Get32(r + 4);
800
+ const UInt32 startBlock = Get32(r + 8);
801
+ r += 2 + kKeyLen;
802
+
803
+ bool needNew = true;
804
+
805
+ if (overflowExtents.Size() != 0)
806
+ {
807
+ CIdExtents &e = overflowExtents.Back();
808
+ if (e.ID == id)
809
+ {
810
+ if (endBlock != startBlock)
811
+ return S_FALSE;
812
+ needNew = false;
813
+ }
814
+ }
815
+
816
+ if (needNew)
817
+ {
818
+ CIdExtents &e = overflowExtents.AddNew();
819
+ e.ID = id;
820
+ e.StartBlock = startBlock;
821
+ endBlock = startBlock;
822
+ }
823
+
824
+ CIdExtents &e = overflowExtents.Back();
825
+
826
+ for (unsigned k = 0; k < kNumFixedExtents; k++, r += 8)
827
+ {
828
+ CExtent ee;
829
+ ee.Pos = Get32(r);
830
+ ee.NumBlocks = Get32(r + 4);
831
+ if (ee.NumBlocks != 0)
832
+ {
833
+ e.Extents.Add(ee);
834
+ endBlock += ee.NumBlocks;
835
+ }
836
+ }
837
+ }
838
+
839
+ node = desc.fLink;
840
+ }
841
+ return S_OK;
842
+ }
843
+
844
+ static void LoadName(const Byte *data, unsigned len, UString &dest)
845
+ {
846
+ wchar_t *p = dest.GetBuf(len);
847
+ unsigned i;
848
+ for (i = 0; i < len; i++)
849
+ {
850
+ const wchar_t c = Get16(data + i * 2);
851
+ if (c == 0)
852
+ break;
853
+ p[i] = c;
854
+ }
855
+ p[i] = 0;
856
+ dest.ReleaseBuf_SetLen(i);
857
+ }
858
+
859
+ static bool IsNameEqualTo(const Byte *data, const char *name)
860
+ {
861
+ for (unsigned i = 0;; i++)
862
+ {
863
+ const char c = name[i];
864
+ if (c == 0)
865
+ return true;
866
+ if (Get16(data + i * 2) != (Byte)c)
867
+ return false;
868
+ }
869
+ }
870
+
871
+ static const UInt32 kAttrRecordType_Inline = 0x10;
872
+ static const UInt32 kAttrRecordType_Fork = 0x20;
873
+ // static const UInt32 kAttrRecordType_Extents = 0x30;
874
+
875
+ HRESULT CDatabase::LoadAttrs(const CFork &fork, IInStream *inStream, IArchiveOpenCallback *progress)
876
+ {
877
+ if (fork.NumBlocks == 0)
878
+ return S_OK;
879
+
880
+ CByteBuffer AttrBuf;
881
+ RINOK(ReadFile(fork, AttrBuf, inStream))
882
+ const Byte *p = (const Byte *)AttrBuf;
883
+
884
+ // CNodeDescriptor nodeDesc;
885
+ // nodeDesc.Parse(p);
886
+ CHeaderRec hr;
887
+ RINOK(hr.Parse2(AttrBuf))
888
+
889
+ // CaseSensetive = (Header.IsHfsX() && hr.KeyCompareType == 0xBC);
890
+
891
+ UInt32 node = hr.FirstLeafNode;
892
+ if (node == 0)
893
+ return S_OK;
894
+ if (hr.TotalNodes == 0)
895
+ return S_FALSE;
896
+
897
+ CByteArr usedBuf(hr.TotalNodes);
898
+ memset(usedBuf, 0, hr.TotalNodes);
899
+
900
+ CFork resFork;
901
+
902
+ while (node != 0)
903
+ {
904
+ if (node >= hr.TotalNodes || usedBuf[node] != 0)
905
+ return S_FALSE;
906
+ usedBuf[node] = 1;
907
+
908
+ const size_t nodeOffset = (size_t)node << hr.NodeSizeLog;
909
+ CNodeDescriptor desc;
910
+ if (!desc.Parse(p + nodeOffset, hr.NodeSizeLog))
911
+ return S_FALSE;
912
+ if (desc.Kind != kNodeType_Leaf)
913
+ return S_FALSE;
914
+
915
+ for (unsigned i = 0; i < desc.NumRecords; i++)
916
+ {
917
+ const UInt32 nodeSize = ((UInt32)1 << hr.NodeSizeLog);
918
+ const Byte *r = p + nodeOffset + nodeSize - i * 2;
919
+ const UInt32 offs = Get16(r - 2);
920
+ UInt32 recSize = Get16(r - 4) - offs;
921
+ const unsigned kHeadSize = 14;
922
+ if (recSize < kHeadSize)
923
+ return S_FALSE;
924
+
925
+ r = p + nodeOffset + offs;
926
+ const UInt32 keyLen = Get16(r);
927
+
928
+ // UInt16 pad = Get16(r + 2);
929
+ const UInt32 fileID = Get32(r + 4);
930
+ const unsigned startBlock = Get32(r + 8);
931
+ if (startBlock != 0)
932
+ {
933
+ // that case is still unsupported
934
+ UnsupportedFeature = true;
935
+ continue;
936
+ }
937
+ const unsigned nameLen = Get16(r + 12);
938
+
939
+ if (keyLen + 2 > recSize ||
940
+ keyLen != kHeadSize - 2 + nameLen * 2)
941
+ return S_FALSE;
942
+ r += kHeadSize;
943
+ recSize -= kHeadSize;
944
+
945
+ const Byte *name = r;
946
+ r += nameLen * 2;
947
+ recSize -= nameLen * 2;
948
+
949
+ if (recSize < 4)
950
+ return S_FALSE;
951
+
952
+ const UInt32 recordType = Get32(r);
953
+
954
+ if (progress && (Attrs.Size() & 0xFFF) == 0)
955
+ {
956
+ const UInt64 numFiles = 0;
957
+ RINOK(progress->SetCompleted(&numFiles, NULL))
958
+ }
959
+
960
+ if (Attrs.Size() >= ((UInt32)1 << 31))
961
+ return S_FALSE;
962
+
963
+ CAttr &attr = Attrs.AddNew();
964
+ attr.ID = fileID;
965
+ LoadName(name, nameLen, attr.Name);
966
+
967
+ if (recordType == kAttrRecordType_Fork)
968
+ {
969
+ // 22.00 : some hfs files contain it;
970
+ /* spec: If the attribute has more than 8 extents, there will be additional
971
+ records (of type kAttrRecordType_Extents) for this attribute. */
972
+ if (recSize != 8 + kForkRecSize)
973
+ return S_FALSE;
974
+ if (Get32(r + 4) != 0) // reserved
975
+ return S_FALSE;
976
+ attr.Fork.Parse(r + 8);
977
+ attr.Fork_defined = true;
978
+ continue;
979
+ }
980
+ else if (recordType != kAttrRecordType_Inline)
981
+ {
982
+ UnsupportedFeature = true;
983
+ continue;
984
+ }
985
+
986
+ const unsigned kRecordHeaderSize = 16;
987
+ if (recSize < kRecordHeaderSize)
988
+ return S_FALSE;
989
+ if (Get32(r + 4) != 0 || Get32(r + 8) != 0) // reserved
990
+ return S_FALSE;
991
+ const UInt32 dataSize = Get32(r + 12);
992
+
993
+ r += kRecordHeaderSize;
994
+ recSize -= kRecordHeaderSize;
995
+
996
+ if (recSize < dataSize)
997
+ return S_FALSE;
998
+
999
+ attr.Data.CopyFrom(r, dataSize);
1000
+ // attr.DataPos = nodeOffset + offs + 2 + keyLen + kRecordHeaderSize;
1001
+ // attr.Size = dataSize;
1002
+ }
1003
+
1004
+ node = desc.fLink;
1005
+ }
1006
+ return S_OK;
1007
+ }
1008
+
1009
+
1010
+ bool CDatabase::Parse_decmpgfs(unsigned attrIndex, CItem &item, bool &skip)
1011
+ {
1012
+ const CAttr &attr = Attrs[attrIndex];
1013
+ skip = false;
1014
+ if (item.CompressHeader.IsCorrect || !item.DataFork.IsEmpty())
1015
+ return false;
1016
+
1017
+ item.CompressHeader.Parse(attr.Data, attr.Data.Size());
1018
+
1019
+ if (item.CompressHeader.IsCorrect)
1020
+ {
1021
+ item.decmpfs_AttrIndex = (int)attrIndex;
1022
+ skip = true;
1023
+ if (item.CompressHeader.Method < sizeof(MethodsMask) * 8)
1024
+ MethodsMask |= ((UInt32)1 << item.CompressHeader.Method);
1025
+ }
1026
+
1027
+ return true;
1028
+ }
1029
+
1030
+
1031
+ HRESULT CDatabase::LoadCatalog(const CFork &fork, const CObjectVector<CIdExtents> *overflowExtentsArray, IInStream *inStream, IArchiveOpenCallback *progress)
1032
+ {
1033
+ CByteBuffer buf;
1034
+ RINOK(ReadFile(fork, buf, inStream))
1035
+ const Byte *p = (const Byte *)buf;
1036
+
1037
+ // CNodeDescriptor nodeDesc;
1038
+ // nodeDesc.Parse(p);
1039
+ CHeaderRec hr;
1040
+ RINOK(hr.Parse2(buf))
1041
+
1042
+ CRecordVector<CIdIndexPair> IdToIndexMap;
1043
+
1044
+ const unsigned reserveSize = (unsigned)(Header.NumFolders + 1 + Header.NumFiles);
1045
+
1046
+ const unsigned kBasicRecSize = 0x58;
1047
+ const unsigned kMinRecSize = kBasicRecSize + 10;
1048
+
1049
+ if ((UInt64)reserveSize * kMinRecSize < buf.Size())
1050
+ {
1051
+ Items.ClearAndReserve(reserveSize);
1052
+ Refs.ClearAndReserve(reserveSize);
1053
+ IdToIndexMap.ClearAndReserve(reserveSize);
1054
+ }
1055
+
1056
+ // CaseSensetive = (Header.IsHfsX() && hr.KeyCompareType == 0xBC);
1057
+
1058
+ CByteArr usedBuf(hr.TotalNodes);
1059
+ if (hr.TotalNodes != 0)
1060
+ memset(usedBuf, 0, hr.TotalNodes);
1061
+
1062
+ CFork resFork;
1063
+
1064
+ UInt32 node = hr.FirstLeafNode;
1065
+ UInt32 numFiles = 0;
1066
+ UInt32 numFolders = 0;
1067
+
1068
+ while (node != 0)
1069
+ {
1070
+ if (node >= hr.TotalNodes || usedBuf[node] != 0)
1071
+ return S_FALSE;
1072
+ usedBuf[node] = 1;
1073
+
1074
+ const size_t nodeOffset = (size_t)node << hr.NodeSizeLog;
1075
+ CNodeDescriptor desc;
1076
+ if (!desc.Parse(p + nodeOffset, hr.NodeSizeLog))
1077
+ return S_FALSE;
1078
+ if (desc.Kind != kNodeType_Leaf)
1079
+ return S_FALSE;
1080
+
1081
+ for (unsigned i = 0; i < desc.NumRecords; i++)
1082
+ {
1083
+ const UInt32 nodeSize = (1 << hr.NodeSizeLog);
1084
+ const Byte *r = p + nodeOffset + nodeSize - i * 2;
1085
+ const UInt32 offs = Get16(r - 2);
1086
+ UInt32 recSize = Get16(r - 4) - offs;
1087
+ if (recSize < 6)
1088
+ return S_FALSE;
1089
+
1090
+ r = p + nodeOffset + offs;
1091
+ UInt32 keyLen = Get16(r);
1092
+ UInt32 parentID = Get32(r + 2);
1093
+ if (keyLen < 6 || (keyLen & 1) != 0 || keyLen + 2 > recSize)
1094
+ return S_FALSE;
1095
+ r += 6;
1096
+ recSize -= 6;
1097
+ keyLen -= 6;
1098
+
1099
+ unsigned nameLen = Get16(r);
1100
+ if (nameLen * 2 != (unsigned)keyLen)
1101
+ return S_FALSE;
1102
+ r += 2;
1103
+ recSize -= 2;
1104
+
1105
+ r += nameLen * 2;
1106
+ recSize -= nameLen * 2;
1107
+
1108
+ if (recSize < 2)
1109
+ return S_FALSE;
1110
+ UInt16 type = Get16(r);
1111
+
1112
+ if (type != RECORD_TYPE_FOLDER &&
1113
+ type != RECORD_TYPE_FILE)
1114
+ continue;
1115
+
1116
+ if (recSize < kBasicRecSize)
1117
+ return S_FALSE;
1118
+
1119
+ CItem &item = Items.AddNew();
1120
+ item.ParentID = parentID;
1121
+ item.Type = type;
1122
+ // item.Flags = Get16(r + 2);
1123
+ // item.Valence = Get32(r + 4);
1124
+ item.ID = Get32(r + 8);
1125
+ {
1126
+ const Byte *name = r - (nameLen * 2);
1127
+ LoadName(name, nameLen, item.Name);
1128
+ if (item.Name.Len() <= 1)
1129
+ {
1130
+ if (item.Name.IsEmpty() && nameLen == 21)
1131
+ {
1132
+ if (GetUi32(name) == 0 &&
1133
+ GetUi32(name + 4) == 0 &&
1134
+ IsNameEqualTo(name + 8, "HFS+ Private Data"))
1135
+ {
1136
+ // it's folder for "Hard Links" files
1137
+ item.Name = "[HFS+ Private Data]";
1138
+ }
1139
+ }
1140
+
1141
+ // Some dmg files have ' ' folder item.
1142
+ if (item.Name.IsEmpty() || item.Name[0] == L' ')
1143
+ item.Name = "[]";
1144
+ }
1145
+ }
1146
+
1147
+ item.CTime = Get32(r + 0xC);
1148
+ item.MTime = Get32(r + 0x10);
1149
+ item.AttrMTime = Get32(r + 0x14);
1150
+ item.ATime = Get32(r + 0x18);
1151
+ // item.BackupDate = Get32(r + 0x1C);
1152
+
1153
+ /*
1154
+ item.OwnerID = Get32(r + 0x20);
1155
+ item.GroupID = Get32(r + 0x24);
1156
+ item.AdminFlags = r[0x28];
1157
+ item.OwnerFlags = r[0x29];
1158
+ */
1159
+ item.FileMode = Get16(r + 0x2A);
1160
+ /*
1161
+ item.special.iNodeNum = Get16(r + 0x2C); // or .linkCount
1162
+ item.FileType = Get32(r + 0x30);
1163
+ item.FileCreator = Get32(r + 0x34);
1164
+ item.FinderFlags = Get16(r + 0x38);
1165
+ item.Point[0] = Get16(r + 0x3A); // v
1166
+ item.Point[1] = Get16(r + 0x3C); // h
1167
+ */
1168
+
1169
+ // const refIndex = Refs.Size();
1170
+ CIdIndexPair pair;
1171
+ pair.ID = item.ID;
1172
+ pair.Index = Items.Size() - 1;
1173
+ IdToIndexMap.Add(pair);
1174
+
1175
+ recSize -= kBasicRecSize;
1176
+ r += kBasicRecSize;
1177
+ if (item.IsDir())
1178
+ {
1179
+ numFolders++;
1180
+ if (recSize != 0)
1181
+ return S_FALSE;
1182
+ }
1183
+ else
1184
+ {
1185
+ numFiles++;
1186
+ if (recSize != kForkRecSize * 2)
1187
+ return S_FALSE;
1188
+
1189
+ item.DataFork.Parse(r);
1190
+
1191
+ if (!item.DataFork.UpgradeAndTest(overflowExtentsArray[0], item.ID, Header.BlockSizeLog))
1192
+ HeadersError = true;
1193
+
1194
+ item.ResourceFork.Parse(r + kForkRecSize);
1195
+ if (!item.ResourceFork.IsEmpty())
1196
+ {
1197
+ if (!item.ResourceFork.UpgradeAndTest(overflowExtentsArray[1], item.ID, Header.BlockSizeLog))
1198
+ HeadersError = true;
1199
+ // ThereAreAltStreams = true;
1200
+ }
1201
+ }
1202
+ if (progress && (Items.Size() & 0xFFF) == 0)
1203
+ {
1204
+ const UInt64 numItems = Items.Size();
1205
+ RINOK(progress->SetCompleted(&numItems, NULL))
1206
+ }
1207
+ }
1208
+ node = desc.fLink;
1209
+ }
1210
+
1211
+ if (Header.NumFiles != numFiles ||
1212
+ Header.NumFolders + 1 != numFolders)
1213
+ HeadersError = true;
1214
+
1215
+ IdToIndexMap.Sort2();
1216
+ {
1217
+ for (unsigned i = 1; i < IdToIndexMap.Size(); i++)
1218
+ if (IdToIndexMap[i - 1].ID == IdToIndexMap[i].ID)
1219
+ return S_FALSE;
1220
+ }
1221
+
1222
+
1223
+ CBoolArr skipAttr(Attrs.Size());
1224
+ {
1225
+ for (unsigned i = 0; i < Attrs.Size(); i++)
1226
+ skipAttr[i] = false;
1227
+ }
1228
+
1229
+ {
1230
+ FOR_VECTOR (i, Attrs)
1231
+ {
1232
+ const CAttr &attr = Attrs[i];
1233
+
1234
+ const int itemIndex = FindItemIndex(IdToIndexMap, attr.ID);
1235
+ if (itemIndex < 0)
1236
+ {
1237
+ HeadersError = true;
1238
+ continue;
1239
+ }
1240
+
1241
+ if (attr.Name.IsEqualTo("com.apple.decmpfs"))
1242
+ {
1243
+ if (!Parse_decmpgfs(i, Items[itemIndex], skipAttr[i]))
1244
+ HeadersError = true;
1245
+ }
1246
+ }
1247
+ }
1248
+
1249
+ IdToIndexMap.ClearAndReserve(Items.Size());
1250
+
1251
+ {
1252
+ FOR_VECTOR (i, Items)
1253
+ {
1254
+ const CItem &item = Items[i];
1255
+
1256
+ CIdIndexPair pair;
1257
+ pair.ID = item.ID;
1258
+ pair.Index = Refs.Size();
1259
+ IdToIndexMap.Add(pair);
1260
+
1261
+ CRef ref;
1262
+ ref.Construct();
1263
+ ref.ItemIndex = i;
1264
+ Refs.Add(ref);
1265
+
1266
+ #ifdef HFS_SHOW_ALT_STREAMS
1267
+
1268
+ if (item.ResourceFork.IsEmpty())
1269
+ continue;
1270
+ if (item.CompressHeader.IsSupported && item.CompressHeader.IsMethod_Resource())
1271
+ continue;
1272
+
1273
+ ThereAreAltStreams = true;
1274
+ ref.AttrIndex = kAttrIndex_Resource;
1275
+ ref.Parent = (int)(Refs.Size() - 1);
1276
+ Refs.Add(ref);
1277
+
1278
+ #endif
1279
+ }
1280
+ }
1281
+
1282
+ IdToIndexMap.Sort2();
1283
+
1284
+ {
1285
+ FOR_VECTOR (i, Refs)
1286
+ {
1287
+ CRef &ref = Refs[i];
1288
+ if (ref.IsResource())
1289
+ continue;
1290
+ const CItem &item = Items[ref.ItemIndex];
1291
+ ref.Parent = FindItemIndex(IdToIndexMap, item.ParentID);
1292
+ if (ref.Parent >= 0)
1293
+ {
1294
+ if (!Items[Refs[ref.Parent].ItemIndex].IsDir())
1295
+ {
1296
+ ref.Parent = -1;
1297
+ HeadersError = true;
1298
+ }
1299
+ }
1300
+ }
1301
+ }
1302
+
1303
+ #ifdef HFS_SHOW_ALT_STREAMS
1304
+ {
1305
+ FOR_VECTOR (i, Attrs)
1306
+ {
1307
+ if (skipAttr[i])
1308
+ continue;
1309
+ const CAttr &attr = Attrs[i];
1310
+
1311
+ const int refIndex = FindItemIndex(IdToIndexMap, attr.ID);
1312
+ if (refIndex < 0)
1313
+ {
1314
+ HeadersError = true;
1315
+ continue;
1316
+ }
1317
+
1318
+ ThereAreAltStreams = true;
1319
+
1320
+ CRef ref;
1321
+ ref.Construct();
1322
+ ref.AttrIndex = (int)i;
1323
+ ref.Parent = refIndex;
1324
+ ref.ItemIndex = Refs[refIndex].ItemIndex;
1325
+ Refs.Add(ref);
1326
+ }
1327
+ }
1328
+ #endif
1329
+
1330
+ return S_OK;
1331
+ }
1332
+
1333
+ static const unsigned kHeaderPadSize = 1 << 10;
1334
+ static const unsigned kMainHeaderSize = 512;
1335
+ static const unsigned kHfsHeaderSize = kHeaderPadSize + kMainHeaderSize;
1336
+
1337
+ static const unsigned k_Signature_LE16_HFS_BD = 'B' + ((unsigned)'D' << 8);
1338
+ static const unsigned k_Signature_LE16_HPLUS = 'H' + ((unsigned)'+' << 8);
1339
+ static const UInt32 k_Signature_LE32_HFSP_VER4 = 'H' + ((UInt32)'+' << 8) + ((UInt32)4 << 24);
1340
+ static const UInt32 k_Signature_LE32_HFSX_VER5 = 'H' + ((UInt32)'X' << 8) + ((UInt32)5 << 24);
1341
+
1342
+ API_FUNC_static_IsArc IsArc_HFS(const Byte *p, size_t size)
1343
+ {
1344
+ if (size < kHfsHeaderSize)
1345
+ return k_IsArc_Res_NEED_MORE;
1346
+ p += kHeaderPadSize;
1347
+ const UInt32 sig = GetUi32(p);
1348
+ if (sig != k_Signature_LE32_HFSP_VER4)
1349
+ if (sig != k_Signature_LE32_HFSX_VER5)
1350
+ if ((UInt16)sig != k_Signature_LE16_HFS_BD
1351
+ || GetUi16(p + 0x7c) != k_Signature_LE16_HPLUS)
1352
+ return k_IsArc_Res_NO;
1353
+ return k_IsArc_Res_YES;
1354
+ }
1355
+ }
1356
+
1357
+ HRESULT CDatabase::Open2(IInStream *inStream, IArchiveOpenCallback *progress)
1358
+ {
1359
+ Clear();
1360
+ UInt32 buf32[kHfsHeaderSize / 4];
1361
+ RINOK(ReadStream_FALSE(inStream, buf32, kHfsHeaderSize))
1362
+ const Byte *p = (const Byte *)buf32 + kHeaderPadSize;
1363
+ CVolHeader &h = Header;
1364
+
1365
+ if (GetUi16a(p) == k_Signature_LE16_HFS_BD)
1366
+ {
1367
+ /*
1368
+ It's header for old HFS format.
1369
+ We don't support old HFS format, but we support
1370
+ special HFS volume that contains embedded HFS+ volume.
1371
+ HFS MDB : Master directory block
1372
+ HFS VIB : Volume information block
1373
+ some old images contain boot data with "LK" signature at start of buf32.
1374
+ */
1375
+ #if 1
1376
+ // here we check first bytes of archive,
1377
+ // because start data can contain signature of some another
1378
+ // archive type that could have priority over HFS.
1379
+ const void *buf_ptr = (const void *)buf32;
1380
+ const unsigned sig = GetUi16a(buf_ptr);
1381
+ if (sig != 'L' + ((unsigned)'K' << 8))
1382
+ {
1383
+ // some old HFS (non HFS+) files have no "LK" signature,
1384
+ // but have non-zero data after 2 first bytes in start 1 KiB.
1385
+ if (sig != 0)
1386
+ return S_FALSE;
1387
+ /*
1388
+ for (unsigned i = 0; i < kHeaderPadSize / 4; i++)
1389
+ if (buf32[i] != 0)
1390
+ return S_FALSE;
1391
+ */
1392
+ }
1393
+ #endif
1394
+ if (GetUi16a(p + 0x7c) != k_Signature_LE16_HPLUS) // signature of embedded HFS+ volume
1395
+ return S_FALSE;
1396
+ /*
1397
+ h.CTime = Get32(p + 0x2);
1398
+ h.MTime = Get32(p + 0x6);
1399
+
1400
+ h.NumFiles = Get32(p + 0x54);
1401
+ h.NumFolders = Get32(p + 0x58);
1402
+
1403
+ if (h.NumFolders > ((UInt32)1 << 29) ||
1404
+ h.NumFiles > ((UInt32)1 << 30))
1405
+ return S_FALSE;
1406
+ if (progress)
1407
+ {
1408
+ UInt64 numFiles = (UInt64)h.NumFiles + h.NumFolders + 1;
1409
+ RINOK(progress->SetTotal(&numFiles, NULL))
1410
+ }
1411
+ h.NumFreeBlocks = Get16(p + 0x22);
1412
+ */
1413
+
1414
+ // v24.09: blockSize in old HFS image can be non-power of 2.
1415
+ const UInt32 blockSize = Get32a(p + 0x14); // drAlBlkSiz
1416
+ if (blockSize == 0 || (blockSize & 0x1ff))
1417
+ return S_FALSE;
1418
+ const unsigned numBlocks = Get16a(p + 0x12); // drNmAlBlks
1419
+ // UInt16 drFreeBks = Get16a(p + 0x22); // number of unused allocation blocks
1420
+ /*
1421
+ we suppose that it has the following layout:
1422
+ {
1423
+ start data with header
1424
+ blocks[h.NumBlocks]
1425
+ end data with header (probably size_of_footer <= blockSize).
1426
+ }
1427
+ */
1428
+ // PhySize2 = ((UInt64)numBlocks + 2) * blockSize;
1429
+ const unsigned sector_of_FirstBlock = Get16a(p + 0x1c); // drAlBlSt : first allocation block in volume
1430
+ const UInt32 startBlock = Get16a(p + 0x7c + 2);
1431
+ const UInt32 blockCount = Get16a(p + 0x7c + 4);
1432
+ {
1433
+ const UInt32 temp = (UInt32)sector_of_FirstBlock << 9; // it's 32-bit here
1434
+ SpecOffset = temp;
1435
+ }
1436
+ PhySize2 = SpecOffset + (UInt64)numBlocks * blockSize;
1437
+ SpecOffset += (UInt64)startBlock * blockSize;
1438
+ // before v24.09: // SpecOffset = (UInt64)(1 + startBlock) * blockSize;
1439
+ const UInt64 phy = SpecOffset + (UInt64)blockCount * blockSize;
1440
+ if (PhySize2 < phy)
1441
+ PhySize2 = phy;
1442
+ UInt32 tail = 1 << 10; // at least 1 KiB tail (for footer MDB) is expected.
1443
+ if (tail < blockSize)
1444
+ tail = blockSize;
1445
+ RINOK(InStream_GetSize_SeekToEnd(inStream, ArcFileSize))
1446
+ if (ArcFileSize > PhySize2 &&
1447
+ ArcFileSize - PhySize2 <= tail)
1448
+ {
1449
+ // data after blocks[h.NumBlocks] must contain another copy of MDB.
1450
+ // In example where blockSize is not power of 2, we have
1451
+ // (ArcFileSize - PhySize2) < blockSize.
1452
+ // We suppose that data after blocks[h.NumBlocks] is part of HFS archive.
1453
+ // Maybe we should scan for footer MDB data (in last 1 KiB)?
1454
+ PhySize2 = ArcFileSize;
1455
+ }
1456
+ RINOK(InStream_SeekSet(inStream, SpecOffset))
1457
+ RINOK(ReadStream_FALSE(inStream, buf32, kHfsHeaderSize))
1458
+ }
1459
+
1460
+ // HFS+ / HFSX volume header (starting from offset==1024):
1461
+ {
1462
+ // v24.09: we use strict condition test for pair signature(Version):
1463
+ // H+(4), HX(5):
1464
+ const UInt32 sig = GetUi32a(p);
1465
+ // h.Version = Get16(p + 2);
1466
+ h.Is_Hsfx_ver5 = false;
1467
+ if (sig != k_Signature_LE32_HFSP_VER4)
1468
+ {
1469
+ if (sig != k_Signature_LE32_HFSX_VER5)
1470
+ return S_FALSE;
1471
+ h.Is_Hsfx_ver5 = true;
1472
+ }
1473
+ }
1474
+ {
1475
+ const UInt32 blockSize = Get32a(p + 0x28);
1476
+ unsigned i;
1477
+ for (i = 9; ((UInt32)1 << i) != blockSize; i++)
1478
+ if (i == 31)
1479
+ return S_FALSE;
1480
+ h.BlockSizeLog = i;
1481
+ }
1482
+ #if 1
1483
+ // HFS Plus DOCs: The first 1024 bytes are reserved for use as boot blocks
1484
+ // v24.09: we don't check starting 1 KiB before old (HFS MDB) block ("BD" signture) .
1485
+ // but we still check starting 1 KiB before HFS+ / HFSX volume header.
1486
+ // are there HFS+ / HFSX images with non-zero data in this reserved area?
1487
+ {
1488
+ for (unsigned i = 0; i < kHeaderPadSize / 4; i++)
1489
+ if (buf32[i] != 0)
1490
+ return S_FALSE;
1491
+ }
1492
+ #endif
1493
+ // h.Attr = Get32a(p + 4);
1494
+ // h.LastMountedVersion = Get32a(p + 8);
1495
+ // h.JournalInfoBlock = Get32a(p + 0xC);
1496
+ h.CTime = Get32a(p + 0x10);
1497
+ h.MTime = Get32a(p + 0x14);
1498
+ // h.BackupTime = Get32a(p + 0x18);
1499
+ // h.CheckedTime = Get32a(p + 0x1C);
1500
+ h.NumFiles = Get32a(p + 0x20);
1501
+ h.NumFolders = Get32a(p + 0x24);
1502
+ if (h.NumFolders > ((UInt32)1 << 29) ||
1503
+ h.NumFiles > ((UInt32)1 << 30))
1504
+ return S_FALSE;
1505
+
1506
+ RINOK(InStream_GetSize_SeekToEnd(inStream, ArcFileSize))
1507
+ if (progress)
1508
+ {
1509
+ const UInt64 numFiles = (UInt64)h.NumFiles + h.NumFolders + 1;
1510
+ RINOK(progress->SetTotal(&numFiles, NULL))
1511
+ }
1512
+
1513
+ h.NumBlocks = Get32a(p + 0x2C);
1514
+ h.NumFreeBlocks = Get32a(p + 0x30);
1515
+ /*
1516
+ h.NextCalatlogNodeID = Get32(p + 0x40);
1517
+ h.WriteCount = Get32(p + 0x44);
1518
+ for (i = 0; i < 6; i++)
1519
+ h.FinderInfo[i] = Get32(p + 0x50 + i * 4);
1520
+ h.VolID = Get64(p + 0x68);
1521
+ */
1522
+
1523
+ ResFileName = kResFileName;
1524
+
1525
+ CFork extentsFork, catalogFork, attrFork;
1526
+ // allocationFork.Parse(p + 0x70 + 0x50 * 0);
1527
+ extentsFork.Parse(p + 0x70 + 0x50 * 1);
1528
+ catalogFork.Parse(p + 0x70 + 0x50 * 2);
1529
+ attrFork.Parse (p + 0x70 + 0x50 * 3);
1530
+ // startupFork.Parse(p + 0x70 + 0x50 * 4);
1531
+
1532
+ CObjectVector<CIdExtents> overflowExtents[2];
1533
+ if (!extentsFork.IsOk(Header.BlockSizeLog))
1534
+ HeadersError = true;
1535
+ else
1536
+ {
1537
+ const HRESULT res = LoadExtentFile(extentsFork, inStream, overflowExtents);
1538
+ if (res == S_FALSE)
1539
+ HeadersError = true;
1540
+ else if (res != S_OK)
1541
+ return res;
1542
+ }
1543
+
1544
+ if (!catalogFork.UpgradeAndTest(overflowExtents[0], kHfsID_CatalogFile, Header.BlockSizeLog))
1545
+ return S_FALSE;
1546
+
1547
+ if (!attrFork.UpgradeAndTest(overflowExtents[0], kHfsID_AttributesFile, Header.BlockSizeLog))
1548
+ HeadersError = true;
1549
+ else
1550
+ {
1551
+ if (attrFork.Size != 0)
1552
+ RINOK(LoadAttrs(attrFork, inStream, progress))
1553
+ }
1554
+
1555
+ RINOK(LoadCatalog(catalogFork, overflowExtents, inStream, progress))
1556
+
1557
+ // PhySize = Header.GetPhySize();
1558
+ return S_OK;
1559
+ }
1560
+
1561
+
1562
+
1563
+ Z7_class_CHandler_final:
1564
+ public IInArchive,
1565
+ public IArchiveGetRawProps,
1566
+ public IInArchiveGetStream,
1567
+ public CMyUnknownImp,
1568
+ public CDatabase
1569
+ {
1570
+ Z7_IFACES_IMP_UNK_3(
1571
+ IInArchive,
1572
+ IArchiveGetRawProps,
1573
+ IInArchiveGetStream)
1574
+
1575
+ CMyComPtr<IInStream> _stream;
1576
+ HRESULT GetForkStream(const CFork &fork, ISequentialInStream **stream);
1577
+ };
1578
+
1579
+ static const Byte kProps[] =
1580
+ {
1581
+ kpidPath,
1582
+ kpidIsDir,
1583
+ kpidSize,
1584
+ kpidPackSize,
1585
+ kpidCTime,
1586
+ kpidMTime,
1587
+ kpidATime,
1588
+ kpidChangeTime,
1589
+ kpidPosixAttrib,
1590
+ /*
1591
+ kpidUserId,
1592
+ kpidGroupId,
1593
+ */
1594
+ #ifdef HFS_SHOW_ALT_STREAMS
1595
+ kpidIsAltStream,
1596
+ #endif
1597
+ kpidMethod
1598
+ };
1599
+
1600
+ static const Byte kArcProps[] =
1601
+ {
1602
+ kpidMethod,
1603
+ kpidCharacts,
1604
+ kpidClusterSize,
1605
+ kpidFreeSpace,
1606
+ kpidCTime,
1607
+ kpidMTime
1608
+ };
1609
+
1610
+ IMP_IInArchive_Props
1611
+ IMP_IInArchive_ArcProps
1612
+
1613
+ static void HfsTimeToProp(UInt32 hfsTime, NWindows::NCOM::CPropVariant &prop)
1614
+ {
1615
+ if (hfsTime == 0)
1616
+ return;
1617
+ FILETIME ft;
1618
+ HfsTimeToFileTime(hfsTime, ft);
1619
+ prop.SetAsTimeFrom_FT_Prec(ft, k_PropVar_TimePrec_Base);
1620
+ }
1621
+
1622
+ Z7_COM7F_IMF(CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value))
1623
+ {
1624
+ COM_TRY_BEGIN
1625
+ NWindows::NCOM::CPropVariant prop;
1626
+ switch (propID)
1627
+ {
1628
+ case kpidExtension: prop = Header.IsHfsX() ? "hfsx" : "hfs"; break;
1629
+ case kpidMethod: prop = Header.IsHfsX() ? "HFSX" : "HFS+"; break;
1630
+ case kpidCharacts: MethodsMaskToProp(MethodsMask, prop); break;
1631
+ case kpidPhySize:
1632
+ {
1633
+ UInt64 v = SpecOffset + Header.GetPhySize(); // PhySize;
1634
+ if (v < PhySize2)
1635
+ v = PhySize2;
1636
+ prop = v;
1637
+ break;
1638
+ }
1639
+ case kpidClusterSize: prop = (UInt32)1 << Header.BlockSizeLog; break;
1640
+ case kpidFreeSpace: prop = (UInt64)Header.GetFreeSize(); break;
1641
+ case kpidMTime: HfsTimeToProp(Header.MTime, prop); break;
1642
+ case kpidCTime:
1643
+ {
1644
+ if (Header.CTime != 0)
1645
+ {
1646
+ FILETIME localFt, ft;
1647
+ HfsTimeToFileTime(Header.CTime, localFt);
1648
+ if (LocalFileTimeToFileTime(&localFt, &ft))
1649
+ prop.SetAsTimeFrom_FT_Prec(ft, k_PropVar_TimePrec_Base);
1650
+ }
1651
+ break;
1652
+ }
1653
+ case kpidIsTree: prop = true; break;
1654
+ case kpidErrorFlags:
1655
+ {
1656
+ UInt32 flags = 0;
1657
+ if (HeadersError) flags |= kpv_ErrorFlags_HeadersError;
1658
+ if (UnsupportedFeature) flags |= kpv_ErrorFlags_UnsupportedFeature;
1659
+ if (flags != 0)
1660
+ prop = flags;
1661
+ break;
1662
+ }
1663
+ case kpidIsAltStream: prop = ThereAreAltStreams; break;
1664
+ }
1665
+ prop.Detach(value);
1666
+ return S_OK;
1667
+ COM_TRY_END
1668
+ }
1669
+
1670
+ Z7_COM7F_IMF(CHandler::GetNumRawProps(UInt32 *numProps))
1671
+ {
1672
+ *numProps = 0;
1673
+ return S_OK;
1674
+ }
1675
+
1676
+ Z7_COM7F_IMF(CHandler::GetRawPropInfo(UInt32 /* index */, BSTR *name, PROPID *propID))
1677
+ {
1678
+ *name = NULL;
1679
+ *propID = 0;
1680
+ return S_OK;
1681
+ }
1682
+
1683
+ Z7_COM7F_IMF(CHandler::GetParent(UInt32 index, UInt32 *parent, UInt32 *parentType))
1684
+ {
1685
+ const CRef &ref = Refs[index];
1686
+ *parentType = ref.IsAltStream() ?
1687
+ NParentType::kAltStream :
1688
+ NParentType::kDir;
1689
+ *parent = (UInt32)(Int32)ref.Parent;
1690
+ return S_OK;
1691
+ }
1692
+
1693
+ Z7_COM7F_IMF(CHandler::GetRawProp(UInt32 index, PROPID propID, const void **data, UInt32 *dataSize, UInt32 *propType))
1694
+ {
1695
+ *data = NULL;
1696
+ *dataSize = 0;
1697
+ *propType = 0;
1698
+ #ifdef MY_CPU_LE
1699
+ if (propID == kpidName)
1700
+ {
1701
+ const CRef &ref = Refs[index];
1702
+ const UString *s;
1703
+ if (ref.IsResource())
1704
+ s = &ResFileName;
1705
+ else if (ref.AttrIndex >= 0)
1706
+ s = &Attrs[ref.AttrIndex].Name;
1707
+ else
1708
+ s = &Items[ref.ItemIndex].Name;
1709
+ *data = (const wchar_t *)(*s);
1710
+ *dataSize = (s->Len() + 1) * (UInt32)sizeof(wchar_t);
1711
+ *propType = PROP_DATA_TYPE_wchar_t_PTR_Z_LE;
1712
+ return S_OK;
1713
+ }
1714
+ #else
1715
+ UNUSED_VAR(index)
1716
+ UNUSED_VAR(propID)
1717
+ #endif
1718
+ return S_OK;
1719
+ }
1720
+
1721
+ Z7_COM7F_IMF(CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value))
1722
+ {
1723
+ COM_TRY_BEGIN
1724
+ NWindows::NCOM::CPropVariant prop;
1725
+ const CRef &ref = Refs[index];
1726
+ const CItem &item = Items[ref.ItemIndex];
1727
+ switch (propID)
1728
+ {
1729
+ case kpidPath: GetItemPath(index, prop); break;
1730
+ case kpidName:
1731
+ {
1732
+ const UString *s;
1733
+ if (ref.IsResource())
1734
+ s = &ResFileName;
1735
+ else if (ref.AttrIndex >= 0)
1736
+ s = &Attrs[ref.AttrIndex].Name;
1737
+ else
1738
+ s = &item.Name;
1739
+ prop = *s;
1740
+ break;
1741
+ }
1742
+ case kpidPackSize:
1743
+ {
1744
+ UInt64 size;
1745
+ if (ref.AttrIndex >= 0)
1746
+ size = Attrs[ref.AttrIndex].GetSize();
1747
+ else if (ref.IsResource())
1748
+ size = (UInt64)item.ResourceFork.NumBlocks << Header.BlockSizeLog;
1749
+ else if (item.IsDir())
1750
+ break;
1751
+ else if (item.CompressHeader.IsCorrect)
1752
+ {
1753
+ if (item.CompressHeader.IsMethod_Resource())
1754
+ size = (UInt64)item.ResourceFork.NumBlocks << Header.BlockSizeLog;
1755
+ else if (item.decmpfs_AttrIndex >= 0)
1756
+ {
1757
+ // size = item.PackSize;
1758
+ const CAttr &attr = Attrs[item.decmpfs_AttrIndex];
1759
+ size = attr.Data.Size() - item.CompressHeader.DataPos;
1760
+ }
1761
+ else
1762
+ size = 0;
1763
+ }
1764
+ else
1765
+ size = (UInt64)item.DataFork.NumBlocks << Header.BlockSizeLog;
1766
+ prop = size;
1767
+ break;
1768
+ }
1769
+ case kpidSize:
1770
+ {
1771
+ UInt64 size;
1772
+ if (ref.AttrIndex >= 0)
1773
+ size = Attrs[ref.AttrIndex].GetSize();
1774
+ else if (ref.IsResource())
1775
+ size = item.ResourceFork.Size;
1776
+ else if (item.IsDir())
1777
+ break;
1778
+ else if (item.CompressHeader.IsCorrect)
1779
+ size = item.CompressHeader.UnpackSize;
1780
+ else
1781
+ size = item.DataFork.Size;
1782
+ prop = size;
1783
+ break;
1784
+ }
1785
+ case kpidIsDir: prop = (ref.IsItem() && item.IsDir()); break;
1786
+ case kpidIsAltStream: prop = ref.IsAltStream(); break;
1787
+ case kpidCTime: HfsTimeToProp(item.CTime, prop); break;
1788
+ case kpidMTime: HfsTimeToProp(item.MTime, prop); break;
1789
+ case kpidATime: HfsTimeToProp(item.ATime, prop); break;
1790
+ case kpidChangeTime: HfsTimeToProp(item.AttrMTime, prop); break;
1791
+ case kpidPosixAttrib: if (ref.IsItem()) prop = (UInt32)item.FileMode; break;
1792
+ /*
1793
+ case kpidUserId: prop = (UInt32)item.OwnerID; break;
1794
+ case kpidGroupId: prop = (UInt32)item.GroupID; break;
1795
+ */
1796
+
1797
+ case kpidMethod:
1798
+ if (ref.IsItem())
1799
+ item.CompressHeader.MethodToProp(prop);
1800
+ break;
1801
+ }
1802
+ prop.Detach(value);
1803
+ return S_OK;
1804
+ COM_TRY_END
1805
+ }
1806
+
1807
+ Z7_COM7F_IMF(CHandler::Open(IInStream *inStream,
1808
+ const UInt64 * /* maxCheckStartPosition */,
1809
+ IArchiveOpenCallback *callback))
1810
+ {
1811
+ COM_TRY_BEGIN
1812
+ Close();
1813
+ RINOK(Open2(inStream, callback))
1814
+ _stream = inStream;
1815
+ return S_OK;
1816
+ COM_TRY_END
1817
+ }
1818
+
1819
+ Z7_COM7F_IMF(CHandler::Close())
1820
+ {
1821
+ _stream.Release();
1822
+ Clear();
1823
+ return S_OK;
1824
+ }
1825
+
1826
+ static const UInt32 kCompressionBlockSize = 1 << 16;
1827
+
1828
+ CDecoder::CDecoder(bool IsAdlerOptional)
1829
+ {
1830
+ /* Some new hfs files contain zlib resource fork without Adler checksum.
1831
+ We do not know how we must detect case where there is Adler
1832
+ checksum or there is no Adler checksum.
1833
+ */
1834
+ _zlibDecoder->IsAdlerOptional = IsAdlerOptional;
1835
+ _lzfseDecoder->LzvnMode = true;
1836
+ }
1837
+
1838
+ HRESULT CDecoder::ExtractResourceFork_ZLIB(
1839
+ ISequentialInStream *inStream, ISequentialOutStream *outStream,
1840
+ UInt64 forkSize, UInt64 unpackSize,
1841
+ UInt64 progressStart, IArchiveExtractCallback *extractCallback)
1842
+ {
1843
+ const unsigned kHeaderSize = 0x100 + 8;
1844
+
1845
+ const size_t kBufSize = kCompressionBlockSize;
1846
+ _buf.Alloc(kBufSize + 0x10); // we need 1 additional bytes for uncompressed chunk header
1847
+
1848
+ RINOK(ReadStream_FALSE(inStream, _buf, kHeaderSize))
1849
+ Byte *buf = _buf;
1850
+ const UInt32 dataPos = Get32(buf);
1851
+ const UInt32 mapPos = Get32(buf + 4);
1852
+ const UInt32 dataSize = Get32(buf + 8);
1853
+ const UInt32 mapSize = Get32(buf + 12);
1854
+
1855
+ const UInt32 kResMapSize = 50;
1856
+
1857
+ if (mapSize != kResMapSize
1858
+ || dataPos > mapPos
1859
+ || dataSize != mapPos - dataPos
1860
+ || mapSize > forkSize
1861
+ || mapPos != forkSize - mapSize)
1862
+ return S_FALSE;
1863
+
1864
+ const UInt32 dataSize2 = Get32(buf + 0x100);
1865
+ if (4 + dataSize2 != dataSize
1866
+ || dataSize2 < 8
1867
+ || dataSize2 > dataSize)
1868
+ return S_FALSE;
1869
+
1870
+ const UInt32 numBlocks = GetUi32(buf + 0x100 + 4);
1871
+ if (((dataSize2 - 4) >> 3) < numBlocks)
1872
+ return S_FALSE;
1873
+ {
1874
+ const UInt64 up = unpackSize + kCompressionBlockSize - 1;
1875
+ if (up < unpackSize || up / kCompressionBlockSize != numBlocks)
1876
+ return S_FALSE;
1877
+ }
1878
+
1879
+ const UInt32 tableSize = (numBlocks << 3);
1880
+
1881
+ _tableBuf.AllocAtLeast(tableSize);
1882
+
1883
+ RINOK(ReadStream_FALSE(inStream, _tableBuf, tableSize))
1884
+ const Byte *tableBuf = _tableBuf;
1885
+
1886
+ UInt32 prev = 4 + tableSize;
1887
+
1888
+ UInt32 i;
1889
+ for (i = 0; i < numBlocks; i++)
1890
+ {
1891
+ const UInt32 offs = GetUi32(tableBuf + i * 8);
1892
+ const UInt32 size = GetUi32(tableBuf + i * 8 + 4);
1893
+ if (size == 0
1894
+ || prev != offs
1895
+ || offs > dataSize2
1896
+ || size > dataSize2 - offs)
1897
+ return S_FALSE;
1898
+ prev = offs + size;
1899
+ }
1900
+
1901
+ if (prev != dataSize2)
1902
+ return S_FALSE;
1903
+
1904
+ CMyComPtr2_Create<ISequentialInStream, CBufInStream> bufInStream;
1905
+
1906
+ // bool padError = false;
1907
+ UInt64 outPos = 0;
1908
+
1909
+ for (i = 0; i < numBlocks; i++)
1910
+ {
1911
+ const UInt64 rem = unpackSize - outPos;
1912
+ if (rem == 0)
1913
+ return S_FALSE;
1914
+ UInt32 blockSize = kCompressionBlockSize;
1915
+ if (rem < kCompressionBlockSize)
1916
+ blockSize = (UInt32)rem;
1917
+
1918
+ const UInt32 size = GetUi32(tableBuf + i * 8 + 4);
1919
+
1920
+ if (size > kCompressionBlockSize + 1)
1921
+ return S_FALSE;
1922
+
1923
+ RINOK(ReadStream_FALSE(inStream, buf, size))
1924
+
1925
+ if ((buf[0] & 0xF) == 0xF)
1926
+ {
1927
+ // (buf[0] = 0xff) is marker of uncompressed block in APFS
1928
+ // that code was not tested in HFS
1929
+ if (size - 1 != blockSize)
1930
+ return S_FALSE;
1931
+
1932
+ if (outStream)
1933
+ {
1934
+ RINOK(WriteStream(outStream, buf + 1, blockSize))
1935
+ }
1936
+ }
1937
+ else
1938
+ {
1939
+ const UInt64 blockSize64 = blockSize;
1940
+ bufInStream->Init(buf, size);
1941
+ RINOK(_zlibDecoder.Interface()->Code(bufInStream, outStream, NULL, &blockSize64, NULL))
1942
+ if (_zlibDecoder->GetOutputProcessedSize() != blockSize)
1943
+ return S_FALSE;
1944
+ const UInt64 inSize = _zlibDecoder->GetInputProcessedSize();
1945
+ if (inSize != size)
1946
+ {
1947
+ if (inSize > size)
1948
+ return S_FALSE;
1949
+ // apfs file can contain junk (non-zeros) after data block.
1950
+ /*
1951
+ if (!padError)
1952
+ {
1953
+ const Byte *p = buf + (UInt32)inSize;
1954
+ const Byte *e = p + (size - (UInt32)inSize);
1955
+ do
1956
+ {
1957
+ if (*p != 0)
1958
+ {
1959
+ padError = true;
1960
+ break;
1961
+ }
1962
+ }
1963
+ while (++p != e);
1964
+ }
1965
+ */
1966
+ }
1967
+ }
1968
+
1969
+ outPos += blockSize;
1970
+ if ((i & 0xFF) == 0)
1971
+ {
1972
+ const UInt64 progressPos = progressStart + outPos;
1973
+ RINOK(extractCallback->SetCompleted(&progressPos))
1974
+ }
1975
+ }
1976
+
1977
+ if (outPos != unpackSize)
1978
+ return S_FALSE;
1979
+
1980
+ // if (padError) return S_FALSE;
1981
+
1982
+ /* We check Resource Map
1983
+ Are there HFS files with another values in Resource Map ??? */
1984
+
1985
+ RINOK(ReadStream_FALSE(inStream, buf, mapSize))
1986
+ const UInt32 types = Get16(buf + 24);
1987
+ const UInt32 names = Get16(buf + 26);
1988
+ const UInt32 numTypes = Get16(buf + 28);
1989
+ if (numTypes != 0 || types != 28 || names != kResMapSize)
1990
+ return S_FALSE;
1991
+ const UInt32 resType = Get32(buf + 30);
1992
+ const UInt32 numResources = Get16(buf + 34);
1993
+ const UInt32 resListOffset = Get16(buf + 36);
1994
+ if (resType != 0x636D7066) // cmpf
1995
+ return S_FALSE;
1996
+ if (numResources != 0 || resListOffset != 10)
1997
+ return S_FALSE;
1998
+
1999
+ const UInt32 entryId = Get16(buf + 38);
2000
+ const UInt32 nameOffset = Get16(buf + 40);
2001
+ // Byte attrib = buf[42];
2002
+ const UInt32 resourceOffset = Get32(buf + 42) & 0xFFFFFF;
2003
+ if (entryId != 1 || nameOffset != 0xFFFF || resourceOffset != 0)
2004
+ return S_FALSE;
2005
+
2006
+ return S_OK;
2007
+ }
2008
+
2009
+
2010
+
2011
+ HRESULT CDecoder::ExtractResourceFork_LZFSE(
2012
+ ISequentialInStream *inStream, ISequentialOutStream *outStream,
2013
+ UInt64 forkSize, UInt64 unpackSize,
2014
+ UInt64 progressStart, IArchiveExtractCallback *extractCallback)
2015
+ {
2016
+ const UInt32 kNumBlocksMax = (UInt32)1 << 29;
2017
+ if (unpackSize >= (UInt64)kNumBlocksMax * kCompressionBlockSize)
2018
+ return S_FALSE;
2019
+ const UInt32 numBlocks = (UInt32)((unpackSize + kCompressionBlockSize - 1) / kCompressionBlockSize);
2020
+ const UInt32 numBlocks2 = numBlocks + 1;
2021
+ const UInt32 tableSize = (numBlocks2 << 2);
2022
+ if (tableSize > forkSize)
2023
+ return S_FALSE;
2024
+ _tableBuf.AllocAtLeast(tableSize);
2025
+ RINOK(ReadStream_FALSE(inStream, _tableBuf, tableSize))
2026
+ const Byte *tableBuf = _tableBuf;
2027
+
2028
+ {
2029
+ UInt32 prev = GetUi32(tableBuf);
2030
+ if (prev != tableSize)
2031
+ return S_FALSE;
2032
+ for (UInt32 i = 1; i < numBlocks2; i++)
2033
+ {
2034
+ const UInt32 offs = GetUi32(tableBuf + i * 4);
2035
+ if (offs <= prev)
2036
+ return S_FALSE;
2037
+ prev = offs;
2038
+ }
2039
+ if (prev != forkSize)
2040
+ return S_FALSE;
2041
+ }
2042
+
2043
+ const size_t kBufSize = kCompressionBlockSize;
2044
+ _buf.Alloc(kBufSize + 0x10); // we need 1 additional bytes for uncompressed chunk header
2045
+
2046
+ CMyComPtr2_Create<ISequentialInStream, CBufInStream> bufInStream;
2047
+
2048
+ UInt64 outPos = 0;
2049
+
2050
+ for (UInt32 i = 0; i < numBlocks; i++)
2051
+ {
2052
+ const UInt64 rem = unpackSize - outPos;
2053
+ if (rem == 0)
2054
+ return S_FALSE;
2055
+ UInt32 blockSize = kCompressionBlockSize;
2056
+ if (rem < kCompressionBlockSize)
2057
+ blockSize = (UInt32)rem;
2058
+
2059
+ const UInt32 size =
2060
+ GetUi32(tableBuf + i * 4 + 4) -
2061
+ GetUi32(tableBuf + i * 4);
2062
+
2063
+ if (size > kCompressionBlockSize + 1)
2064
+ return S_FALSE;
2065
+
2066
+ RINOK(ReadStream_FALSE(inStream, _buf, size))
2067
+ const Byte *buf = _buf;
2068
+
2069
+ if (buf[0] == k_LZVN_Uncompressed_Marker)
2070
+ {
2071
+ if (size - 1 != blockSize)
2072
+ return S_FALSE;
2073
+ if (outStream)
2074
+ {
2075
+ RINOK(WriteStream(outStream, buf + 1, blockSize))
2076
+ }
2077
+ }
2078
+ else
2079
+ {
2080
+ const UInt64 blockSize64 = blockSize;
2081
+ const UInt64 packSize64 = size;
2082
+ bufInStream->Init(buf, size);
2083
+ RINOK(_lzfseDecoder.Interface()->Code(bufInStream, outStream, &packSize64, &blockSize64, NULL))
2084
+ // in/out sizes were checked in Code()
2085
+ }
2086
+
2087
+ outPos += blockSize;
2088
+ if ((i & 0xFF) == 0)
2089
+ {
2090
+ const UInt64 progressPos = progressStart + outPos;
2091
+ RINOK(extractCallback->SetCompleted(&progressPos))
2092
+ }
2093
+ }
2094
+
2095
+ return S_OK;
2096
+ }
2097
+
2098
+
2099
+ /*
2100
+ static UInt32 GetUi24(const Byte *p)
2101
+ {
2102
+ return p[0] + ((UInt32)p[1] << 8) + ((UInt32)p[2] << 24);
2103
+ }
2104
+
2105
+ HRESULT CDecoder::ExtractResourceFork_ZBM(
2106
+ ISequentialInStream *inStream, ISequentialOutStream *outStream,
2107
+ UInt64 forkSize, UInt64 unpackSize,
2108
+ UInt64 progressStart, IArchiveExtractCallback *extractCallback)
2109
+ {
2110
+ const UInt32 kNumBlocksMax = (UInt32)1 << 29;
2111
+ if (unpackSize >= (UInt64)kNumBlocksMax * kCompressionBlockSize)
2112
+ return S_FALSE;
2113
+ const UInt32 numBlocks = (UInt32)((unpackSize + kCompressionBlockSize - 1) / kCompressionBlockSize);
2114
+ const UInt32 numBlocks2 = numBlocks + 1;
2115
+ const UInt32 tableSize = (numBlocks2 << 2);
2116
+ if (tableSize > forkSize)
2117
+ return S_FALSE;
2118
+ _tableBuf.AllocAtLeast(tableSize);
2119
+ RINOK(ReadStream_FALSE(inStream, _tableBuf, tableSize));
2120
+ const Byte *tableBuf = _tableBuf;
2121
+
2122
+ {
2123
+ UInt32 prev = GetUi32(tableBuf);
2124
+ if (prev != tableSize)
2125
+ return S_FALSE;
2126
+ for (UInt32 i = 1; i < numBlocks2; i++)
2127
+ {
2128
+ const UInt32 offs = GetUi32(tableBuf + i * 4);
2129
+ if (offs <= prev)
2130
+ return S_FALSE;
2131
+ prev = offs;
2132
+ }
2133
+ if (prev != forkSize)
2134
+ return S_FALSE;
2135
+ }
2136
+
2137
+ const size_t kBufSize = kCompressionBlockSize;
2138
+ _buf.Alloc(kBufSize + 0x10); // we need 1 additional bytes for uncompressed chunk header
2139
+
2140
+ CBufInStream *bufInStream = new CBufInStream;
2141
+ CMyComPtr<ISequentialInStream> bufInStream = bufInStream;
2142
+
2143
+ UInt64 outPos = 0;
2144
+
2145
+ for (UInt32 i = 0; i < numBlocks; i++)
2146
+ {
2147
+ const UInt64 rem = unpackSize - outPos;
2148
+ if (rem == 0)
2149
+ return S_FALSE;
2150
+ UInt32 blockSize = kCompressionBlockSize;
2151
+ if (rem < kCompressionBlockSize)
2152
+ blockSize = (UInt32)rem;
2153
+
2154
+ const UInt32 size =
2155
+ GetUi32(tableBuf + i * 4 + 4) -
2156
+ GetUi32(tableBuf + i * 4);
2157
+
2158
+ // if (size > kCompressionBlockSize + 1)
2159
+ if (size > blockSize + 1)
2160
+ return S_FALSE; // we don't expect it, because encode will use uncompressed chunk
2161
+
2162
+ RINOK(ReadStream_FALSE(inStream, _buf, size));
2163
+ const Byte *buf = _buf;
2164
+
2165
+ // (size != 0)
2166
+ // if (size == 0) return S_FALSE;
2167
+
2168
+ if (buf[0] == 0xFF) // uncompressed marker
2169
+ {
2170
+ if (size != blockSize + 1)
2171
+ return S_FALSE;
2172
+ if (outStream)
2173
+ {
2174
+ RINOK(WriteStream(outStream, buf + 1, blockSize));
2175
+ }
2176
+ }
2177
+ else
2178
+ {
2179
+ if (size < 4)
2180
+ return S_FALSE;
2181
+ if (buf[0] != 'Z' ||
2182
+ buf[1] != 'B' ||
2183
+ buf[2] != 'M' ||
2184
+ buf[3] != 9)
2185
+ return S_FALSE;
2186
+ // for debug:
2187
+ unsigned packPos = 4;
2188
+ unsigned unpackPos = 0;
2189
+ unsigned packRem = size - packPos;
2190
+ for (;;)
2191
+ {
2192
+ if (packRem < 6)
2193
+ return S_FALSE;
2194
+ const UInt32 packSize = GetUi24(buf + packPos);
2195
+ const UInt32 chunkUnpackSize = GetUi24(buf + packPos + 3);
2196
+ if (packSize < 6)
2197
+ return S_FALSE;
2198
+ if (packSize > packRem)
2199
+ return S_FALSE;
2200
+ if (chunkUnpackSize > blockSize - unpackPos)
2201
+ return S_FALSE;
2202
+ packPos += packSize;
2203
+ packRem -= packSize;
2204
+ unpackPos += chunkUnpackSize;
2205
+ if (packSize == 6)
2206
+ {
2207
+ if (chunkUnpackSize != 0)
2208
+ return S_FALSE;
2209
+ break;
2210
+ }
2211
+ if (packSize >= chunkUnpackSize + 6)
2212
+ {
2213
+ if (packSize > chunkUnpackSize + 6)
2214
+ return S_FALSE;
2215
+ // uncompressed chunk;
2216
+ }
2217
+ else
2218
+ {
2219
+ // compressed chunk
2220
+ const Byte *t = buf + packPos - packSize + 6;
2221
+ UInt32 r = packSize - 6;
2222
+ if (r < 9)
2223
+ return S_FALSE;
2224
+ const UInt32 v0 = GetUi24(t);
2225
+ const UInt32 v1 = GetUi24(t + 3);
2226
+ const UInt32 v2 = GetUi24(t + 6);
2227
+ if (v0 > v1 || v1 > v2 || v2 > packSize)
2228
+ return S_FALSE;
2229
+ // here we need the code that will decompress ZBM chunk
2230
+ }
2231
+ }
2232
+
2233
+ if (unpackPos != blockSize)
2234
+ return S_FALSE;
2235
+
2236
+ UInt32 size1 = size;
2237
+ if (size1 > kCompressionBlockSize)
2238
+ {
2239
+ size1 = kCompressionBlockSize;
2240
+ // return S_FALSE;
2241
+ }
2242
+ if (outStream)
2243
+ {
2244
+ RINOK(WriteStream(outStream, buf, size1))
2245
+
2246
+ const UInt32 kTempSize = 1 << 16;
2247
+ Byte temp[kTempSize];
2248
+ memset(temp, 0, kTempSize);
2249
+
2250
+ for (UInt32 k = size1; k < kCompressionBlockSize; k++)
2251
+ {
2252
+ UInt32 cur = kCompressionBlockSize - k;
2253
+ if (cur > kTempSize)
2254
+ cur = kTempSize;
2255
+ RINOK(WriteStream(outStream, temp, cur))
2256
+ k += cur;
2257
+ }
2258
+ }
2259
+
2260
+ // const UInt64 blockSize64 = blockSize;
2261
+ // const UInt64 packSize64 = size;
2262
+ // bufInStream->Init(buf, size);
2263
+ // RINOK(_zbmDecoderSpec->Code(bufInStream, outStream, &packSize64, &blockSize64, NULL));
2264
+ // in/out sizes were checked in Code()
2265
+ }
2266
+
2267
+ outPos += blockSize;
2268
+ if ((i & 0xFF) == 0)
2269
+ {
2270
+ const UInt64 progressPos = progressStart + outPos;
2271
+ RINOK(extractCallback->SetCompleted(&progressPos));
2272
+ }
2273
+ }
2274
+
2275
+ return S_OK;
2276
+ }
2277
+ */
2278
+
2279
+ HRESULT CDecoder::Extract(
2280
+ ISequentialInStream *inStreamFork, ISequentialOutStream *realOutStream,
2281
+ UInt64 forkSize,
2282
+ const CCompressHeader &compressHeader,
2283
+ const CByteBuffer *data,
2284
+ UInt64 progressStart, IArchiveExtractCallback *extractCallback,
2285
+ int &opRes)
2286
+ {
2287
+ opRes = NExtract::NOperationResult::kDataError;
2288
+
2289
+ if (compressHeader.IsMethod_Uncompressed_Inline())
2290
+ {
2291
+ const size_t packSize = data->Size() - compressHeader.DataPos;
2292
+ if (realOutStream)
2293
+ {
2294
+ RINOK(WriteStream(realOutStream, *data + compressHeader.DataPos, packSize))
2295
+ }
2296
+ opRes = NExtract::NOperationResult::kOK;
2297
+ return S_OK;
2298
+ }
2299
+
2300
+ if (compressHeader.Method == kMethod_ZLIB_ATTR ||
2301
+ compressHeader.Method == kMethod_LZVN_ATTR)
2302
+ {
2303
+ CMyComPtr2_Create<ISequentialInStream, CBufInStream> bufInStream;
2304
+ const size_t packSize = data->Size() - compressHeader.DataPos;
2305
+ bufInStream->Init(*data + compressHeader.DataPos, packSize);
2306
+
2307
+ if (compressHeader.Method == kMethod_ZLIB_ATTR)
2308
+ {
2309
+ const HRESULT hres = _zlibDecoder.Interface()->Code(bufInStream, realOutStream,
2310
+ NULL, &compressHeader.UnpackSize, NULL);
2311
+ if (hres == S_OK)
2312
+ if (_zlibDecoder->GetOutputProcessedSize() == compressHeader.UnpackSize
2313
+ && _zlibDecoder->GetInputProcessedSize() == packSize)
2314
+ opRes = NExtract::NOperationResult::kOK;
2315
+ return hres;
2316
+ }
2317
+ {
2318
+ const UInt64 packSize64 = packSize;
2319
+ const HRESULT hres = _lzfseDecoder.Interface()->Code(bufInStream, realOutStream,
2320
+ &packSize64, &compressHeader.UnpackSize, NULL);
2321
+ if (hres == S_OK)
2322
+ {
2323
+ // in/out sizes were checked in Code()
2324
+ opRes = NExtract::NOperationResult::kOK;
2325
+ }
2326
+ return hres;
2327
+ }
2328
+ }
2329
+
2330
+ HRESULT hres;
2331
+ if (compressHeader.Method == NHfs::kMethod_ZLIB_RSRC)
2332
+ {
2333
+ hres = ExtractResourceFork_ZLIB(
2334
+ inStreamFork, realOutStream,
2335
+ forkSize, compressHeader.UnpackSize,
2336
+ progressStart, extractCallback);
2337
+ // for debug:
2338
+ // hres = NCompress::CopyStream(inStreamFork, realOutStream, NULL);
2339
+ }
2340
+ else if (compressHeader.Method == NHfs::kMethod_LZVN_RSRC)
2341
+ {
2342
+ hres = ExtractResourceFork_LZFSE(
2343
+ inStreamFork, realOutStream,
2344
+ forkSize, compressHeader.UnpackSize,
2345
+ progressStart, extractCallback);
2346
+ }
2347
+ /*
2348
+ else if (compressHeader.Method == NHfs::kMethod_ZBM_RSRC)
2349
+ {
2350
+ hres = ExtractResourceFork_ZBM(
2351
+ inStreamFork, realOutStream,
2352
+ forkSize, compressHeader.UnpackSize,
2353
+ progressStart, extractCallback);
2354
+ }
2355
+ */
2356
+ else
2357
+ {
2358
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
2359
+ hres = S_FALSE;
2360
+ }
2361
+
2362
+ if (hres == S_OK)
2363
+ opRes = NExtract::NOperationResult::kOK;
2364
+ return hres;
2365
+ }
2366
+
2367
+
2368
+ Z7_COM7F_IMF(CHandler::Extract(const UInt32 *indices, UInt32 numItems,
2369
+ Int32 testMode, IArchiveExtractCallback *extractCallback))
2370
+ {
2371
+ COM_TRY_BEGIN
2372
+ const bool allFilesMode = (numItems == (UInt32)(Int32)-1);
2373
+ if (allFilesMode)
2374
+ numItems = Refs.Size();
2375
+ if (numItems == 0)
2376
+ return S_OK;
2377
+ UInt32 i;
2378
+ UInt64 totalSize = 0;
2379
+ for (i = 0; i < numItems; i++)
2380
+ {
2381
+ const CRef &ref = Refs[allFilesMode ? i : indices[i]];
2382
+ totalSize += Get_UnpackSize_of_Ref(ref);
2383
+ }
2384
+ RINOK(extractCallback->SetTotal(totalSize))
2385
+
2386
+ UInt64 currentTotalSize = 0, currentItemSize = 0;
2387
+
2388
+ const size_t kBufSize = kCompressionBlockSize;
2389
+ CByteBuffer buf(kBufSize + 0x10); // we need 1 additional bytes for uncompressed chunk header
2390
+
2391
+ // there are hfs without adler in zlib.
2392
+ CDecoder decoder(true); // IsAdlerOptional
2393
+
2394
+ for (i = 0;; i++, currentTotalSize += currentItemSize)
2395
+ {
2396
+ RINOK(extractCallback->SetCompleted(&currentTotalSize))
2397
+ if (i >= numItems)
2398
+ break;
2399
+ const UInt32 index = allFilesMode ? i : indices[i];
2400
+ const CRef &ref = Refs[index];
2401
+ const CItem &item = Items[ref.ItemIndex];
2402
+ currentItemSize = Get_UnpackSize_of_Ref(ref);
2403
+
2404
+ int opRes;
2405
+ {
2406
+ CMyComPtr<ISequentialOutStream> realOutStream;
2407
+ const Int32 askMode = testMode ?
2408
+ NExtract::NAskMode::kTest :
2409
+ NExtract::NAskMode::kExtract;
2410
+ RINOK(extractCallback->GetStream(index, &realOutStream, askMode))
2411
+
2412
+ if (ref.IsItem() && item.IsDir())
2413
+ {
2414
+ RINOK(extractCallback->PrepareOperation(askMode))
2415
+ RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK))
2416
+ continue;
2417
+ }
2418
+ if (!testMode && !realOutStream)
2419
+ continue;
2420
+
2421
+ RINOK(extractCallback->PrepareOperation(askMode))
2422
+
2423
+ UInt64 pos = 0;
2424
+ opRes = NExtract::NOperationResult::kDataError;
2425
+ const CFork *fork = NULL;
2426
+
2427
+ if (ref.AttrIndex >= 0)
2428
+ {
2429
+ const CAttr &attr = Attrs[ref.AttrIndex];
2430
+ if (attr.Fork_defined && attr.Data.Size() == 0)
2431
+ fork = &attr.Fork;
2432
+ else
2433
+ {
2434
+ opRes = NExtract::NOperationResult::kOK;
2435
+ if (realOutStream)
2436
+ {
2437
+ RINOK(WriteStream(realOutStream,
2438
+ // AttrBuf + attr.Pos, attr.Size
2439
+ attr.Data, attr.Data.Size()
2440
+ ))
2441
+ }
2442
+ }
2443
+ }
2444
+ else if (ref.IsResource())
2445
+ fork = &item.ResourceFork;
2446
+ else if (item.CompressHeader.IsSupported)
2447
+ {
2448
+ CMyComPtr<ISequentialInStream> inStreamFork;
2449
+ UInt64 forkSize = 0;
2450
+ const CByteBuffer *decmpfs_Data = NULL;
2451
+
2452
+ if (item.CompressHeader.IsMethod_Resource())
2453
+ {
2454
+ const CFork &resourceFork = item.ResourceFork;
2455
+ forkSize = resourceFork.Size;
2456
+ GetForkStream(resourceFork, &inStreamFork);
2457
+ }
2458
+ else
2459
+ {
2460
+ const CAttr &attr = Attrs[item.decmpfs_AttrIndex];
2461
+ decmpfs_Data = &attr.Data;
2462
+ }
2463
+
2464
+ if (inStreamFork || decmpfs_Data)
2465
+ {
2466
+ const HRESULT hres = decoder.Extract(
2467
+ inStreamFork, realOutStream,
2468
+ forkSize,
2469
+ item.CompressHeader,
2470
+ decmpfs_Data,
2471
+ currentTotalSize, extractCallback,
2472
+ opRes);
2473
+ if (hres != S_FALSE && hres != S_OK)
2474
+ return hres;
2475
+ }
2476
+ }
2477
+ else if (item.CompressHeader.IsCorrect)
2478
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
2479
+ else
2480
+ fork = &item.DataFork;
2481
+
2482
+ if (fork)
2483
+ {
2484
+ if (fork->IsOk(Header.BlockSizeLog))
2485
+ {
2486
+ opRes = NExtract::NOperationResult::kOK;
2487
+ unsigned extentIndex;
2488
+ for (extentIndex = 0; extentIndex < fork->Extents.Size(); extentIndex++)
2489
+ {
2490
+ if (opRes != NExtract::NOperationResult::kOK)
2491
+ break;
2492
+ if (fork->Size == pos)
2493
+ break;
2494
+ const CExtent &e = fork->Extents[extentIndex];
2495
+ RINOK(InStream_SeekSet(_stream, SpecOffset + ((UInt64)e.Pos << Header.BlockSizeLog)))
2496
+ UInt64 extentRem = (UInt64)e.NumBlocks << Header.BlockSizeLog;
2497
+ while (extentRem != 0)
2498
+ {
2499
+ const UInt64 rem = fork->Size - pos;
2500
+ if (rem == 0)
2501
+ {
2502
+ // Here we check that there are no extra (empty) blocks in last extent.
2503
+ if (extentRem >= ((UInt64)1 << Header.BlockSizeLog))
2504
+ opRes = NExtract::NOperationResult::kDataError;
2505
+ break;
2506
+ }
2507
+ size_t cur = kBufSize;
2508
+ if (cur > rem)
2509
+ cur = (size_t)rem;
2510
+ if (cur > extentRem)
2511
+ cur = (size_t)extentRem;
2512
+ RINOK(ReadStream(_stream, buf, &cur))
2513
+ if (cur == 0)
2514
+ {
2515
+ opRes = NExtract::NOperationResult::kDataError;
2516
+ break;
2517
+ }
2518
+ if (realOutStream)
2519
+ {
2520
+ RINOK(WriteStream(realOutStream, buf, cur))
2521
+ }
2522
+ pos += cur;
2523
+ extentRem -= cur;
2524
+ const UInt64 processed = currentTotalSize + pos;
2525
+ RINOK(extractCallback->SetCompleted(&processed))
2526
+ }
2527
+ }
2528
+ if (extentIndex != fork->Extents.Size() || fork->Size != pos)
2529
+ opRes = NExtract::NOperationResult::kDataError;
2530
+ }
2531
+ }
2532
+ }
2533
+ RINOK(extractCallback->SetOperationResult(opRes))
2534
+ }
2535
+ return S_OK;
2536
+ COM_TRY_END
2537
+ }
2538
+
2539
+ Z7_COM7F_IMF(CHandler::GetNumberOfItems(UInt32 *numItems))
2540
+ {
2541
+ *numItems = Refs.Size();
2542
+ return S_OK;
2543
+ }
2544
+
2545
+ HRESULT CHandler::GetForkStream(const CFork &fork, ISequentialInStream **stream)
2546
+ {
2547
+ *stream = NULL;
2548
+
2549
+ if (!fork.IsOk(Header.BlockSizeLog))
2550
+ return S_FALSE;
2551
+
2552
+ CMyComPtr2<ISequentialInStream, CExtentsStream> extentStream;
2553
+ extentStream.Create_if_Empty();
2554
+
2555
+ UInt64 rem = fork.Size;
2556
+ UInt64 virt = 0;
2557
+
2558
+ FOR_VECTOR (i, fork.Extents)
2559
+ {
2560
+ const CExtent &e = fork.Extents[i];
2561
+ if (e.NumBlocks == 0)
2562
+ continue;
2563
+ UInt64 cur = ((UInt64)e.NumBlocks << Header.BlockSizeLog);
2564
+ if (cur > rem)
2565
+ {
2566
+ cur = rem;
2567
+ if (i != fork.Extents.Size() - 1)
2568
+ return S_FALSE;
2569
+ }
2570
+ CSeekExtent se;
2571
+ se.Phy = SpecOffset + ((UInt64)e.Pos << Header.BlockSizeLog);
2572
+ se.Virt = virt;
2573
+ virt += cur;
2574
+ rem -= cur;
2575
+ extentStream->Extents.Add(se);
2576
+ }
2577
+
2578
+ if (rem != 0)
2579
+ return S_FALSE;
2580
+
2581
+ CSeekExtent se;
2582
+ se.Phy = 0; // = SpecOffset ?
2583
+ se.Virt = virt;
2584
+ extentStream->Extents.Add(se);
2585
+ extentStream->Stream = _stream;
2586
+ extentStream->Init();
2587
+ *stream = extentStream.Detach();
2588
+ return S_OK;
2589
+ }
2590
+
2591
+ Z7_COM7F_IMF(CHandler::GetStream(UInt32 index, ISequentialInStream **stream))
2592
+ {
2593
+ *stream = NULL;
2594
+
2595
+ const CRef &ref = Refs[index];
2596
+ const CFork *fork = NULL;
2597
+ if (ref.AttrIndex >= 0)
2598
+ {
2599
+ const CAttr &attr = Attrs[ref.AttrIndex];
2600
+ if (!attr.Fork_defined || attr.Data.Size() != 0)
2601
+ return S_FALSE;
2602
+ fork = &attr.Fork;
2603
+ }
2604
+ else
2605
+ {
2606
+ const CItem &item = Items[ref.ItemIndex];
2607
+ if (ref.IsResource())
2608
+ fork = &item.ResourceFork;
2609
+ else if (item.IsDir())
2610
+ return S_FALSE;
2611
+ else if (item.CompressHeader.IsCorrect)
2612
+ return S_FALSE;
2613
+ else
2614
+ fork = &item.DataFork;
2615
+ }
2616
+ return GetForkStream(*fork, stream);
2617
+ }
2618
+
2619
+ static const Byte k_Signature[] = {
2620
+ 2, 'B', 'D',
2621
+ 4, 'H', '+', 0, 4,
2622
+ 4, 'H', 'X', 0, 5 };
2623
+
2624
+ REGISTER_ARC_I(
2625
+ "HFS", "hfs hfsx", NULL, 0xE3,
2626
+ k_Signature,
2627
+ kHeaderPadSize,
2628
+ NArcInfoFlags::kMultiSignature,
2629
+ IsArc_HFS)
2630
+
2631
+ }}