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,3087 @@
1
+ // 7zUpdate.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ #include "../../../../C/CpuArch.h"
6
+
7
+ #include "../../../Common/MyLinux.h"
8
+ #include "../../../Common/StringToInt.h"
9
+ #include "../../../Common/Wildcard.h"
10
+
11
+ #include "../../Common/CreateCoder.h"
12
+ #include "../../Common/LimitedStreams.h"
13
+ #include "../../Common/ProgressUtils.h"
14
+
15
+ #include "../../Compress/CopyCoder.h"
16
+
17
+ #include "../Common/ItemNameUtils.h"
18
+
19
+ #include "7zDecode.h"
20
+ #include "7zEncode.h"
21
+ #include "7zFolderInStream.h"
22
+ #include "7zHandler.h"
23
+ #include "7zOut.h"
24
+ #include "7zUpdate.h"
25
+
26
+ namespace NArchive {
27
+ namespace N7z {
28
+
29
+ #define k_X86 k_BCJ
30
+
31
+ struct CFilterMode
32
+ {
33
+ UInt32 Id;
34
+ UInt32 Delta; // required File Size alignment, if Id is not k_Delta.
35
+ // (Delta == 0) means unknown alignment
36
+ UInt32 Offset; // for k_ARM64 / k_RISCV
37
+ // UInt32 AlignSizeOpt; // for k_ARM64
38
+
39
+ void ClearFilterMode()
40
+ {
41
+ Id = 0;
42
+ Delta = 0;
43
+ Offset = 0;
44
+ // AlignSizeOpt = 0;
45
+ }
46
+
47
+ // it sets Delta as Align value, if Id is exe filter
48
+ // in another cases it sets Delta = 0, that
49
+ void SetDelta()
50
+ {
51
+ if (Id == k_IA64)
52
+ Delta = 16;
53
+ else if (Id == k_ARM64 || Id == k_ARM || Id == k_PPC || Id == k_SPARC)
54
+ Delta = 4;
55
+ else if (Id == k_ARMT || Id == k_RISCV)
56
+ Delta = 2;
57
+ else if (Id == k_BCJ || Id == k_BCJ2)
58
+ Delta = 1; // do we need it?
59
+ else
60
+ Delta = 0;
61
+ }
62
+ };
63
+
64
+
65
+ /* ---------- PE ---------- */
66
+
67
+ #define MZ_SIG 0x5A4D
68
+
69
+ #define PE_SIG 0x00004550
70
+ #define PE_OptHeader_Magic_32 0x10B
71
+ #define PE_OptHeader_Magic_64 0x20B
72
+ // #define PE_SectHeaderSize 40
73
+ // #define PE_SECT_EXECUTE 0x20000000
74
+
75
+ static int Parse_EXE(const Byte *buf, size_t size, CFilterMode *filterMode)
76
+ {
77
+ if (size < 512 || GetUi16(buf) != MZ_SIG)
78
+ return 0;
79
+
80
+ const Byte *p;
81
+ UInt32 peOffset, optHeaderSize, filterId;
82
+
83
+ peOffset = GetUi32(buf + 0x3C);
84
+ if (peOffset >= 0x1000 || peOffset + 512 > size || (peOffset & 7) != 0)
85
+ return 0;
86
+ p = buf + peOffset;
87
+ if (GetUi32(p) != PE_SIG)
88
+ return 0;
89
+ p += 4;
90
+
91
+ const unsigned machine = GetUi16(p);
92
+
93
+ switch (machine)
94
+ {
95
+ case 0x014C:
96
+ case 0x8664: filterId = k_X86; break;
97
+ case 0xAA64: filterId = k_ARM64; break;
98
+
99
+ /*
100
+ IMAGE_FILE_MACHINE_ARM 0x01C0 // ARM LE
101
+ IMAGE_FILE_MACHINE_THUMB 0x01C2 // ARM Thumb / Thumb-2 LE
102
+ IMAGE_FILE_MACHINE_ARMNT 0x01C4 // ARM Thumb-2, LE
103
+ Note: We use ARM filter for 0x01C2. (WinCE 5 - 0x01C2) files mostly contain ARM code (not Thumb/Thumb-2).
104
+ */
105
+
106
+ case 0x01C0: // WinCE old
107
+ case 0x01C2: filterId = k_ARM; break; // WinCE new
108
+ case 0x01C4: filterId = k_ARMT; break; // WinRT
109
+
110
+ case 0x5032: // RISCV32
111
+ case 0x5064: // RISCV64
112
+ // case 0x5128: // RISCV128
113
+ filterId = k_RISCV; break;
114
+
115
+ case 0x0200: filterId = k_IA64; break;
116
+ default: return 0;
117
+ }
118
+
119
+ const UInt32 numSections = GetUi16(p + 2);
120
+ optHeaderSize = GetUi16(p + 16);
121
+ if (optHeaderSize > (1 << 10))
122
+ return 0;
123
+
124
+ p += 20; /* headerSize */
125
+
126
+ switch (GetUi16(p))
127
+ {
128
+ case PE_OptHeader_Magic_32:
129
+ case PE_OptHeader_Magic_64:
130
+ break;
131
+ default:
132
+ return 0;
133
+ }
134
+
135
+ // Windows exe file sizes are not aligned for 4 KiB.
136
+ // So we can't use (CFilterMode::Offset != 0) in solid archives.
137
+ // So we just don't set Offset here.
138
+ #define NUM_SCAN_SECTIONS_MAX (1 << 6)
139
+ // #define EXE_SECTION_OFFSET_MAX (1 << 27)
140
+ // #define EXE_SECTION_SIZE_MIN (1 << 8)
141
+ // #define EXE_SECTION_SIZE_MAX (1 << 27)
142
+ #define PE_SectHeaderSize 40
143
+ // #define PE_SECT_EXECUTE 0x20000000
144
+
145
+ /*
146
+ if (numSections > NUM_SCAN_SECTIONS_MAX)
147
+ return 0;
148
+ */
149
+
150
+ if ((size_t)(p - buf) + optHeaderSize <= size)
151
+ {
152
+ p += optHeaderSize;
153
+ /*
154
+ // UInt32 numExeSections = 0;
155
+ // bool execute_finded = false;
156
+ // UInt32 sect_va = 0;
157
+ // UInt32 sect_size = 0;
158
+ // UInt32 sect_offset = 0;
159
+ */
160
+ if (numSections <= NUM_SCAN_SECTIONS_MAX)
161
+ if (machine == 0x8664)
162
+ for (UInt32 i = 0; i < numSections
163
+ ; i++, p += PE_SectHeaderSize)
164
+ {
165
+ // UInt32 characts, rawSize, offset;
166
+ if ((UInt32)(p - buf) + PE_SectHeaderSize > size)
167
+ {
168
+ // return 0;
169
+ break;
170
+ }
171
+ if (memcmp(p, ".a64xrm", 8) == 0)
172
+ {
173
+ // ARM64EC
174
+ filterId = k_ARM64;
175
+ break;
176
+ }
177
+ /*
178
+ rawSize = GetUi32(p + 16);
179
+ offset = GetUi32(p + 20);
180
+ characts = GetUi32(p + 36);
181
+ if (rawSize >= EXE_SECTION_SIZE_MIN &&
182
+ rawSize <= EXE_SECTION_SIZE_MAX &&
183
+ offset <= EXE_SECTION_OFFSET_MAX &&
184
+ // offset < limit &&
185
+ offset > 0)
186
+ {
187
+ if ((characts & PE_SECT_EXECUTE) != 0)
188
+ {
189
+ // execute_finded = true;
190
+ // sect_va = GetUi32(p + 12);
191
+ // sect_size = rawSize;
192
+ // sect_offset = offset;
193
+ break;
194
+ }
195
+ }
196
+ */
197
+ }
198
+ }
199
+
200
+ /*
201
+ filterMode->Offset = 0;
202
+ if (filterId == k_ARM64)
203
+ {
204
+ // filterMode->AlignSizeOpt = (1 << 12);
205
+ // const UInt32 offs = (sect_va - sect_offset) & 0xFFF;
206
+ // if (offs != 0)
207
+ // filterMode->Offset = offs; // change it
208
+ }
209
+ */
210
+ filterMode->Id = filterId;
211
+ return 1;
212
+ }
213
+
214
+
215
+ /*
216
+ Filters don't improve the compression ratio for relocatable object files (".o").
217
+ But we can get compression ratio gain, if we compress object
218
+ files and executables in same solid block.
219
+ So we use filters for relocatable object files (".o"):
220
+ */
221
+ // #define Z7_7Z_CREATE_ARC_DISABLE_FILTER_FOR_OBJ
222
+
223
+ /* ---------- ELF ---------- */
224
+
225
+ #define ELF_SIG 0x464C457F
226
+
227
+ #define ELF_CLASS_32 1
228
+ #define ELF_CLASS_64 2
229
+
230
+ #define ELF_DATA_2LSB 1
231
+ #define ELF_DATA_2MSB 2
232
+
233
+ static UInt16 Get16(const Byte *p, BoolInt be) { if (be) return (UInt16)GetBe16(p); return (UInt16)GetUi16(p); }
234
+ static UInt32 Get32(const Byte *p, BoolInt be) { if (be) return GetBe32(p); return GetUi32(p); }
235
+ // static UInt64 Get64(const Byte *p, BoolInt be) { if (be) return GetBe64(p); return GetUi64(p); }
236
+
237
+ static int Parse_ELF(const Byte *buf, size_t size, CFilterMode *filterMode)
238
+ {
239
+ BoolInt /* is32, */ be;
240
+ UInt32 filterId;
241
+
242
+ if (size < 512 || buf[6] != 1) /* ver */
243
+ return 0;
244
+
245
+ if (GetUi32(buf) != ELF_SIG)
246
+ return 0;
247
+
248
+ switch (buf[4])
249
+ {
250
+ case ELF_CLASS_32: /* is32 = True; */ break;
251
+ case ELF_CLASS_64: /* is32 = False; */ break;
252
+ default: return 0;
253
+ }
254
+
255
+ switch (buf[5])
256
+ {
257
+ case ELF_DATA_2LSB: be = False; break;
258
+ case ELF_DATA_2MSB: be = True; break;
259
+ default: return 0;
260
+ }
261
+
262
+ #ifdef Z7_7Z_CREATE_ARC_DISABLE_FILTER_FOR_OBJ
263
+ #define ELF_ET_REL 1
264
+ if (Get16(buf + 0x10, be) == ELF_ET_REL)
265
+ return 0;
266
+ #endif
267
+
268
+ switch (Get16(buf + 0x12, be))
269
+ {
270
+ case 3:
271
+ case 6:
272
+ case 62: filterId = k_X86; break;
273
+ case 2:
274
+ case 18:
275
+ case 43: filterId = k_SPARC; break;
276
+ case 20:
277
+ case 21: if (!be) return 0; filterId = k_PPC; break;
278
+ case 40: if (be) return 0; filterId = k_ARM; break;
279
+ case 183: if (be) return 0; filterId = k_ARM64; break;
280
+ case 243: if (be) return 0; filterId = k_RISCV; break;
281
+
282
+ /* Some IA-64 ELF executables have size that is not aligned for 16 bytes.
283
+ So we don't use IA-64 filter for IA-64 ELF */
284
+ // case 50: if ( be) return 0; filterId = k_IA64; break;
285
+
286
+ default: return 0;
287
+ }
288
+
289
+ filterMode->Id = filterId;
290
+ return 1;
291
+ }
292
+
293
+
294
+
295
+ /* ---------- Mach-O ---------- */
296
+
297
+ #define MACH_SIG_BE_32 0xCEFAEDFE
298
+ #define MACH_SIG_BE_64 0xCFFAEDFE
299
+ #define MACH_SIG_LE_32 0xFEEDFACE
300
+ #define MACH_SIG_LE_64 0xFEEDFACF
301
+
302
+ #define MACH_ARCH_ABI64 (1 << 24)
303
+ #define MACH_MACHINE_386 7
304
+ #define MACH_MACHINE_ARM 12
305
+ #define MACH_MACHINE_SPARC 14
306
+ #define MACH_MACHINE_PPC 18
307
+ #define MACH_MACHINE_PPC64 (MACH_ARCH_ABI64 | MACH_MACHINE_PPC)
308
+ #define MACH_MACHINE_AMD64 (MACH_ARCH_ABI64 | MACH_MACHINE_386)
309
+ #define MACH_MACHINE_ARM64 (MACH_ARCH_ABI64 | MACH_MACHINE_ARM)
310
+
311
+ static unsigned Parse_MACH(const Byte *buf, size_t size, CFilterMode *filterMode)
312
+ {
313
+ UInt32 filterId, numCommands, commandsSize;
314
+
315
+ if (size < 512)
316
+ return 0;
317
+
318
+ BoolInt /* mode64, */ be;
319
+ switch (GetUi32(buf))
320
+ {
321
+ case MACH_SIG_BE_32: /* mode64 = False; */ be = True; break;
322
+ case MACH_SIG_BE_64: /* mode64 = True; */ be = True; break;
323
+ case MACH_SIG_LE_32: /* mode64 = False; */ be = False; break;
324
+ case MACH_SIG_LE_64: /* mode64 = True; */ be = False; break;
325
+ default: return 0;
326
+ }
327
+
328
+ #ifdef Z7_7Z_CREATE_ARC_DISABLE_FILTER_FOR_OBJ
329
+ #define MACH_TYPE_OBJECT 1
330
+ if (Get32(buf + 0xC, be) == MACH_TYPE_OBJECT)
331
+ return 0;
332
+ #endif
333
+
334
+ switch (Get32(buf + 4, be))
335
+ {
336
+ case MACH_MACHINE_386:
337
+ case MACH_MACHINE_AMD64: filterId = k_X86; break;
338
+ case MACH_MACHINE_ARM: if ( be) return 0; filterId = k_ARM; break;
339
+ case MACH_MACHINE_SPARC: if (!be) return 0; filterId = k_SPARC; break;
340
+ case MACH_MACHINE_PPC:
341
+ case MACH_MACHINE_PPC64: if (!be) return 0; filterId = k_PPC; break;
342
+ case MACH_MACHINE_ARM64: if ( be) return 0; filterId = k_ARM64; break;
343
+ default: return 0;
344
+ }
345
+
346
+ numCommands = Get32(buf + 0x10, be);
347
+ commandsSize = Get32(buf + 0x14, be);
348
+
349
+ if (commandsSize > (1 << 24) || numCommands > (1 << 18))
350
+ return 0;
351
+
352
+ filterMode->Id = filterId;
353
+ return 1;
354
+ }
355
+
356
+
357
+ /* ---------- WAV ---------- */
358
+
359
+ #define WAV_SUBCHUNK_fmt 0x20746D66
360
+ #define WAV_SUBCHUNK_data 0x61746164
361
+
362
+ #define RIFF_SIG 0x46464952
363
+
364
+ static BoolInt Parse_WAV(const Byte *buf, size_t size, CFilterMode *filterMode)
365
+ {
366
+ UInt32 subChunkSize, pos;
367
+ if (size < 0x2C)
368
+ return False;
369
+
370
+ if (GetUi32(buf + 0) != RIFF_SIG ||
371
+ GetUi32(buf + 8) != 0x45564157 || // WAVE
372
+ GetUi32(buf + 0xC) != WAV_SUBCHUNK_fmt)
373
+ return False;
374
+ subChunkSize = GetUi32(buf + 0x10);
375
+ /* [0x14 = format] = 1 (PCM) */
376
+ if (subChunkSize < 0x10 || subChunkSize > 0x12 || GetUi16(buf + 0x14) != 1)
377
+ return False;
378
+
379
+ const unsigned numChannels = GetUi16(buf + 0x16);
380
+ const unsigned bitsPerSample = GetUi16(buf + 0x22);
381
+ if ((bitsPerSample & 0x7) != 0)
382
+ return False;
383
+ const UInt32 delta = (UInt32)numChannels * (bitsPerSample >> 3);
384
+ if (delta == 0 || delta > 256)
385
+ return False;
386
+
387
+ pos = 0x14 + subChunkSize;
388
+
389
+ const int kNumSubChunksTests = 10;
390
+ // Do we need to scan more than 3 sub-chunks?
391
+ for (int i = 0; i < kNumSubChunksTests; i++)
392
+ {
393
+ if (pos + 8 > size)
394
+ return False;
395
+ subChunkSize = GetUi32(buf + pos + 4);
396
+ if (GetUi32(buf + pos) == WAV_SUBCHUNK_data)
397
+ {
398
+ filterMode->Id = k_Delta;
399
+ filterMode->Delta = delta;
400
+ return True;
401
+ }
402
+ if (subChunkSize > (1 << 16))
403
+ return False;
404
+ pos += subChunkSize + 8;
405
+ }
406
+ return False;
407
+ }
408
+
409
+
410
+ /*
411
+ filterMode->Delta will be set as:
412
+ = delta value : [1, 256] : for k_Delta
413
+ = 0 for another filters (branch filters)
414
+ */
415
+ static BoolInt ParseFile(const Byte *buf, size_t size, CFilterMode *filterMode)
416
+ {
417
+ filterMode->ClearFilterMode();
418
+
419
+ if (Parse_EXE(buf, size, filterMode)) return True;
420
+ if (Parse_ELF(buf, size, filterMode)) return True;
421
+ if (Parse_MACH(buf, size, filterMode)) return True;
422
+ return Parse_WAV(buf, size, filterMode);
423
+ }
424
+
425
+
426
+
427
+
428
+ struct CFilterMode2: public CFilterMode
429
+ {
430
+ bool Encrypted;
431
+ unsigned GroupIndex;
432
+
433
+ void Construct()
434
+ {
435
+ ClearFilterMode();
436
+ Encrypted = false;
437
+ }
438
+
439
+ int Compare(const CFilterMode2 &m) const
440
+ {
441
+ if (!Encrypted)
442
+ {
443
+ if (m.Encrypted)
444
+ return -1;
445
+ }
446
+ else if (!m.Encrypted)
447
+ return 1;
448
+
449
+ const UInt32 id1 = Id;
450
+ const UInt32 id2 = m.Id;
451
+ /*
452
+ // we can change the order to place k_ARM64 files close to another exe files
453
+ if (id1 <= k_SPARC &&
454
+ id2 <= k_SPARC)
455
+ {
456
+ #define k_ARM64_FOR_SORT 0x3030901
457
+ if (id1 == k_ARM64) id1 = k_ARM64_FOR_SORT;
458
+ if (id2 == k_ARM64) id2 = k_ARM64_FOR_SORT;
459
+ }
460
+ */
461
+ if (id1 < id2) return -1;
462
+ if (id1 > id2) return 1;
463
+
464
+ if (Delta < m.Delta) return -1;
465
+ if (Delta > m.Delta) return 1;
466
+
467
+ if (Offset < m.Offset) return -1;
468
+ if (Offset > m.Offset) return 1;
469
+
470
+ /* we don't go here, because GetGroup()
471
+ and operator ==(const CFilterMode2 &m)
472
+ add only unique CFilterMode2:: { Id, Delta, Offset, Encrypted } items.
473
+ */
474
+ /*
475
+ if (GroupIndex < m.GroupIndex) return -1;
476
+ if (GroupIndex > m.GroupIndex) return 1;
477
+ */
478
+ return 0;
479
+ }
480
+
481
+ bool operator ==(const CFilterMode2 &m) const
482
+ {
483
+ return Id == m.Id
484
+ && Delta == m.Delta
485
+ && Offset == m.Offset
486
+ && Encrypted == m.Encrypted;
487
+ }
488
+ };
489
+
490
+ static unsigned GetGroup(CRecordVector<CFilterMode2> &filters, const CFilterMode2 &m)
491
+ {
492
+ unsigned i;
493
+ for (i = 0; i < filters.Size(); i++)
494
+ {
495
+ const CFilterMode2 &m2 = filters[i];
496
+ if (m == m2)
497
+ return i;
498
+ /*
499
+ if (m.Encrypted != m2.Encrypted)
500
+ {
501
+ if (!m.Encrypted)
502
+ break;
503
+ continue;
504
+ }
505
+
506
+ if (m.Id < m2.Id) break;
507
+ if (m.Id != m2.Id) continue;
508
+
509
+ if (m.Delta < m2.Delta) break;
510
+ if (m.Delta != m2.Delta) continue;
511
+ */
512
+ }
513
+ // filters.Insert(i, m);
514
+ // return i;
515
+ return filters.Add(m);
516
+ }
517
+
518
+ static inline bool Is86Filter(CMethodId m)
519
+ {
520
+ return (m == k_BCJ || m == k_BCJ2);
521
+ }
522
+
523
+ static inline bool IsExeFilter(CMethodId m)
524
+ {
525
+ switch (m)
526
+ {
527
+ case k_ARM64:
528
+ case k_RISCV:
529
+ case k_BCJ:
530
+ case k_BCJ2:
531
+ case k_ARM:
532
+ case k_ARMT:
533
+ case k_PPC:
534
+ case k_SPARC:
535
+ case k_IA64:
536
+ return true;
537
+ default: break;
538
+ }
539
+ return false;
540
+ }
541
+
542
+ static unsigned Get_FilterGroup_for_Folder(
543
+ CRecordVector<CFilterMode2> &filters, const CFolderEx &f, bool extractFilter)
544
+ {
545
+ CFilterMode2 m;
546
+ m.Construct();
547
+ // m.Id = 0;
548
+ // m.Delta = 0;
549
+ // m.Offset = 0;
550
+ m.Encrypted = f.IsEncrypted();
551
+
552
+ if (extractFilter)
553
+ {
554
+ const CCoderInfo &coder = f.Coders[f.UnpackCoder];
555
+
556
+ if (coder.MethodID == k_Delta)
557
+ {
558
+ if (coder.Props.Size() == 1)
559
+ {
560
+ m.Delta = (unsigned)coder.Props[0] + 1;
561
+ m.Id = k_Delta;
562
+ }
563
+ }
564
+ else if (IsExeFilter(coder.MethodID))
565
+ {
566
+ m.Id = (UInt32)coder.MethodID;
567
+ if (m.Id == k_BCJ2)
568
+ m.Id = k_BCJ;
569
+ m.SetDelta();
570
+ if (m.Id == k_ARM64 ||
571
+ m.Id == k_RISCV)
572
+ if (coder.Props.Size() == 4)
573
+ m.Offset = GetUi32(coder.Props);
574
+ }
575
+ }
576
+
577
+ return GetGroup(filters, m);
578
+ }
579
+
580
+
581
+
582
+
583
+ static HRESULT WriteRange(IInStream *inStream, ISequentialOutStream *outStream,
584
+ UInt64 position, UInt64 size, ICompressProgressInfo *progress)
585
+ {
586
+ RINOK(InStream_SeekSet(inStream, position))
587
+ CMyComPtr2_Create<ISequentialInStream, CLimitedSequentialInStream> streamSpec;
588
+ streamSpec->SetStream(inStream);
589
+ streamSpec->Init(size);
590
+ CMyComPtr2_Create<ICompressCoder, NCompress::CCopyCoder> copyCoder;
591
+ RINOK(copyCoder.Interface()->Code(streamSpec, outStream, NULL, NULL, progress))
592
+ return (copyCoder->TotalSize == size ? S_OK : E_FAIL);
593
+ }
594
+
595
+ /*
596
+ unsigned CUpdateItem::GetExtensionPos() const
597
+ {
598
+ int slashPos = Name.ReverseFind_PathSepar();
599
+ int dotPos = Name.ReverseFind_Dot();
600
+ if (dotPos <= slashPos)
601
+ return Name.Len();
602
+ return dotPos + 1;
603
+ }
604
+
605
+ UString CUpdateItem::GetExtension() const
606
+ {
607
+ return Name.Ptr(GetExtensionPos());
608
+ }
609
+ */
610
+
611
+ #define RINOZ(x) { const int _t_ = (x); if (_t_ != 0) return _t_; }
612
+
613
+ #define RINOZ_COMP(a, b) RINOZ(MyCompare(a, b))
614
+
615
+ /*
616
+ static int CompareBuffers(const CByteBuffer &a1, const CByteBuffer &a2)
617
+ {
618
+ size_t c1 = a1.GetCapacity();
619
+ size_t c2 = a2.GetCapacity();
620
+ RINOZ_COMP(c1, c2);
621
+ for (size_t i = 0; i < c1; i++)
622
+ RINOZ_COMP(a1[i], a2[i]);
623
+ return 0;
624
+ }
625
+
626
+ static int CompareCoders(const CCoderInfo &c1, const CCoderInfo &c2)
627
+ {
628
+ RINOZ_COMP(c1.NumInStreams, c2.NumInStreams);
629
+ RINOZ_COMP(c1.NumOutStreams, c2.NumOutStreams);
630
+ RINOZ_COMP(c1.MethodID, c2.MethodID);
631
+ return CompareBuffers(c1.Props, c2.Props);
632
+ }
633
+
634
+ static int CompareBonds(const CBond &b1, const CBond &b2)
635
+ {
636
+ RINOZ_COMP(b1.InIndex, b2.InIndex);
637
+ return MyCompare(b1.OutIndex, b2.OutIndex);
638
+ }
639
+
640
+ static int CompareFolders(const CFolder &f1, const CFolder &f2)
641
+ {
642
+ int s1 = f1.Coders.Size();
643
+ int s2 = f2.Coders.Size();
644
+ RINOZ_COMP(s1, s2);
645
+ int i;
646
+ for (i = 0; i < s1; i++)
647
+ RINOZ(CompareCoders(f1.Coders[i], f2.Coders[i]));
648
+ s1 = f1.Bonds.Size();
649
+ s2 = f2.Bonds.Size();
650
+ RINOZ_COMP(s1, s2);
651
+ for (i = 0; i < s1; i++)
652
+ RINOZ(CompareBonds(f1.Bonds[i], f2.Bonds[i]));
653
+ return 0;
654
+ }
655
+ */
656
+
657
+ /*
658
+ static int CompareFiles(const CFileItem &f1, const CFileItem &f2)
659
+ {
660
+ return CompareFileNames(f1.Name, f2.Name);
661
+ }
662
+ */
663
+
664
+ struct CFolderRepack
665
+ {
666
+ unsigned FolderIndex;
667
+ CNum NumCopyFiles;
668
+ };
669
+
670
+ /*
671
+ static int CompareFolderRepacks(const CFolderRepack *p1, const CFolderRepack *p2, void *)
672
+ {
673
+ int i1 = p1->FolderIndex;
674
+ int i2 = p2->FolderIndex;
675
+ // In that version we don't want to parse folders here, so we don't compare folders
676
+ // probably it must be improved in future
677
+ // const CDbEx &db = *(const CDbEx *)param;
678
+ // RINOZ(CompareFolders(
679
+ // db.Folders[i1],
680
+ // db.Folders[i2]));
681
+
682
+ return MyCompare(i1, i2);
683
+
684
+ // RINOZ_COMP(
685
+ // db.NumUnpackStreamsVector[i1],
686
+ // db.NumUnpackStreamsVector[i2]);
687
+ // if (db.NumUnpackStreamsVector[i1] == 0)
688
+ // return 0;
689
+ // return CompareFiles(
690
+ // db.Files[db.FolderStartFileIndex[i1]],
691
+ // db.Files[db.FolderStartFileIndex[i2]]);
692
+ }
693
+ */
694
+
695
+ /*
696
+ we sort empty files and dirs in such order:
697
+ - Dir.NonAnti (name sorted)
698
+ - File.NonAnti (name sorted)
699
+ - File.Anti (name sorted)
700
+ - Dir.Anti (reverse name sorted)
701
+ */
702
+
703
+ static int CompareEmptyItems(const unsigned *p1, const unsigned *p2, void *param)
704
+ {
705
+ const CObjectVector<CUpdateItem> &updateItems = *(const CObjectVector<CUpdateItem> *)param;
706
+ const CUpdateItem &u1 = updateItems[*p1];
707
+ const CUpdateItem &u2 = updateItems[*p2];
708
+ // NonAnti < Anti
709
+ if (u1.IsAnti != u2.IsAnti)
710
+ return (u1.IsAnti ? 1 : -1);
711
+ if (u1.IsDir != u2.IsDir)
712
+ {
713
+ // Dir.NonAnti < File < Dir.Anti
714
+ if (u1.IsDir)
715
+ return (u1.IsAnti ? 1 : -1);
716
+ return (u2.IsAnti ? -1 : 1);
717
+ }
718
+ int n = CompareFileNames(u1.Name, u2.Name);
719
+ return (u1.IsDir && u1.IsAnti) ? -n : n;
720
+ }
721
+
722
+ static const char * const g_Exts =
723
+ " 7z xz lzma ace arc arj bz tbz bz2 tbz2 cab deb gz tgz ha lha lzh lzo lzx pak rar rpm sit zoo"
724
+ " zip jar ear war msi"
725
+ " 3gp avi mov mpeg mpg mpe wmv"
726
+ " aac ape fla flac la mp3 m4a mp4 ofr ogg pac ra rm rka shn swa tta wv wma wav"
727
+ " swf"
728
+ " chm hxi hxs"
729
+ " gif jpeg jpg jp2 png tiff bmp ico psd psp"
730
+ " awg ps eps cgm dxf svg vrml wmf emf ai md"
731
+ " cad dwg pps key sxi"
732
+ " max 3ds"
733
+ " iso bin nrg mdf img pdi tar cpio xpi"
734
+ " vfd vhd vud vmc vsv"
735
+ " vmdk dsk nvram vmem vmsd vmsn vmss vmtm"
736
+ " inl inc idl acf asa"
737
+ " h hpp hxx c cpp cxx m mm go swift"
738
+ " rc java cs rs pas bas vb cls ctl frm dlg def"
739
+ " f77 f f90 f95"
740
+ " asm s"
741
+ " sql manifest dep"
742
+ " mak clw csproj vcproj sln dsp dsw"
743
+ " class"
744
+ " bat cmd bash sh"
745
+ " xml xsd xsl xslt hxk hxc htm html xhtml xht mht mhtml htw asp aspx css cgi jsp shtml"
746
+ " awk sed hta js json php php3 php4 php5 phptml pl pm py pyo rb tcl ts vbs"
747
+ " text txt tex ans asc srt reg ini doc docx mcw dot rtf hlp xls xlr xlt xlw ppt pdf"
748
+ " sxc sxd sxi sxg sxw stc sti stw stm odt ott odg otg odp otp ods ots odf"
749
+ " abw afp cwk lwp wpd wps wpt wrf wri"
750
+ " abf afm bdf fon mgf otf pcf pfa snf ttf"
751
+ " dbf mdb nsf ntf wdb db fdb gdb"
752
+ " exe dll ocx vbx sfx sys tlb awx com obj lib out o so"
753
+ " pdb pch idb ncb opt";
754
+
755
+ static unsigned GetExtIndex(const char *ext)
756
+ {
757
+ unsigned extIndex = 1;
758
+ const char *p = g_Exts;
759
+ for (;;)
760
+ {
761
+ char c = *p++;
762
+ if (c == 0)
763
+ return extIndex;
764
+ if (c == ' ')
765
+ continue;
766
+ unsigned pos = 0;
767
+ for (;;)
768
+ {
769
+ char c2 = ext[pos++];
770
+ if (c2 == 0 && (c == 0 || c == ' '))
771
+ return extIndex;
772
+ if (c != c2)
773
+ break;
774
+ c = *p++;
775
+ }
776
+ extIndex++;
777
+ for (;;)
778
+ {
779
+ if (c == 0)
780
+ return extIndex;
781
+ if (c == ' ')
782
+ break;
783
+ c = *p++;
784
+ }
785
+ }
786
+ }
787
+
788
+ struct CRefItem
789
+ {
790
+ const CUpdateItem *UpdateItem;
791
+ UInt32 Index;
792
+ unsigned ExtensionPos;
793
+ unsigned NamePos;
794
+ unsigned ExtensionIndex;
795
+
796
+ void Construct(UInt32 index, const CUpdateItem &ui, bool sortByType)
797
+ {
798
+ UpdateItem = &ui;
799
+ Index = index;
800
+ ExtensionPos = 0;
801
+ NamePos = 0;
802
+ ExtensionIndex = 0;
803
+
804
+ if (sortByType)
805
+ {
806
+ const int slashPos = ui.Name.ReverseFind_PathSepar();
807
+ NamePos = (unsigned)(slashPos + 1);
808
+ const int dotPos = ui.Name.ReverseFind_Dot();
809
+ if (dotPos <= slashPos)
810
+ ExtensionPos = ui.Name.Len();
811
+ else
812
+ {
813
+ ExtensionPos = (unsigned)(dotPos + 1);
814
+ if (ExtensionPos != ui.Name.Len())
815
+ {
816
+ AString s;
817
+ for (unsigned pos = ExtensionPos;; pos++)
818
+ {
819
+ const wchar_t c = ui.Name[pos];
820
+ if (c >= 0x80)
821
+ break;
822
+ if (c == 0)
823
+ {
824
+ ExtensionIndex = GetExtIndex(s);
825
+ break;
826
+ }
827
+ s.Add_Char((char)MyCharLower_Ascii((char)c));
828
+ }
829
+ }
830
+ }
831
+ }
832
+ }
833
+ };
834
+
835
+ struct CSortParam
836
+ {
837
+ // const CObjectVector<CTreeFolder> *TreeFolders;
838
+ bool SortByType;
839
+ };
840
+
841
+ /*
842
+ we sort files in such order:
843
+ - Dir.NonAnti (name sorted)
844
+ - alt streams
845
+ - Dirs
846
+ - Dir.Anti (reverse name sorted)
847
+ */
848
+
849
+
850
+ static int CompareUpdateItems(const CRefItem *p1, const CRefItem *p2, void *param)
851
+ {
852
+ const CRefItem &a1 = *p1;
853
+ const CRefItem &a2 = *p2;
854
+ const CUpdateItem &u1 = *a1.UpdateItem;
855
+ const CUpdateItem &u2 = *a2.UpdateItem;
856
+
857
+ /*
858
+ if (u1.IsAltStream != u2.IsAltStream)
859
+ return u1.IsAltStream ? 1 : -1;
860
+ */
861
+
862
+ // Actually there are no dirs that time. They were stored in other steps
863
+ // So that code is unused?
864
+ if (u1.IsDir != u2.IsDir)
865
+ return u1.IsDir ? 1 : -1;
866
+ if (u1.IsDir)
867
+ {
868
+ if (u1.IsAnti != u2.IsAnti)
869
+ return (u1.IsAnti ? 1 : -1);
870
+ int n = CompareFileNames(u1.Name, u2.Name);
871
+ return -n;
872
+ }
873
+
874
+ // bool sortByType = *(bool *)param;
875
+ const CSortParam *sortParam = (const CSortParam *)param;
876
+ const bool sortByType = sortParam->SortByType;
877
+ if (sortByType)
878
+ {
879
+ RINOZ_COMP(a1.ExtensionIndex, a2.ExtensionIndex)
880
+ RINOZ(CompareFileNames(u1.Name.Ptr(a1.ExtensionPos), u2.Name.Ptr(a2.ExtensionPos)))
881
+ RINOZ(CompareFileNames(u1.Name.Ptr(a1.NamePos), u2.Name.Ptr(a2.NamePos)))
882
+ if (!u1.MTimeDefined && u2.MTimeDefined) return 1;
883
+ if (u1.MTimeDefined && !u2.MTimeDefined) return -1;
884
+ if (u1.MTimeDefined && u2.MTimeDefined) RINOZ_COMP(u1.MTime, u2.MTime)
885
+ RINOZ_COMP(u1.Size, u2.Size)
886
+ }
887
+ /*
888
+ int par1 = a1.UpdateItem->ParentFolderIndex;
889
+ int par2 = a2.UpdateItem->ParentFolderIndex;
890
+ const CTreeFolder &tf1 = (*sortParam->TreeFolders)[par1];
891
+ const CTreeFolder &tf2 = (*sortParam->TreeFolders)[par2];
892
+
893
+ int b1 = tf1.SortIndex, e1 = tf1.SortIndexEnd;
894
+ int b2 = tf2.SortIndex, e2 = tf2.SortIndexEnd;
895
+ if (b1 < b2)
896
+ {
897
+ if (e1 <= b2)
898
+ return -1;
899
+ // p2 in p1
900
+ int par = par2;
901
+ for (;;)
902
+ {
903
+ const CTreeFolder &tf = (*sortParam->TreeFolders)[par];
904
+ par = tf.Parent;
905
+ if (par == par1)
906
+ {
907
+ RINOZ(CompareFileNames(u1.Name, tf.Name));
908
+ break;
909
+ }
910
+ }
911
+ }
912
+ else if (b2 < b1)
913
+ {
914
+ if (e2 <= b1)
915
+ return 1;
916
+ // p1 in p2
917
+ int par = par1;
918
+ for (;;)
919
+ {
920
+ const CTreeFolder &tf = (*sortParam->TreeFolders)[par];
921
+ par = tf.Parent;
922
+ if (par == par2)
923
+ {
924
+ RINOZ(CompareFileNames(tf.Name, u2.Name));
925
+ break;
926
+ }
927
+ }
928
+ }
929
+ */
930
+ // RINOZ_COMP(a1.UpdateItem->ParentSortIndex, a2.UpdateItem->ParentSortIndex);
931
+ RINOK(CompareFileNames(u1.Name, u2.Name))
932
+ RINOZ_COMP(a1.UpdateItem->IndexInClient, a2.UpdateItem->IndexInClient)
933
+ RINOZ_COMP(a1.UpdateItem->IndexInArchive, a2.UpdateItem->IndexInArchive)
934
+ return 0;
935
+ }
936
+
937
+ struct CSolidGroup
938
+ {
939
+ CRecordVector<UInt32> Indices;
940
+
941
+ CRecordVector<CFolderRepack> folderRefs;
942
+ };
943
+
944
+ static const char * const g_Exe_Exts[] =
945
+ {
946
+ "dll"
947
+ , "exe"
948
+ , "ocx"
949
+ , "sfx"
950
+ , "sys"
951
+ };
952
+
953
+ static const char * const g_ExeUnix_Exts[] =
954
+ {
955
+ "so"
956
+ , "dylib"
957
+ };
958
+
959
+ static bool IsExt_Exe(const wchar_t *ext)
960
+ {
961
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_Exe_Exts); i++)
962
+ if (StringsAreEqualNoCase_Ascii(ext, g_Exe_Exts[i]))
963
+ return true;
964
+ return false;
965
+ }
966
+
967
+ /*
968
+ static bool IsExt_ExeUnix(const wchar_t *ext)
969
+ {
970
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_ExeUnix_Exts); i++)
971
+ if (StringsAreEqualNoCase_Ascii(ext, g_ExeUnix_Exts[i]))
972
+ return true;
973
+ return false;
974
+ }
975
+ */
976
+
977
+ // we try to find "so" extension in such name: libstdc++.so.6.0.29
978
+ static bool IsExt_ExeUnix_NumericAllowed(const UString &path)
979
+ {
980
+ unsigned pos = path.Len();
981
+ unsigned dotPos = pos;
982
+ for (;;)
983
+ {
984
+ if (pos == 0)
985
+ return false;
986
+ const wchar_t c = path[--pos];
987
+ if (IS_PATH_SEPAR(c))
988
+ return false;
989
+ if (c == '.')
990
+ {
991
+ const unsigned num = (dotPos - pos) - 1;
992
+ if (num < 1)
993
+ return false;
994
+ const wchar_t *cur = path.Ptr(pos + 1);
995
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_ExeUnix_Exts); i++)
996
+ {
997
+ const char *ext = g_ExeUnix_Exts[i];
998
+ if (num == MyStringLen(ext))
999
+ if (IsString1PrefixedByString2_NoCase_Ascii(cur, ext))
1000
+ return true;
1001
+ }
1002
+ const wchar_t *end;
1003
+ ConvertStringToUInt32(cur, &end);
1004
+ if ((size_t)(end - cur) != num)
1005
+ return false;
1006
+ dotPos = pos;
1007
+ }
1008
+ }
1009
+ }
1010
+
1011
+
1012
+ struct CAnalysis
1013
+ {
1014
+ CMyComPtr<IArchiveUpdateCallbackFile> Callback;
1015
+ CByteBuffer Buffer;
1016
+
1017
+ bool ParseWav;
1018
+ bool ParseExe;
1019
+ bool ParseExeUnix;
1020
+ bool ParseNoExt;
1021
+ bool ParseAll;
1022
+
1023
+ /*
1024
+ bool Need_ATime;
1025
+ bool ATime_Defined;
1026
+ FILETIME ATime;
1027
+ */
1028
+
1029
+ CAnalysis():
1030
+ ParseWav(false),
1031
+ ParseExe(false),
1032
+ ParseExeUnix(false),
1033
+ ParseNoExt(false),
1034
+ ParseAll(false)
1035
+ /*
1036
+ , Need_ATime(false)
1037
+ , ATime_Defined(false)
1038
+ */
1039
+ {}
1040
+
1041
+ HRESULT GetFilterGroup(UInt32 index, const CUpdateItem &ui, CFilterMode &filterMode);
1042
+ };
1043
+
1044
+ static const size_t kAnalysisBufSize = 1 << 14;
1045
+
1046
+ HRESULT CAnalysis::GetFilterGroup(UInt32 index, const CUpdateItem &ui, CFilterMode &filterMode)
1047
+ {
1048
+ filterMode.Id = 0;
1049
+ filterMode.Delta = 0;
1050
+ filterMode.Offset = 0;
1051
+
1052
+ CFilterMode filterModeTemp = filterMode;
1053
+
1054
+ const int slashPos = ui.Name.ReverseFind_PathSepar();
1055
+ const int dotPos = ui.Name.ReverseFind_Dot();
1056
+
1057
+ // if (dotPos > slashPos)
1058
+ {
1059
+ bool needReadFile = ParseAll;
1060
+ /* if (Callback) is not supported by client,
1061
+ we still try to use file name extension to detect executable file */
1062
+ bool probablyIsSameIsa = false;
1063
+
1064
+ if (!needReadFile || !Callback)
1065
+ {
1066
+ const wchar_t *ext = NULL;
1067
+ if (dotPos > slashPos)
1068
+ ext = ui.Name.Ptr((unsigned)(dotPos + 1));
1069
+ // 7-zip stores posix attributes in high 16 bits and sets (0x8000) flag
1070
+ if (ui.Attrib & 0x8000)
1071
+ {
1072
+ const unsigned st_mode = ui.Attrib >> 16;
1073
+ /* note: executable ".so" can be without execute permission,
1074
+ and symbolic link to such ".so" file is possible */
1075
+ // st_mode = 00111; // for debug
1076
+ /* in Linux we expect such permissions:
1077
+ 0755 : for most executables
1078
+ 0644 : for some ".so" files
1079
+ 0777 : in WSL for all files.
1080
+ We can try to exclude some such 0777 cases from analysis,
1081
+ if there is non-executable extension.
1082
+ */
1083
+
1084
+ if ((st_mode & (
1085
+ MY_LIN_S_IXUSR |
1086
+ MY_LIN_S_IXGRP |
1087
+ MY_LIN_S_IXOTH)) != 0
1088
+ && MY_LIN_S_ISREG(st_mode)
1089
+ && (ui.Size >= (1u << 11)))
1090
+ {
1091
+ #ifndef _WIN32
1092
+ probablyIsSameIsa = true;
1093
+ #endif
1094
+ needReadFile = true;
1095
+ }
1096
+ }
1097
+
1098
+ if (!needReadFile)
1099
+ {
1100
+ if (!ext)
1101
+ needReadFile = ParseNoExt;
1102
+ else
1103
+ {
1104
+ bool isUnixExt = false;
1105
+ if (ParseExeUnix)
1106
+ isUnixExt = IsExt_ExeUnix_NumericAllowed(ui.Name);
1107
+ if (isUnixExt)
1108
+ {
1109
+ needReadFile = true;
1110
+ #ifndef _WIN32
1111
+ probablyIsSameIsa = true;
1112
+ #endif
1113
+ }
1114
+ else if (IsExt_Exe(ext))
1115
+ {
1116
+ needReadFile = ParseExe;
1117
+ #ifdef _WIN32
1118
+ probablyIsSameIsa = true;
1119
+ #endif
1120
+ }
1121
+ else if (StringsAreEqualNoCase_Ascii(ext, "wav"))
1122
+ {
1123
+ if (!needReadFile)
1124
+ needReadFile = ParseWav;
1125
+ }
1126
+ }
1127
+ }
1128
+ }
1129
+
1130
+ if (needReadFile)
1131
+ {
1132
+ BoolInt parseRes = false;
1133
+ if (Callback)
1134
+ {
1135
+ if (Buffer.Size() != kAnalysisBufSize)
1136
+ Buffer.Alloc(kAnalysisBufSize);
1137
+ CMyComPtr<ISequentialInStream> stream;
1138
+ HRESULT result = Callback->GetStream2(index, &stream, NUpdateNotifyOp::kAnalyze);
1139
+ if (result == S_OK && stream)
1140
+ {
1141
+ /*
1142
+ if (Need_ATime)
1143
+ {
1144
+ // access time could be changed in analysis pass
1145
+ CMyComPtr<IStreamGetProps> getProps;
1146
+ stream.QueryInterface(IID_IStreamGetProps, (void **)&getProps);
1147
+ if (getProps)
1148
+ if (getProps->GetProps(NULL, NULL, &ATime, NULL, NULL) == S_OK)
1149
+ ATime_Defined = true;
1150
+ }
1151
+ */
1152
+ size_t size = kAnalysisBufSize;
1153
+ result = ReadStream(stream, Buffer, &size);
1154
+ stream.Release();
1155
+ // RINOK(Callback->SetOperationResult2(index, NUpdate::NOperationResult::kOK));
1156
+ if (result == S_OK)
1157
+ {
1158
+ parseRes = ParseFile(Buffer, size, &filterModeTemp);
1159
+ }
1160
+ }
1161
+ } // Callback
1162
+ else if (probablyIsSameIsa)
1163
+ {
1164
+ #ifdef MY_CPU_X86_OR_AMD64
1165
+ filterModeTemp.Id = k_X86;
1166
+ #endif
1167
+ #ifdef MY_CPU_ARM64
1168
+ filterModeTemp.Id = k_ARM64;
1169
+ #endif
1170
+ #ifdef MY_CPU_RISCV
1171
+ filterModeTemp.Id = k_RISCV;
1172
+ #endif
1173
+ #ifdef MY_CPU_SPARC
1174
+ filterModeTemp.Id = k_SPARC;
1175
+ #endif
1176
+ parseRes = true;
1177
+ }
1178
+
1179
+ if (parseRes
1180
+ && filterModeTemp.Id != k_Delta
1181
+ && filterModeTemp.Delta == 0)
1182
+ {
1183
+ /* ParseFile() sets (filterModeTemp.Delta == 0) for all
1184
+ methods except of k_Delta. */
1185
+ // it's not k_Delta
1186
+ // So we call SetDelta() to set Delta
1187
+ filterModeTemp.SetDelta();
1188
+ if (filterModeTemp.Delta > 1)
1189
+ {
1190
+ /* If file Size is not aligned, then branch filter
1191
+ will not work for next file in solid block.
1192
+ Maybe we should allow filter for non-aligned-size file in non-solid archives ?
1193
+ */
1194
+ if (ui.Size % filterModeTemp.Delta != 0)
1195
+ parseRes = false;
1196
+ // windows exe files are not aligned for 4 KiB.
1197
+ /*
1198
+ else if (filterModeTemp.Id == k_ARM64 && filterModeTemp.Offset != 0)
1199
+ {
1200
+ if (ui.Size % (1 << 12) != 0)
1201
+ {
1202
+ // If Size is not aligned for 4 KiB, then Offset will not work for next file in solid block.
1203
+ // so we place such file in group with (Offset==0).
1204
+ filterModeTemp.Offset = 0;
1205
+ }
1206
+ }
1207
+ */
1208
+ }
1209
+ }
1210
+ if (!parseRes)
1211
+ filterModeTemp.ClearFilterMode();
1212
+ }
1213
+ }
1214
+
1215
+ filterMode = filterModeTemp;
1216
+ return S_OK;
1217
+ }
1218
+
1219
+ static inline void GetMethodFull(UInt64 methodID, UInt32 numStreams, CMethodFull &m)
1220
+ {
1221
+ m.Id = methodID;
1222
+ m.NumStreams = numStreams;
1223
+ }
1224
+
1225
+
1226
+ // we add bond for mode.Methods[0] that is filter
1227
+ static HRESULT AddBondForFilter(CCompressionMethodMode &mode)
1228
+ {
1229
+ for (unsigned c = 1; c < mode.Methods.Size(); c++)
1230
+ {
1231
+ if (!mode.IsThereBond_to_Coder(c))
1232
+ {
1233
+ CBond2 bond;
1234
+ bond.OutCoder = 0;
1235
+ bond.OutStream = 0;
1236
+ bond.InCoder = c;
1237
+ mode.Bonds.Add(bond);
1238
+ return S_OK;
1239
+ }
1240
+ }
1241
+ return E_INVALIDARG;
1242
+ }
1243
+
1244
+ /*
1245
+ static HRESULT AddBondForFilter_if_ThereAreBonds(CCompressionMethodMode &mode)
1246
+ {
1247
+ if (!mode.Bonds.IsEmpty())
1248
+ return AddBondForFilter(mode);
1249
+ return S_OK;
1250
+ }
1251
+ */
1252
+
1253
+ static HRESULT AddBcj2Methods(CCompressionMethodMode &mode)
1254
+ {
1255
+ // mode.Methods[0] must be k_BCJ2 method !
1256
+ // mode.Methods[1] : we expect that there is at least one method after BCJ2
1257
+
1258
+ CMethodFull m;
1259
+ GetMethodFull(k_LZMA, 1, m);
1260
+
1261
+ m.AddProp32(NCoderPropID::kDictionarySize, 1 << 20);
1262
+ m.AddProp32(NCoderPropID::kNumFastBytes, 128);
1263
+ m.AddProp32(NCoderPropID::kNumThreads, 1);
1264
+ m.AddProp32(NCoderPropID::kLitPosBits, 2);
1265
+ m.AddProp32(NCoderPropID::kLitContextBits, 0);
1266
+ // m.AddProp_Ascii(NCoderPropID::kMatchFinder, "BT2");
1267
+
1268
+ const unsigned methodIndex = mode.Methods.Size();
1269
+
1270
+ if (mode.Bonds.IsEmpty())
1271
+ {
1272
+ for (unsigned i = 1; i + 1 < mode.Methods.Size(); i++)
1273
+ {
1274
+ CBond2 bond;
1275
+ bond.OutCoder = i;
1276
+ bond.OutStream = 0;
1277
+ bond.InCoder = i + 1;
1278
+ mode.Bonds.Add(bond);
1279
+ }
1280
+ }
1281
+
1282
+ mode.Methods.Add(m);
1283
+ mode.Methods.Add(m);
1284
+
1285
+ RINOK(AddBondForFilter(mode))
1286
+ CBond2 bond;
1287
+ bond.OutCoder = 0; // index of BCJ2 coder
1288
+ bond.InCoder = methodIndex; bond.OutStream = 1; mode.Bonds.Add(bond);
1289
+ bond.InCoder = methodIndex + 1; bond.OutStream = 2; mode.Bonds.Add(bond);
1290
+ return S_OK;
1291
+ }
1292
+
1293
+
1294
+ static HRESULT MakeExeMethod(CCompressionMethodMode &mode,
1295
+ const CFilterMode &filterMode,
1296
+ const bool bcj2_IsAllowed,
1297
+ const CUIntVector &disabledFilterIDs)
1298
+ {
1299
+ if (mode.Filter_was_Inserted)
1300
+ {
1301
+ // filter was inserted, but bond for that filter was not added still.
1302
+ const CMethodFull &m = mode.Methods[0];
1303
+ if (m.Id == k_BCJ2)
1304
+ return AddBcj2Methods(mode);
1305
+ if (!m.IsSimpleCoder())
1306
+ return E_NOTIMPL;
1307
+ if (mode.Bonds.IsEmpty())
1308
+ return S_OK;
1309
+ return AddBondForFilter(mode);
1310
+ }
1311
+
1312
+ if (filterMode.Id == 0)
1313
+ return S_OK;
1314
+
1315
+ unsigned nextCoder;
1316
+
1317
+ const bool useBcj2 = bcj2_IsAllowed
1318
+ && Is86Filter(filterMode.Id)
1319
+ && disabledFilterIDs.FindInSorted(k_BCJ2) < 0;
1320
+
1321
+ if (!useBcj2 && disabledFilterIDs.FindInSorted(filterMode.Id) >= 0)
1322
+ {
1323
+ // required filter is disabled,
1324
+ // but we still can use information about data alignment.
1325
+ #if 0 // 1 for debug
1326
+ // we can return here, if we want default lzma properties
1327
+ return S_OK;
1328
+ #else
1329
+ // we will try to change lzma/lzma2 properties
1330
+ nextCoder = 0;
1331
+ if (!mode.Bonds.IsEmpty())
1332
+ for (unsigned c = 0;; c++)
1333
+ {
1334
+ if (c == mode.Methods.Size())
1335
+ return S_OK;
1336
+ if (!mode.IsThereBond_to_Coder(c))
1337
+ {
1338
+ nextCoder = c;
1339
+ break;
1340
+ }
1341
+ }
1342
+ #endif
1343
+ }
1344
+ else
1345
+ {
1346
+ // we insert new filter method:
1347
+ CMethodFull &m = mode.Methods.InsertNew(0); // 0 == index of new inserted item
1348
+ {
1349
+ // we move all coder indexes in bonds up for 1 position:
1350
+ FOR_VECTOR (k, mode.Bonds)
1351
+ {
1352
+ CBond2 &bond = mode.Bonds[k];
1353
+ bond.InCoder++;
1354
+ bond.OutCoder++;
1355
+ }
1356
+ }
1357
+ if (useBcj2)
1358
+ {
1359
+ GetMethodFull(k_BCJ2, 4, m);
1360
+ return AddBcj2Methods(mode);
1361
+ }
1362
+
1363
+ GetMethodFull(filterMode.Id, 1, m);
1364
+
1365
+ if (filterMode.Id == k_Delta)
1366
+ m.AddProp32(NCoderPropID::kDefaultProp, filterMode.Delta);
1367
+ else if (filterMode.Id == k_ARM64
1368
+ || filterMode.Id == k_RISCV)
1369
+ {
1370
+ // if (filterMode.Offset != 0)
1371
+ m.AddProp32(
1372
+ NCoderPropID::kDefaultProp,
1373
+ // NCoderPropID::kBranchOffset,
1374
+ filterMode.Offset);
1375
+ }
1376
+
1377
+ nextCoder = 1;
1378
+ if (!mode.Bonds.IsEmpty())
1379
+ {
1380
+ RINOK(AddBondForFilter(mode))
1381
+ nextCoder = mode.Bonds.Back().InCoder;
1382
+ }
1383
+ }
1384
+
1385
+ if (nextCoder >= mode.Methods.Size())
1386
+ {
1387
+ // we don't expect that case, if there was non-filter method.
1388
+ // but we return S_OK to support filter-only case.
1389
+ return S_OK;
1390
+ }
1391
+
1392
+ int alignBits = -1;
1393
+ {
1394
+ const UInt32 delta = filterMode.Delta;
1395
+ if (delta == 0 || delta > 16)
1396
+ {
1397
+ // if (delta == 0) alignBits = GetAlignForFilterMethod(filterMode.Id);
1398
+ }
1399
+ else if ((delta & ((1 << 4) - 1)) == 0) alignBits = 4;
1400
+ else if ((delta & ((1 << 3) - 1)) == 0) alignBits = 3;
1401
+ else if ((delta & ((1 << 2) - 1)) == 0) alignBits = 2;
1402
+ else if ((delta & ((1 << 1) - 1)) == 0) alignBits = 1;
1403
+ // else alignBits = 0;
1404
+ /* alignBits=0 is default mode for lzma/lzma2.
1405
+ So we don't set alignBits=0 here. */
1406
+ }
1407
+ if (alignBits <= 0)
1408
+ return S_OK;
1409
+ // (alignBits > 0)
1410
+ CMethodFull &nextMethod = mode.Methods[nextCoder];
1411
+ if (nextMethod.Id == k_LZMA || nextMethod.Id == k_LZMA2)
1412
+ if (!nextMethod.Are_Lzma_Model_Props_Defined())
1413
+ {
1414
+ if (alignBits > 2 || filterMode.Id == k_Delta)
1415
+ nextMethod.AddProp32(NCoderPropID::kPosStateBits, (unsigned)alignBits);
1416
+ const unsigned lc = (alignBits < 3) ? (unsigned)(3 - alignBits) : 0u;
1417
+ nextMethod.AddProp32(NCoderPropID::kLitContextBits, lc);
1418
+ nextMethod.AddProp32(NCoderPropID::kLitPosBits, (unsigned)alignBits);
1419
+ }
1420
+ return S_OK;
1421
+ }
1422
+
1423
+
1424
+ static void UpdateItem_To_FileItem2(const CUpdateItem &ui, CFileItem2 &file2)
1425
+ {
1426
+ file2.Attrib = ui.Attrib; file2.AttribDefined = ui.AttribDefined;
1427
+ file2.CTime = ui.CTime; file2.CTimeDefined = ui.CTimeDefined;
1428
+ file2.ATime = ui.ATime; file2.ATimeDefined = ui.ATimeDefined;
1429
+ file2.MTime = ui.MTime; file2.MTimeDefined = ui.MTimeDefined;
1430
+ file2.IsAnti = ui.IsAnti;
1431
+ // file2.IsAux = false;
1432
+ file2.StartPosDefined = false;
1433
+ // file2.StartPos = 0;
1434
+ }
1435
+
1436
+
1437
+ static void UpdateItem_To_FileItem(const CUpdateItem &ui,
1438
+ CFileItem &file, CFileItem2 &file2)
1439
+ {
1440
+ UpdateItem_To_FileItem2(ui, file2);
1441
+
1442
+ file.Size = ui.Size;
1443
+ file.IsDir = ui.IsDir;
1444
+ file.HasStream = ui.HasStream();
1445
+ // file.IsAltStream = ui.IsAltStream;
1446
+ }
1447
+
1448
+
1449
+
1450
+ Z7_CLASS_IMP_COM_2(
1451
+ CRepackInStreamWithSizes
1452
+ , ISequentialInStream
1453
+ , ICompressGetSubStreamSize
1454
+ )
1455
+ CMyComPtr<ISequentialInStream> _stream;
1456
+ UInt64 _size;
1457
+ const CBoolVector *_extractStatuses;
1458
+ UInt32 _startIndex;
1459
+ public:
1460
+ const CDbEx *_db;
1461
+
1462
+ void Init(ISequentialInStream *stream, UInt32 startIndex, const CBoolVector *extractStatuses)
1463
+ {
1464
+ _startIndex = startIndex;
1465
+ _extractStatuses = extractStatuses;
1466
+ _size = 0;
1467
+ _stream = stream;
1468
+ }
1469
+ UInt64 GetSize() const { return _size; }
1470
+ };
1471
+
1472
+ Z7_COM7F_IMF(CRepackInStreamWithSizes::Read(void *data, UInt32 size, UInt32 *processedSize))
1473
+ {
1474
+ UInt32 realProcessedSize;
1475
+ const HRESULT result = _stream->Read(data, size, &realProcessedSize);
1476
+ _size += realProcessedSize;
1477
+ if (processedSize)
1478
+ *processedSize = realProcessedSize;
1479
+ return result;
1480
+ }
1481
+
1482
+ Z7_COM7F_IMF(CRepackInStreamWithSizes::GetSubStreamSize(UInt64 subStream, UInt64 *value))
1483
+ {
1484
+ *value = 0;
1485
+ if (subStream >= _extractStatuses->Size())
1486
+ return S_FALSE; // E_FAIL;
1487
+ const unsigned index = (unsigned)subStream;
1488
+ if ((*_extractStatuses)[index])
1489
+ {
1490
+ const CFileItem &fi = _db->Files[_startIndex + index];
1491
+ if (fi.HasStream)
1492
+ *value = fi.Size;
1493
+ }
1494
+ return S_OK;
1495
+ }
1496
+
1497
+
1498
+ class CRepackStreamBase
1499
+ {
1500
+ protected:
1501
+ bool _needWrite;
1502
+ bool _fileIsOpen;
1503
+ bool _calcCrc;
1504
+ UInt32 _crc;
1505
+ UInt64 _rem;
1506
+
1507
+ const CBoolVector *_extractStatuses;
1508
+ UInt32 _startIndex;
1509
+ unsigned _currentIndex;
1510
+
1511
+ HRESULT OpenFile();
1512
+ HRESULT CloseFile();
1513
+ HRESULT ProcessEmptyFiles();
1514
+
1515
+ public:
1516
+ const CDbEx *_db;
1517
+ CMyComPtr<IArchiveUpdateCallbackFile> _opCallback;
1518
+ CMyComPtr<IArchiveExtractCallbackMessage2> _extractCallback;
1519
+
1520
+ HRESULT Init(UInt32 startIndex, const CBoolVector *extractStatuses);
1521
+ HRESULT CheckFinishedState() const { return (_currentIndex == _extractStatuses->Size()) ? S_OK: E_FAIL; }
1522
+ };
1523
+
1524
+ HRESULT CRepackStreamBase::Init(UInt32 startIndex, const CBoolVector *extractStatuses)
1525
+ {
1526
+ _startIndex = startIndex;
1527
+ _extractStatuses = extractStatuses;
1528
+
1529
+ _currentIndex = 0;
1530
+ _fileIsOpen = false;
1531
+
1532
+ return ProcessEmptyFiles();
1533
+ }
1534
+
1535
+ HRESULT CRepackStreamBase::OpenFile()
1536
+ {
1537
+ UInt32 arcIndex = _startIndex + _currentIndex;
1538
+ const CFileItem &fi = _db->Files[arcIndex];
1539
+
1540
+ _needWrite = (*_extractStatuses)[_currentIndex];
1541
+ if (_opCallback)
1542
+ {
1543
+ RINOK(_opCallback->ReportOperation(
1544
+ NEventIndexType::kInArcIndex, arcIndex,
1545
+ _needWrite ?
1546
+ NUpdateNotifyOp::kRepack :
1547
+ NUpdateNotifyOp::kSkip))
1548
+ }
1549
+
1550
+ _crc = CRC_INIT_VAL;
1551
+ _calcCrc = (fi.CrcDefined && !fi.IsDir);
1552
+
1553
+ _fileIsOpen = true;
1554
+ _rem = fi.Size;
1555
+ return S_OK;
1556
+ }
1557
+
1558
+ const HRESULT k_My_HRESULT_CRC_ERROR = 0x20000002;
1559
+
1560
+ HRESULT CRepackStreamBase::CloseFile()
1561
+ {
1562
+ UInt32 arcIndex = _startIndex + _currentIndex;
1563
+ const CFileItem &fi = _db->Files[arcIndex];
1564
+ _fileIsOpen = false;
1565
+ _currentIndex++;
1566
+ if (!_calcCrc || fi.Crc == CRC_GET_DIGEST(_crc))
1567
+ return S_OK;
1568
+
1569
+ if (_extractCallback)
1570
+ {
1571
+ RINOK(_extractCallback->ReportExtractResult(
1572
+ NEventIndexType::kInArcIndex, arcIndex,
1573
+ NExtract::NOperationResult::kCRCError))
1574
+ }
1575
+ // return S_FALSE;
1576
+ return k_My_HRESULT_CRC_ERROR;
1577
+ }
1578
+
1579
+ HRESULT CRepackStreamBase::ProcessEmptyFiles()
1580
+ {
1581
+ while (_currentIndex < _extractStatuses->Size() && _db->Files[_startIndex + _currentIndex].Size == 0)
1582
+ {
1583
+ RINOK(OpenFile())
1584
+ RINOK(CloseFile())
1585
+ }
1586
+ return S_OK;
1587
+ }
1588
+
1589
+
1590
+
1591
+ #ifndef Z7_ST
1592
+
1593
+ class CFolderOutStream2 Z7_final:
1594
+ public CRepackStreamBase,
1595
+ public ISequentialOutStream,
1596
+ public CMyUnknownImp
1597
+ {
1598
+ Z7_COM_UNKNOWN_IMP_0
1599
+ Z7_IFACE_COM7_IMP(ISequentialOutStream)
1600
+ public:
1601
+ CMyComPtr<ISequentialOutStream> _stream;
1602
+ };
1603
+
1604
+ Z7_COM7F_IMF(CFolderOutStream2::Write(const void *data, UInt32 size, UInt32 *processedSize))
1605
+ {
1606
+ if (processedSize)
1607
+ *processedSize = 0;
1608
+
1609
+ while (size != 0)
1610
+ {
1611
+ if (_fileIsOpen)
1612
+ {
1613
+ UInt32 cur = (size < _rem ? size : (UInt32)_rem);
1614
+ HRESULT result = S_OK;
1615
+ if (_needWrite)
1616
+ result = _stream->Write(data, cur, &cur);
1617
+ if (_calcCrc)
1618
+ _crc = CrcUpdate(_crc, data, cur);
1619
+ if (processedSize)
1620
+ *processedSize += cur;
1621
+ data = (const Byte *)data + cur;
1622
+ size -= cur;
1623
+ _rem -= cur;
1624
+ if (_rem == 0)
1625
+ {
1626
+ RINOK(CloseFile())
1627
+ RINOK(ProcessEmptyFiles())
1628
+ }
1629
+ RINOK(result)
1630
+ if (cur == 0)
1631
+ break;
1632
+ continue;
1633
+ }
1634
+
1635
+ RINOK(ProcessEmptyFiles())
1636
+ if (_currentIndex == _extractStatuses->Size())
1637
+ {
1638
+ // we don't support write cut here
1639
+ return E_FAIL;
1640
+ }
1641
+ RINOK(OpenFile())
1642
+ }
1643
+
1644
+ return S_OK;
1645
+ }
1646
+
1647
+ #endif
1648
+
1649
+
1650
+
1651
+ static const UInt32 kTempBufSize = 1 << 16;
1652
+
1653
+ class CFolderInStream2 Z7_final:
1654
+ public CRepackStreamBase,
1655
+ public ISequentialInStream,
1656
+ public CMyUnknownImp
1657
+ {
1658
+ Z7_COM_UNKNOWN_IMP_0
1659
+ Z7_IFACE_COM7_IMP(ISequentialInStream)
1660
+
1661
+ Byte *_buf;
1662
+ public:
1663
+ CMyComPtr<ISequentialInStream> _inStream;
1664
+ HRESULT Result;
1665
+
1666
+ CFolderInStream2():
1667
+ Result(S_OK)
1668
+ {
1669
+ _buf = new Byte[kTempBufSize];
1670
+ }
1671
+
1672
+ ~CFolderInStream2()
1673
+ {
1674
+ delete []_buf;
1675
+ }
1676
+
1677
+ void Init() { Result = S_OK; }
1678
+ };
1679
+
1680
+ Z7_COM7F_IMF(CFolderInStream2::Read(void *data, UInt32 size, UInt32 *processedSize))
1681
+ {
1682
+ if (processedSize)
1683
+ *processedSize = 0;
1684
+
1685
+ while (size != 0)
1686
+ {
1687
+ if (_fileIsOpen)
1688
+ {
1689
+ UInt32 cur = (size < _rem ? size : (UInt32)_rem);
1690
+
1691
+ void *buf;
1692
+ if (_needWrite)
1693
+ buf = data;
1694
+ else
1695
+ {
1696
+ buf = _buf;
1697
+ if (cur > kTempBufSize)
1698
+ cur = kTempBufSize;
1699
+ }
1700
+
1701
+ const HRESULT result = _inStream->Read(buf, cur, &cur);
1702
+ _crc = CrcUpdate(_crc, buf, cur);
1703
+ _rem -= cur;
1704
+
1705
+ if (_needWrite)
1706
+ {
1707
+ data = (Byte *)data + cur;
1708
+ size -= cur;
1709
+ if (processedSize)
1710
+ *processedSize += cur;
1711
+ }
1712
+
1713
+ if (result != S_OK)
1714
+ Result = result;
1715
+
1716
+ if (_rem == 0)
1717
+ {
1718
+ RINOK(CloseFile())
1719
+ RINOK(ProcessEmptyFiles())
1720
+ }
1721
+
1722
+ RINOK(result)
1723
+
1724
+ if (cur == 0)
1725
+ return E_FAIL;
1726
+
1727
+ continue;
1728
+ }
1729
+
1730
+ RINOK(ProcessEmptyFiles())
1731
+ if (_currentIndex == _extractStatuses->Size())
1732
+ {
1733
+ return S_OK;
1734
+ }
1735
+ RINOK(OpenFile())
1736
+ }
1737
+
1738
+ return S_OK;
1739
+ }
1740
+
1741
+
1742
+ class CThreadDecoder Z7_final
1743
+ #ifndef Z7_ST
1744
+ : public CVirtThread
1745
+ #endif
1746
+ {
1747
+ public:
1748
+ CDecoder Decoder;
1749
+
1750
+ CThreadDecoder(bool multiThreadMixer):
1751
+ Decoder(multiThreadMixer)
1752
+ {
1753
+ #ifndef Z7_ST
1754
+ if (multiThreadMixer)
1755
+ {
1756
+ MtMode = false;
1757
+ NumThreads = 1;
1758
+ FosSpec = new CFolderOutStream2;
1759
+ Fos = FosSpec;
1760
+ Result = E_FAIL;
1761
+ }
1762
+ #endif
1763
+ // UnpackSize = 0;
1764
+ // send_UnpackSize = false;
1765
+ }
1766
+
1767
+ #ifndef Z7_ST
1768
+
1769
+ bool dataAfterEnd_Error;
1770
+ HRESULT Result;
1771
+ CMyComPtr<IInStream> InStream;
1772
+
1773
+ CFolderOutStream2 *FosSpec;
1774
+ CMyComPtr<ISequentialOutStream> Fos;
1775
+
1776
+ UInt64 StartPos;
1777
+ const CFolders *Folders;
1778
+ unsigned FolderIndex;
1779
+
1780
+ // bool send_UnpackSize;
1781
+ // UInt64 UnpackSize;
1782
+
1783
+ #ifndef Z7_NO_CRYPTO
1784
+ CMyComPtr<ICryptoGetTextPassword> getTextPassword;
1785
+ #endif
1786
+
1787
+ DECL_EXTERNAL_CODECS_LOC_VARS_DECL
1788
+
1789
+ #ifndef Z7_ST
1790
+ bool MtMode;
1791
+ UInt32 NumThreads;
1792
+ #endif
1793
+
1794
+
1795
+ ~CThreadDecoder() Z7_DESTRUCTOR_override
1796
+ {
1797
+ /* WaitThreadFinish() will be called in ~CVirtThread().
1798
+ But we need WaitThreadFinish() call before
1799
+ destructors of this class members.
1800
+ */
1801
+ CVirtThread::WaitThreadFinish();
1802
+ }
1803
+ private:
1804
+ virtual void Execute() Z7_override;
1805
+
1806
+ #endif
1807
+ };
1808
+
1809
+ #ifndef Z7_ST
1810
+
1811
+ void CThreadDecoder::Execute()
1812
+ {
1813
+ try
1814
+ {
1815
+ #ifndef Z7_NO_CRYPTO
1816
+ bool isEncrypted = false;
1817
+ bool passwordIsDefined = false;
1818
+ UString password;
1819
+ #endif
1820
+
1821
+ dataAfterEnd_Error = false;
1822
+
1823
+ Result = Decoder.Decode(
1824
+ EXTERNAL_CODECS_LOC_VARS
1825
+ InStream,
1826
+ StartPos,
1827
+ *Folders, FolderIndex,
1828
+
1829
+ // send_UnpackSize ? &UnpackSize : NULL,
1830
+ NULL, // unpackSize : FULL unpack
1831
+
1832
+ Fos,
1833
+ NULL, // compressProgress
1834
+
1835
+ NULL // *inStreamMainRes
1836
+ , dataAfterEnd_Error
1837
+
1838
+ Z7_7Z_DECODER_CRYPRO_VARS
1839
+ #ifndef Z7_ST
1840
+ , MtMode, NumThreads,
1841
+ 0 // MemUsage
1842
+ #endif
1843
+
1844
+ );
1845
+ }
1846
+ catch(...)
1847
+ {
1848
+ Result = E_FAIL;
1849
+ }
1850
+
1851
+ /*
1852
+ if (Result == S_OK)
1853
+ Result = FosSpec->CheckFinishedState();
1854
+ */
1855
+ FosSpec->_stream.Release();
1856
+ }
1857
+
1858
+ #endif
1859
+
1860
+ #ifndef Z7_NO_CRYPTO
1861
+
1862
+ Z7_CLASS_IMP_NOQIB_1(
1863
+ CCryptoGetTextPassword
1864
+ , ICryptoGetTextPassword
1865
+ )
1866
+ public:
1867
+ UString Password;
1868
+ };
1869
+
1870
+ Z7_COM7F_IMF(CCryptoGetTextPassword::CryptoGetTextPassword(BSTR *password))
1871
+ {
1872
+ return StringToBstr(Password, password);
1873
+ }
1874
+
1875
+ #endif
1876
+
1877
+
1878
+ static void GetFile(const CDatabase &inDb, unsigned index, CFileItem &file, CFileItem2 &file2)
1879
+ {
1880
+ file = inDb.Files[index];
1881
+ file2.CTimeDefined = inDb.CTime.GetItem(index, file2.CTime);
1882
+ file2.ATimeDefined = inDb.ATime.GetItem(index, file2.ATime);
1883
+ file2.MTimeDefined = inDb.MTime.GetItem(index, file2.MTime);
1884
+ file2.StartPosDefined = inDb.StartPos.GetItem(index, file2.StartPos);
1885
+ file2.AttribDefined = inDb.Attrib.GetItem(index, file2.Attrib);
1886
+ file2.IsAnti = inDb.IsItemAnti(index);
1887
+ // file2.IsAux = inDb.IsItemAux(index);
1888
+ }
1889
+
1890
+ HRESULT Update(
1891
+ DECL_EXTERNAL_CODECS_LOC_VARS
1892
+ IInStream *inStream,
1893
+ const CDbEx *db,
1894
+ CObjectVector<CUpdateItem> &updateItems,
1895
+ // const CObjectVector<CTreeFolder> &treeFolders,
1896
+ // const CUniqBlocks &secureBlocks,
1897
+ ISequentialOutStream *seqOutStream,
1898
+ IArchiveUpdateCallback *updateCallback,
1899
+ const CUpdateOptions &options)
1900
+ {
1901
+ UInt64 numSolidFiles = options.NumSolidFiles;
1902
+ if (numSolidFiles == 0)
1903
+ numSolidFiles = 1;
1904
+
1905
+ Z7_DECL_CMyComPtr_QI_FROM(
1906
+ IArchiveUpdateCallbackFile,
1907
+ opCallback, updateCallback)
1908
+
1909
+ Z7_DECL_CMyComPtr_QI_FROM(
1910
+ IArchiveExtractCallbackMessage2,
1911
+ extractCallback, updateCallback)
1912
+
1913
+ /*
1914
+ Z7_DECL_CMyComPtr_QI_FROM(
1915
+ IArchiveUpdateCallbackArcProp,
1916
+ reportArcProp, updateCallback)
1917
+ */
1918
+
1919
+ // size_t totalSecureDataSize = (size_t)secureBlocks.GetTotalSizeInBytes();
1920
+
1921
+ CMyComPtr<IStreamSetRestriction> v_StreamSetRestriction;
1922
+ {
1923
+ Z7_DECL_CMyComPtr_QI_FROM(
1924
+ IOutStream,
1925
+ outStream, seqOutStream)
1926
+ if (!outStream)
1927
+ return E_NOTIMPL;
1928
+ const UInt64 sfxBlockSize = (db && !options.RemoveSfxBlock) ?
1929
+ db->ArcInfo.StartPosition: 0;
1930
+ seqOutStream->QueryInterface(IID_IStreamSetRestriction, (void **)&v_StreamSetRestriction);
1931
+ if (v_StreamSetRestriction)
1932
+ {
1933
+ UInt64 offset = 0;
1934
+ RINOK(outStream->Seek(0, STREAM_SEEK_CUR, &offset))
1935
+ RINOK(v_StreamSetRestriction->SetRestriction(
1936
+ outStream ? offset + sfxBlockSize : 0,
1937
+ outStream ? offset + sfxBlockSize + k_StartHeadersRewriteSize : 0))
1938
+ }
1939
+ outStream.Release();
1940
+ if (sfxBlockSize != 0)
1941
+ {
1942
+ RINOK(WriteRange(inStream, seqOutStream, 0, sfxBlockSize, NULL))
1943
+ }
1944
+ }
1945
+
1946
+ CIntArr fileIndexToUpdateIndexMap;
1947
+ UInt64 complexity = 0;
1948
+ bool isThere_UnknownSize = false;
1949
+ UInt64 inSizeForReduce2 = 0;
1950
+
1951
+ #ifndef Z7_NO_CRYPTO
1952
+ bool needEncryptedRepack = false;
1953
+ #endif
1954
+
1955
+ CRecordVector<CFilterMode2> filters;
1956
+ CObjectVector<CSolidGroup> groups;
1957
+
1958
+ #ifndef Z7_ST
1959
+ bool thereAreRepacks = false;
1960
+ #endif
1961
+
1962
+ bool useFilters = options.UseFilters;
1963
+ if (useFilters)
1964
+ {
1965
+ const CCompressionMethodMode &method = *options.Method;
1966
+
1967
+ FOR_VECTOR (i, method.Methods)
1968
+ {
1969
+ /* IsFilterMethod() knows only built-in codecs
1970
+ FIXME: we should check IsFilter status for external filters too */
1971
+ if (IsFilterMethod(method.Methods[i].Id))
1972
+ {
1973
+ useFilters = false;
1974
+ break;
1975
+ }
1976
+ }
1977
+ }
1978
+
1979
+ if (db)
1980
+ {
1981
+ fileIndexToUpdateIndexMap.Alloc(db->Files.Size());
1982
+ unsigned i;
1983
+
1984
+ for (i = 0; i < db->Files.Size(); i++)
1985
+ fileIndexToUpdateIndexMap[i] = -1;
1986
+
1987
+ for (i = 0; i < updateItems.Size(); i++)
1988
+ {
1989
+ int index = updateItems[i].IndexInArchive;
1990
+ if (index != -1)
1991
+ fileIndexToUpdateIndexMap[(unsigned)index] = (int)i;
1992
+ }
1993
+
1994
+ for (i = 0; i < db->NumFolders; i++)
1995
+ {
1996
+ CNum indexInFolder = 0;
1997
+ CNum numCopyItems = 0;
1998
+ const CNum numUnpackStreams = db->NumUnpackStreamsVector[i];
1999
+ UInt64 repackSize = 0;
2000
+
2001
+ for (CNum fi = db->FolderStartFileIndex[i]; indexInFolder < numUnpackStreams; fi++)
2002
+ {
2003
+ if (fi >= db->Files.Size())
2004
+ return E_FAIL;
2005
+
2006
+ const CFileItem &file = db->Files[fi];
2007
+ if (file.HasStream)
2008
+ {
2009
+ indexInFolder++;
2010
+ const int updateIndex = fileIndexToUpdateIndexMap[fi];
2011
+ if (updateIndex >= 0 && !updateItems[(unsigned)updateIndex].NewData)
2012
+ {
2013
+ numCopyItems++;
2014
+ repackSize += file.Size;
2015
+ }
2016
+ }
2017
+ }
2018
+
2019
+ if (numCopyItems == 0)
2020
+ continue;
2021
+
2022
+ CFolderRepack rep;
2023
+ rep.FolderIndex = i;
2024
+ rep.NumCopyFiles = numCopyItems;
2025
+ CFolderEx f;
2026
+ db->ParseFolderEx(i, f);
2027
+
2028
+ #ifndef Z7_NO_CRYPTO
2029
+ const bool isEncrypted = f.IsEncrypted();
2030
+ #endif
2031
+ const bool needCopy = (numCopyItems == numUnpackStreams);
2032
+ const bool extractFilter = (useFilters || needCopy);
2033
+
2034
+ const unsigned groupIndex = Get_FilterGroup_for_Folder(filters, f, extractFilter);
2035
+
2036
+ while (groupIndex >= groups.Size())
2037
+ groups.AddNew();
2038
+
2039
+ groups[groupIndex].folderRefs.Add(rep);
2040
+
2041
+ if (needCopy)
2042
+ complexity += db->GetFolderFullPackSize(i);
2043
+ else
2044
+ {
2045
+ #ifndef Z7_ST
2046
+ thereAreRepacks = true;
2047
+ #endif
2048
+ complexity += repackSize;
2049
+ if (inSizeForReduce2 < repackSize)
2050
+ inSizeForReduce2 = repackSize;
2051
+ #ifndef Z7_NO_CRYPTO
2052
+ if (isEncrypted)
2053
+ needEncryptedRepack = true;
2054
+ #endif
2055
+ }
2056
+ }
2057
+ }
2058
+
2059
+ UInt64 inSizeForReduce = 0;
2060
+ {
2061
+ const bool isSolid = (numSolidFiles > 1 && options.NumSolidBytes != 0);
2062
+ FOR_VECTOR (i, updateItems)
2063
+ {
2064
+ const CUpdateItem &ui = updateItems[i];
2065
+ if (ui.NewData)
2066
+ {
2067
+ if (ui.Size == (UInt64)(Int64)-1)
2068
+ isThere_UnknownSize = true;
2069
+ else
2070
+ {
2071
+ complexity += ui.Size;
2072
+ if (isSolid)
2073
+ inSizeForReduce += ui.Size;
2074
+ else if (inSizeForReduce < ui.Size)
2075
+ inSizeForReduce = ui.Size;
2076
+ }
2077
+ }
2078
+ }
2079
+ }
2080
+
2081
+ if (isThere_UnknownSize)
2082
+ inSizeForReduce = (UInt64)(Int64)-1;
2083
+ else
2084
+ RINOK(updateCallback->SetTotal(complexity))
2085
+
2086
+ if (inSizeForReduce < inSizeForReduce2)
2087
+ inSizeForReduce = inSizeForReduce2;
2088
+
2089
+
2090
+ CMyComPtr2_Create<ICompressProgressInfo, CLocalProgress> lps;
2091
+ lps->Init(updateCallback, true);
2092
+
2093
+ #ifndef Z7_ST
2094
+
2095
+ CStreamBinder sb;
2096
+ /*
2097
+ if (options.MultiThreadMixer)
2098
+ {
2099
+ RINOK(sb.CreateEvents());
2100
+ }
2101
+ */
2102
+
2103
+ #endif
2104
+
2105
+ CThreadDecoder threadDecoder(options.MultiThreadMixer);
2106
+
2107
+ #ifndef Z7_ST
2108
+ if (options.MultiThreadMixer && thereAreRepacks)
2109
+ {
2110
+ #ifdef Z7_EXTERNAL_CODECS
2111
+ threadDecoder._externalCodecs = _externalCodecs;
2112
+ #endif
2113
+ const WRes wres = threadDecoder.Create();
2114
+ if (wres != 0)
2115
+ return HRESULT_FROM_WIN32(wres);
2116
+ }
2117
+ #endif
2118
+
2119
+ {
2120
+ CAnalysis analysis;
2121
+ // analysis.Need_ATime = options.Need_ATime;
2122
+ int analysisLevel = options.AnalysisLevel;
2123
+ // (analysisLevel < 0) means default level (5)
2124
+ if (analysisLevel < 0)
2125
+ analysisLevel = 5;
2126
+ if (analysisLevel != 0)
2127
+ {
2128
+ analysis.Callback = opCallback;
2129
+ analysis.ParseWav = true;
2130
+ if (analysisLevel >= 5)
2131
+ {
2132
+ analysis.ParseExe = true;
2133
+ analysis.ParseExeUnix = true;
2134
+ // analysis.ParseNoExt = true;
2135
+ if (analysisLevel >= 7)
2136
+ {
2137
+ analysis.ParseNoExt = true;
2138
+ if (analysisLevel >= 9)
2139
+ analysis.ParseAll = true;
2140
+ }
2141
+ }
2142
+ }
2143
+
2144
+ // ---------- Split files to groups ----------
2145
+
2146
+ const CCompressionMethodMode &method = *options.Method;
2147
+
2148
+ FOR_VECTOR (i, updateItems)
2149
+ {
2150
+ const CUpdateItem &ui = updateItems[i];
2151
+ if (!ui.NewData || !ui.HasStream())
2152
+ continue;
2153
+
2154
+ CFilterMode2 fm;
2155
+ fm.Construct();
2156
+ if (useFilters)
2157
+ {
2158
+ // analysis.ATime_Defined = false;
2159
+ RINOK(analysis.GetFilterGroup(i, ui, fm))
2160
+ /*
2161
+ if (analysis.ATime_Defined)
2162
+ {
2163
+ ui.ATime = FILETIME_To_UInt64(analysis.ATime);
2164
+ ui.ATime_WasReadByAnalysis = true;
2165
+ }
2166
+ */
2167
+ }
2168
+ fm.Encrypted = method.PasswordIsDefined;
2169
+
2170
+ const unsigned groupIndex = GetGroup(filters, fm);
2171
+ while (groupIndex >= groups.Size())
2172
+ groups.AddNew();
2173
+ groups[groupIndex].Indices.Add(i);
2174
+ }
2175
+ }
2176
+
2177
+
2178
+ #ifndef Z7_NO_CRYPTO
2179
+
2180
+ CCryptoGetTextPassword *getPasswordSpec = NULL;
2181
+ CMyComPtr<ICryptoGetTextPassword> getTextPassword;
2182
+ if (needEncryptedRepack)
2183
+ {
2184
+ getPasswordSpec = new CCryptoGetTextPassword;
2185
+ getTextPassword = getPasswordSpec;
2186
+
2187
+ #ifndef Z7_ST
2188
+ threadDecoder.getTextPassword = getPasswordSpec;
2189
+ #endif
2190
+
2191
+ if (options.Method->PasswordIsDefined)
2192
+ getPasswordSpec->Password = options.Method->Password;
2193
+ else
2194
+ {
2195
+ Z7_DECL_CMyComPtr_QI_FROM(
2196
+ ICryptoGetTextPassword,
2197
+ getDecoderPassword, updateCallback)
2198
+ if (!getDecoderPassword)
2199
+ return E_NOTIMPL;
2200
+ CMyComBSTR password;
2201
+ RINOK(getDecoderPassword->CryptoGetTextPassword(&password))
2202
+ if (password)
2203
+ getPasswordSpec->Password = password;
2204
+ }
2205
+ }
2206
+
2207
+ #endif
2208
+
2209
+ // ---------- Compress ----------
2210
+
2211
+ COutArchive archive;
2212
+ CArchiveDatabaseOut newDatabase;
2213
+
2214
+ RINOK(archive.Create_and_WriteStartPrefix(seqOutStream))
2215
+
2216
+ /*
2217
+ CIntVector treeFolderToArcIndex;
2218
+ treeFolderToArcIndex.Reserve(treeFolders.Size());
2219
+ for (i = 0; i < treeFolders.Size(); i++)
2220
+ treeFolderToArcIndex.Add(-1);
2221
+ // ---------- Write Tree (only AUX dirs) ----------
2222
+ for (i = 1; i < treeFolders.Size(); i++)
2223
+ {
2224
+ const CTreeFolder &treeFolder = treeFolders[i];
2225
+ CFileItem file;
2226
+ CFileItem2 file2;
2227
+ file2.Init();
2228
+ int secureID = 0;
2229
+ if (treeFolder.UpdateItemIndex < 0)
2230
+ {
2231
+ // we can store virtual dir item wuthout attrib, but we want all items have attrib.
2232
+ file.SetAttrib(FILE_ATTRIBUTE_DIRECTORY);
2233
+ file2.IsAux = true;
2234
+ }
2235
+ else
2236
+ {
2237
+ const CUpdateItem &ui = updateItems[treeFolder.UpdateItemIndex];
2238
+ // if item is not dir, then it's parent for alt streams.
2239
+ // we will write such items later
2240
+ if (!ui.IsDir)
2241
+ continue;
2242
+ secureID = ui.SecureIndex;
2243
+ if (ui.NewProps)
2244
+ UpdateItem_To_FileItem(ui, file, file2);
2245
+ else
2246
+ GetFile(*db, ui.IndexInArchive, file, file2);
2247
+ }
2248
+ file.Size = 0;
2249
+ file.HasStream = false;
2250
+ file.IsDir = true;
2251
+ file.Parent = treeFolder.Parent;
2252
+
2253
+ treeFolderToArcIndex[i] = newDatabase.Files.Size();
2254
+ newDatabase.AddFile(file, file2, treeFolder.Name);
2255
+
2256
+ if (totalSecureDataSize != 0)
2257
+ newDatabase.SecureIDs.Add(secureID);
2258
+ }
2259
+ */
2260
+
2261
+ {
2262
+ /* ---------- Write non-AUX dirs and Empty files ---------- */
2263
+ CUIntVector emptyRefs;
2264
+
2265
+ unsigned i;
2266
+
2267
+ for (i = 0; i < updateItems.Size(); i++)
2268
+ {
2269
+ const CUpdateItem &ui = updateItems[i];
2270
+ if (ui.NewData)
2271
+ {
2272
+ if (ui.HasStream())
2273
+ continue;
2274
+ }
2275
+ else if (ui.IndexInArchive != -1 && db->Files[(unsigned)ui.IndexInArchive].HasStream)
2276
+ continue;
2277
+ /*
2278
+ if (ui.TreeFolderIndex >= 0)
2279
+ continue;
2280
+ */
2281
+ emptyRefs.Add(i);
2282
+ }
2283
+
2284
+ emptyRefs.Sort(CompareEmptyItems, (void *)&updateItems);
2285
+
2286
+ for (i = 0; i < emptyRefs.Size(); i++)
2287
+ {
2288
+ const CUpdateItem &ui = updateItems[emptyRefs[i]];
2289
+ CFileItem file;
2290
+ CFileItem2 file2;
2291
+ UString name;
2292
+ if (ui.NewProps)
2293
+ {
2294
+ UpdateItem_To_FileItem(ui, file, file2);
2295
+ file.CrcDefined = false;
2296
+ name = ui.Name;
2297
+ }
2298
+ else
2299
+ {
2300
+ GetFile(*db, (unsigned)ui.IndexInArchive, file, file2);
2301
+ db->GetPath((unsigned)ui.IndexInArchive, name);
2302
+ }
2303
+
2304
+ /*
2305
+ if (totalSecureDataSize != 0)
2306
+ newDatabase.SecureIDs.Add(ui.SecureIndex);
2307
+ file.Parent = ui.ParentFolderIndex;
2308
+ */
2309
+ newDatabase.AddFile(file, file2, name);
2310
+ }
2311
+ }
2312
+
2313
+ lps->ProgressOffset = 0;
2314
+
2315
+ {
2316
+ // ---------- Sort Filters ----------
2317
+ FOR_VECTOR (i, filters)
2318
+ {
2319
+ filters[i].GroupIndex = i;
2320
+ }
2321
+ filters.Sort2();
2322
+ }
2323
+
2324
+ for (unsigned groupIndex = 0; groupIndex < filters.Size(); groupIndex++)
2325
+ {
2326
+ const CFilterMode2 &filterMode = filters[groupIndex];
2327
+
2328
+ CCompressionMethodMode method = *options.Method;
2329
+ {
2330
+ const HRESULT res = MakeExeMethod(method, filterMode,
2331
+ // bcj2_IsAllowed:
2332
+ #ifdef Z7_ST
2333
+ false
2334
+ #else
2335
+ options.MaxFilter && options.MultiThreadMixer
2336
+ #endif
2337
+ , options.DisabledFilterIDs);
2338
+
2339
+ RINOK(res)
2340
+ }
2341
+
2342
+ if (filterMode.Encrypted)
2343
+ {
2344
+ if (!method.PasswordIsDefined)
2345
+ {
2346
+ #ifndef Z7_NO_CRYPTO
2347
+ if (getPasswordSpec)
2348
+ method.Password = getPasswordSpec->Password;
2349
+ #endif
2350
+ method.PasswordIsDefined = true;
2351
+ }
2352
+ }
2353
+ else
2354
+ {
2355
+ method.PasswordIsDefined = false;
2356
+ method.Password.Empty();
2357
+ }
2358
+
2359
+ CEncoder encoder(method);
2360
+
2361
+ // ---------- Repack and copy old solid blocks ----------
2362
+
2363
+ const CSolidGroup &group = groups[filterMode.GroupIndex];
2364
+
2365
+ FOR_VECTOR (folderRefIndex, group.folderRefs)
2366
+ {
2367
+ const CFolderRepack &rep = group.folderRefs[folderRefIndex];
2368
+
2369
+ const unsigned folderIndex = rep.FolderIndex;
2370
+
2371
+ const CNum numUnpackStreams = db->NumUnpackStreamsVector[folderIndex];
2372
+
2373
+ if (rep.NumCopyFiles == numUnpackStreams)
2374
+ {
2375
+ if (opCallback)
2376
+ {
2377
+ RINOK(opCallback->ReportOperation(
2378
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex,
2379
+ NUpdateNotifyOp::kReplicate))
2380
+
2381
+ // ---------- Copy old solid block ----------
2382
+ {
2383
+ CNum indexInFolder = 0;
2384
+ for (CNum fi = db->FolderStartFileIndex[folderIndex]; indexInFolder < numUnpackStreams; fi++)
2385
+ {
2386
+ if (db->Files[fi].HasStream)
2387
+ {
2388
+ indexInFolder++;
2389
+ RINOK(opCallback->ReportOperation(
2390
+ NEventIndexType::kInArcIndex, (UInt32)fi,
2391
+ NUpdateNotifyOp::kReplicate))
2392
+ }
2393
+ }
2394
+ }
2395
+ }
2396
+
2397
+ const UInt64 packSize = db->GetFolderFullPackSize(folderIndex);
2398
+ RINOK(WriteRange(inStream, archive.SeqStream,
2399
+ db->GetFolderStreamPos(folderIndex, 0), packSize, lps))
2400
+ lps->ProgressOffset += packSize;
2401
+
2402
+ const unsigned folderIndex_New = newDatabase.Folders.Size();
2403
+ CFolder &folder = newDatabase.Folders.AddNew();
2404
+ // v23.01: we copy FolderCrc, if FolderCrc was used
2405
+ if (db->FolderCRCs.ValidAndDefined(folderIndex))
2406
+ newDatabase.FolderUnpackCRCs.SetItem(folderIndex_New,
2407
+ true, db->FolderCRCs.Vals[folderIndex]);
2408
+
2409
+ db->ParseFolderInfo(folderIndex, folder);
2410
+ const CNum startIndex = db->FoStartPackStreamIndex[folderIndex];
2411
+ FOR_VECTOR (j, folder.PackStreams)
2412
+ {
2413
+ newDatabase.PackSizes.Add(db->GetStreamPackSize(startIndex + j));
2414
+ // newDatabase.PackCRCsDefined.Add(db.PackCRCsDefined[startIndex + j]);
2415
+ // newDatabase.PackCRCs.Add(db.PackCRCs[startIndex + j]);
2416
+ }
2417
+
2418
+ size_t indexStart = db->FoToCoderUnpackSizes[folderIndex];
2419
+ const size_t indexEnd = db->FoToCoderUnpackSizes[folderIndex + 1];
2420
+ for (; indexStart < indexEnd; indexStart++)
2421
+ newDatabase.CoderUnpackSizes.Add(db->CoderUnpackSizes.ConstData()[indexStart]);
2422
+ }
2423
+ else
2424
+ {
2425
+ // ---------- Repack old solid block ----------
2426
+
2427
+ CBoolVector extractStatuses;
2428
+
2429
+ CNum indexInFolder = 0;
2430
+
2431
+ if (opCallback)
2432
+ {
2433
+ RINOK(opCallback->ReportOperation(
2434
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex,
2435
+ NUpdateNotifyOp::kRepack))
2436
+ }
2437
+
2438
+ /* We could reduce data size of decoded folder, if we don't need to repack
2439
+ last files in folder. But the gain in speed is small in most cases.
2440
+ So we unpack full folder. */
2441
+
2442
+ UInt64 sizeToEncode = 0;
2443
+
2444
+ /*
2445
+ UInt64 importantUnpackSize = 0;
2446
+ unsigned numImportantFiles = 0;
2447
+ UInt64 decodeSize = 0;
2448
+ */
2449
+
2450
+ for (CNum fi = db->FolderStartFileIndex[folderIndex]; indexInFolder < numUnpackStreams; fi++)
2451
+ {
2452
+ bool needExtract = false;
2453
+ const CFileItem &file = db->Files[fi];
2454
+
2455
+ if (file.HasStream)
2456
+ {
2457
+ indexInFolder++;
2458
+ const int updateIndex = fileIndexToUpdateIndexMap[fi];
2459
+ if (updateIndex >= 0 && !updateItems[(unsigned)updateIndex].NewData)
2460
+ needExtract = true;
2461
+ // decodeSize += file.Size;
2462
+ }
2463
+
2464
+ extractStatuses.Add(needExtract);
2465
+ if (needExtract)
2466
+ {
2467
+ sizeToEncode += file.Size;
2468
+ /*
2469
+ numImportantFiles = extractStatuses.Size();
2470
+ importantUnpackSize = decodeSize;
2471
+ */
2472
+ }
2473
+ }
2474
+
2475
+ // extractStatuses.DeleteFrom(numImportantFiles);
2476
+
2477
+ unsigned startPackIndex = newDatabase.PackSizes.Size();
2478
+ UInt64 curUnpackSize;
2479
+ {
2480
+ CMyComPtr<ISequentialInStream> sbInStream;
2481
+ CRepackStreamBase *repackBase;
2482
+ CFolderInStream2 *FosSpec2 = NULL;
2483
+
2484
+ CRepackInStreamWithSizes *inStreamSizeCountSpec = new CRepackInStreamWithSizes;
2485
+ CMyComPtr<ISequentialInStream> inStreamSizeCount = inStreamSizeCountSpec;
2486
+ {
2487
+ #ifndef Z7_ST
2488
+ if (options.MultiThreadMixer)
2489
+ {
2490
+ repackBase = threadDecoder.FosSpec;
2491
+ CMyComPtr<ISequentialOutStream> sbOutStream;
2492
+ sb.CreateStreams2(sbInStream, sbOutStream);
2493
+ RINOK(sb.Create_ReInit())
2494
+
2495
+ threadDecoder.FosSpec->_stream = sbOutStream;
2496
+
2497
+ threadDecoder.InStream = inStream;
2498
+ threadDecoder.StartPos = db->ArcInfo.DataStartPosition; // db->GetFolderStreamPos(folderIndex, 0);
2499
+ threadDecoder.Folders = (const CFolders *)db;
2500
+ threadDecoder.FolderIndex = folderIndex;
2501
+
2502
+ // threadDecoder.UnpackSize = importantUnpackSize;
2503
+ // threadDecoder.send_UnpackSize = true;
2504
+ }
2505
+ else
2506
+ #endif
2507
+ {
2508
+ FosSpec2 = new CFolderInStream2;
2509
+ FosSpec2->Init();
2510
+ sbInStream = FosSpec2;
2511
+ repackBase = FosSpec2;
2512
+
2513
+ #ifndef Z7_NO_CRYPTO
2514
+ bool isEncrypted = false;
2515
+ bool passwordIsDefined = false;
2516
+ UString password;
2517
+ #endif
2518
+
2519
+ CMyComPtr<ISequentialInStream> decodedStream;
2520
+ bool dataAfterEnd_Error = false;
2521
+
2522
+ const HRESULT res = threadDecoder.Decoder.Decode(
2523
+ EXTERNAL_CODECS_LOC_VARS
2524
+ inStream,
2525
+ db->ArcInfo.DataStartPosition, // db->GetFolderStreamPos(folderIndex, 0);,
2526
+ *db, folderIndex,
2527
+ // &importantUnpackSize, // *unpackSize
2528
+ NULL, // *unpackSize : FULL unpack
2529
+
2530
+ NULL, // *outStream
2531
+ NULL, // *compressProgress
2532
+
2533
+ &decodedStream
2534
+ , dataAfterEnd_Error
2535
+
2536
+ Z7_7Z_DECODER_CRYPRO_VARS
2537
+ #ifndef Z7_ST
2538
+ , false // mtMode
2539
+ , 1 // numThreads
2540
+ , 0 // memUsage
2541
+ #endif
2542
+ );
2543
+
2544
+ RINOK(res)
2545
+ if (!decodedStream)
2546
+ return E_FAIL;
2547
+
2548
+ FosSpec2->_inStream = decodedStream;
2549
+ }
2550
+
2551
+ repackBase->_db = db;
2552
+ repackBase->_opCallback = opCallback;
2553
+ repackBase->_extractCallback = extractCallback;
2554
+
2555
+ UInt32 startIndex = db->FolderStartFileIndex[folderIndex];
2556
+ RINOK(repackBase->Init(startIndex, &extractStatuses))
2557
+
2558
+ inStreamSizeCountSpec->_db = db;
2559
+ inStreamSizeCountSpec->Init(sbInStream, startIndex, &extractStatuses);
2560
+
2561
+ #ifndef Z7_ST
2562
+ if (options.MultiThreadMixer)
2563
+ {
2564
+ WRes wres = threadDecoder.Start();
2565
+ if (wres != 0)
2566
+ return HRESULT_FROM_WIN32(wres);
2567
+ }
2568
+ #endif
2569
+ }
2570
+
2571
+ // curUnpackSize = sizeToEncode;
2572
+
2573
+ HRESULT encodeRes = encoder.Encode1(
2574
+ EXTERNAL_CODECS_LOC_VARS
2575
+ inStreamSizeCount,
2576
+ // NULL,
2577
+ &inSizeForReduce,
2578
+ sizeToEncode, // expectedDataSize
2579
+ newDatabase.Folders.AddNew(),
2580
+ // newDatabase.CoderUnpackSizes, curUnpackSize,
2581
+ archive.SeqStream, newDatabase.PackSizes, lps);
2582
+
2583
+ if (encodeRes == k_My_HRESULT_CRC_ERROR)
2584
+ return E_FAIL;
2585
+
2586
+ curUnpackSize = inStreamSizeCountSpec->GetSize();
2587
+
2588
+ if (encodeRes == S_OK)
2589
+ {
2590
+ encoder.Encode_Post(curUnpackSize, newDatabase.CoderUnpackSizes);
2591
+ }
2592
+
2593
+ #ifndef Z7_ST
2594
+ if (options.MultiThreadMixer)
2595
+ {
2596
+ // 16.00: hang was fixed : for case if decoding was not finished.
2597
+ // We close CBinderInStream and it calls CStreamBinder::CloseRead()
2598
+ inStreamSizeCount.Release();
2599
+ sbInStream.Release();
2600
+
2601
+ {
2602
+ const WRes wres = threadDecoder.WaitExecuteFinish();
2603
+ if (wres != 0)
2604
+ return HRESULT_FROM_WIN32(wres);
2605
+ }
2606
+
2607
+ const HRESULT decodeRes = threadDecoder.Result;
2608
+ // if (res == k_My_HRESULT_CRC_ERROR)
2609
+ if (decodeRes == S_FALSE || threadDecoder.dataAfterEnd_Error)
2610
+ {
2611
+ if (extractCallback)
2612
+ {
2613
+ RINOK(extractCallback->ReportExtractResult(
2614
+ NEventIndexType::kInArcIndex, db->FolderStartFileIndex[folderIndex],
2615
+ // NEventIndexType::kBlockIndex, (UInt32)folderIndex,
2616
+ (decodeRes != S_OK ?
2617
+ NExtract::NOperationResult::kDataError :
2618
+ NExtract::NOperationResult::kDataAfterEnd)))
2619
+ }
2620
+ if (decodeRes != S_OK)
2621
+ return E_FAIL;
2622
+ }
2623
+ RINOK(decodeRes)
2624
+ if (encodeRes == S_OK)
2625
+ if (sb.ProcessedSize != sizeToEncode)
2626
+ encodeRes = E_FAIL;
2627
+ }
2628
+ else
2629
+ #endif
2630
+ {
2631
+ if (FosSpec2->Result == S_FALSE)
2632
+ {
2633
+ if (extractCallback)
2634
+ {
2635
+ RINOK(extractCallback->ReportExtractResult(
2636
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex,
2637
+ NExtract::NOperationResult::kDataError))
2638
+ }
2639
+ return E_FAIL;
2640
+ }
2641
+ RINOK(FosSpec2->Result)
2642
+ }
2643
+
2644
+ RINOK(encodeRes)
2645
+ RINOK(repackBase->CheckFinishedState())
2646
+
2647
+ if (curUnpackSize != sizeToEncode)
2648
+ return E_FAIL;
2649
+ }
2650
+
2651
+ for (; startPackIndex < newDatabase.PackSizes.Size(); startPackIndex++)
2652
+ lps->OutSize += newDatabase.PackSizes[startPackIndex];
2653
+ lps->InSize += curUnpackSize;
2654
+ }
2655
+
2656
+ newDatabase.NumUnpackStreamsVector.Add(rep.NumCopyFiles);
2657
+
2658
+ CNum indexInFolder = 0;
2659
+ for (CNum fi = db->FolderStartFileIndex[folderIndex]; indexInFolder < numUnpackStreams; fi++)
2660
+ {
2661
+ if (db->Files[fi].HasStream)
2662
+ {
2663
+ indexInFolder++;
2664
+ const int updateIndex = fileIndexToUpdateIndexMap[fi];
2665
+ if (updateIndex >= 0)
2666
+ {
2667
+ const CUpdateItem &ui = updateItems[(unsigned)updateIndex];
2668
+ if (ui.NewData)
2669
+ continue;
2670
+
2671
+ UString name;
2672
+ CFileItem file;
2673
+ CFileItem2 file2;
2674
+ GetFile(*db, fi, file, file2);
2675
+
2676
+ if (ui.NewProps)
2677
+ {
2678
+ UpdateItem_To_FileItem2(ui, file2);
2679
+ file.IsDir = ui.IsDir;
2680
+ name = ui.Name;
2681
+ }
2682
+ else
2683
+ db->GetPath(fi, name);
2684
+
2685
+ /*
2686
+ file.Parent = ui.ParentFolderIndex;
2687
+ if (ui.TreeFolderIndex >= 0)
2688
+ treeFolderToArcIndex[ui.TreeFolderIndex] = newDatabase.Files.Size();
2689
+ if (totalSecureDataSize != 0)
2690
+ newDatabase.SecureIDs.Add(ui.SecureIndex);
2691
+ */
2692
+ newDatabase.AddFile(file, file2, name);
2693
+ }
2694
+ }
2695
+ }
2696
+ }
2697
+
2698
+
2699
+ // ---------- Compress files to new solid blocks ----------
2700
+
2701
+ const unsigned numFiles = group.Indices.Size();
2702
+ if (numFiles == 0)
2703
+ continue;
2704
+ CRecordVector<CRefItem> refItems;
2705
+ refItems.ClearAndSetSize(numFiles);
2706
+ // bool sortByType = (options.UseTypeSorting && isSoid); // numSolidFiles > 1
2707
+ const bool sortByType = options.UseTypeSorting;
2708
+
2709
+ unsigned i;
2710
+
2711
+ for (i = 0; i < numFiles; i++)
2712
+ refItems[i].Construct(group.Indices[i], updateItems[group.Indices[i]], sortByType);
2713
+
2714
+ CSortParam sortParam;
2715
+ // sortParam.TreeFolders = &treeFolders;
2716
+ sortParam.SortByType = sortByType;
2717
+ refItems.Sort(CompareUpdateItems, (void *)&sortParam);
2718
+
2719
+ CObjArray<UInt32> indices(numFiles);
2720
+
2721
+ for (i = 0; i < numFiles; i++)
2722
+ {
2723
+ const UInt32 index = refItems[i].Index;
2724
+ indices[i] = index;
2725
+ /*
2726
+ const CUpdateItem &ui = updateItems[index];
2727
+ CFileItem file;
2728
+ if (ui.NewProps)
2729
+ UpdateItem_To_FileItem(ui, file);
2730
+ else
2731
+ file = db.Files[ui.IndexInArchive];
2732
+ if (file.IsAnti || file.IsDir)
2733
+ return E_FAIL;
2734
+ newDatabase.Files.Add(file);
2735
+ */
2736
+ }
2737
+
2738
+ for (i = 0; i < numFiles;)
2739
+ {
2740
+ UInt64 totalSize = 0;
2741
+ unsigned numSubFiles;
2742
+
2743
+ const wchar_t *prevExtension = NULL;
2744
+
2745
+ for (numSubFiles = 0; i + numSubFiles < numFiles && numSubFiles < numSolidFiles; numSubFiles++)
2746
+ {
2747
+ const CUpdateItem &ui = updateItems[indices[i + numSubFiles]];
2748
+ totalSize += ui.Size;
2749
+ if (totalSize > options.NumSolidBytes)
2750
+ break;
2751
+ if (options.SolidExtension)
2752
+ {
2753
+ const int slashPos = ui.Name.ReverseFind_PathSepar();
2754
+ const int dotPos = ui.Name.ReverseFind_Dot();
2755
+ const wchar_t *ext = ui.Name.Ptr(dotPos <= slashPos ? ui.Name.Len() : (unsigned)(dotPos + 1));
2756
+ if (numSubFiles == 0)
2757
+ prevExtension = ext;
2758
+ else if (!StringsAreEqualNoCase(ext, prevExtension))
2759
+ break;
2760
+ }
2761
+ }
2762
+
2763
+ if (numSubFiles < 1)
2764
+ numSubFiles = 1;
2765
+
2766
+ RINOK(lps->SetCur())
2767
+
2768
+ /*
2769
+ const unsigned folderIndex = newDatabase.NumUnpackStreamsVector.Size();
2770
+
2771
+ if (opCallback)
2772
+ {
2773
+ RINOK(opCallback->ReportOperation(
2774
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex,
2775
+ NUpdateNotifyOp::kAdd));
2776
+ }
2777
+ */
2778
+
2779
+
2780
+ CMyComPtr2_Create<ISequentialInStream, CFolderInStream> inStreamSpec; // solidInStream;
2781
+
2782
+ // inStreamSpec->_reportArcProp = reportArcProp;
2783
+
2784
+ inStreamSpec->Need_CTime = options.Need_CTime;
2785
+ inStreamSpec->Need_ATime = options.Need_ATime;
2786
+ inStreamSpec->Need_MTime = options.Need_MTime;
2787
+ inStreamSpec->Need_Attrib = options.Need_Attrib;
2788
+ // inStreamSpec->Need_Crc = options.Need_Crc;
2789
+
2790
+ inStreamSpec->Init(updateCallback, &indices[i], numSubFiles);
2791
+
2792
+ unsigned startPackIndex = newDatabase.PackSizes.Size();
2793
+ // UInt64 curFolderUnpackSize = totalSize;
2794
+ // curFolderUnpackSize = (UInt64)(Int64)-1; // for debug
2795
+ const UInt64 expectedDataSize = totalSize;
2796
+
2797
+ // const unsigned folderIndex_New = newDatabase.Folders.Size();
2798
+
2799
+ RINOK(encoder.Encode1(
2800
+ EXTERNAL_CODECS_LOC_VARS
2801
+ inStreamSpec,
2802
+ // NULL,
2803
+ &inSizeForReduce,
2804
+ expectedDataSize, // expected size
2805
+ newDatabase.Folders.AddNew(),
2806
+ // newDatabase.CoderUnpackSizes, curFolderUnpackSize,
2807
+ archive.SeqStream, newDatabase.PackSizes, lps))
2808
+
2809
+ if (!inStreamSpec->WasFinished())
2810
+ return E_FAIL;
2811
+
2812
+ /*
2813
+ if (inStreamSpec->Need_FolderCrc)
2814
+ newDatabase.FolderUnpackCRCs.SetItem(folderIndex_New,
2815
+ true, inStreamSpec->GetFolderCrc());
2816
+ */
2817
+
2818
+ const UInt64 curFolderUnpackSize = inStreamSpec->Get_TotalSize_for_Coder();
2819
+ encoder.Encode_Post(curFolderUnpackSize, newDatabase.CoderUnpackSizes);
2820
+
2821
+ UInt64 packSize = 0;
2822
+ // const UInt32 numStreams = newDatabase.PackSizes.Size() - startPackIndex;
2823
+ for (; startPackIndex < newDatabase.PackSizes.Size(); startPackIndex++)
2824
+ packSize += newDatabase.PackSizes[startPackIndex];
2825
+ lps->OutSize += packSize;
2826
+
2827
+ // for ()
2828
+ // newDatabase.PackCRCsDefined.Add(false);
2829
+ // newDatabase.PackCRCs.Add(0);
2830
+
2831
+ CNum numUnpackStreams = 0;
2832
+ UInt64 skippedSize = 0;
2833
+ UInt64 procSize = 0;
2834
+ // unsigned numProcessedFiles = 0;
2835
+
2836
+ for (unsigned subIndex = 0; subIndex < numSubFiles; subIndex++)
2837
+ {
2838
+ const CUpdateItem &ui = updateItems[indices[i + subIndex]];
2839
+ CFileItem file;
2840
+ CFileItem2 file2;
2841
+ UString name;
2842
+ if (ui.NewProps)
2843
+ {
2844
+ UpdateItem_To_FileItem(ui, file, file2);
2845
+ name = ui.Name;
2846
+ }
2847
+ else
2848
+ {
2849
+ GetFile(*db, (unsigned)ui.IndexInArchive, file, file2);
2850
+ db->GetPath((unsigned)ui.IndexInArchive, name);
2851
+ }
2852
+ if (file2.IsAnti || file.IsDir)
2853
+ return E_FAIL;
2854
+
2855
+ /*
2856
+ CFileItem &file = newDatabase.Files[
2857
+ startFileIndexInDatabase + i + subIndex];
2858
+ */
2859
+ if (!inStreamSpec->Processed[subIndex])
2860
+ {
2861
+ // we don't add file here
2862
+ skippedSize += ui.Size;
2863
+ continue; // comment it for debug
2864
+ // name += ".locked"; // for debug
2865
+ }
2866
+
2867
+ // if (inStreamSpec->Need_Crc)
2868
+ file.Crc = inStreamSpec->CRCs[subIndex];
2869
+ file.Size = inStreamSpec->Sizes[subIndex];
2870
+
2871
+ procSize += file.Size;
2872
+ // if (file.Size >= 0) // for debug: test purposes
2873
+ if (file.Size != 0)
2874
+ {
2875
+ file.CrcDefined = true; // inStreamSpec->Need_Crc;
2876
+ file.HasStream = true;
2877
+ numUnpackStreams++;
2878
+ }
2879
+ else
2880
+ {
2881
+ file.CrcDefined = false;
2882
+ file.HasStream = false;
2883
+ }
2884
+
2885
+ if (inStreamSpec->TimesDefined[subIndex])
2886
+ {
2887
+ if (inStreamSpec->Need_CTime)
2888
+ { file2.CTimeDefined = true; file2.CTime = inStreamSpec->CTimes[subIndex]; }
2889
+ if (inStreamSpec->Need_ATime
2890
+ // && !ui.ATime_WasReadByAnalysis
2891
+ )
2892
+ { file2.ATimeDefined = true; file2.ATime = inStreamSpec->ATimes[subIndex]; }
2893
+ if (inStreamSpec->Need_MTime)
2894
+ { file2.MTimeDefined = true; file2.MTime = inStreamSpec->MTimes[subIndex]; }
2895
+ if (inStreamSpec->Need_Attrib)
2896
+ {
2897
+ file2.AttribDefined = true;
2898
+ file2.Attrib = inStreamSpec->Attribs[subIndex];
2899
+ }
2900
+ }
2901
+
2902
+ /*
2903
+ file.Parent = ui.ParentFolderIndex;
2904
+ if (ui.TreeFolderIndex >= 0)
2905
+ treeFolderToArcIndex[ui.TreeFolderIndex] = newDatabase.Files.Size();
2906
+ if (totalSecureDataSize != 0)
2907
+ newDatabase.SecureIDs.Add(ui.SecureIndex);
2908
+ */
2909
+ /*
2910
+ if (reportArcProp)
2911
+ {
2912
+ RINOK(ReportItemProps(reportArcProp, ui.IndexInClient, file.Size,
2913
+ file.CrcDefined ? &file.Crc : NULL))
2914
+ }
2915
+ */
2916
+
2917
+ // numProcessedFiles++;
2918
+ newDatabase.AddFile(file, file2, name);
2919
+ }
2920
+
2921
+ /*
2922
+ // for debug:
2923
+ // we can write crc to folders area, if folder contains only one file
2924
+ if (numUnpackStreams == 1 && numSubFiles == 1)
2925
+ {
2926
+ const CFileItem &file = newDatabase.Files.Back();
2927
+ if (file.CrcDefined)
2928
+ newDatabase.FolderUnpackCRCs.SetItem(folderIndex_New, true, file.Crc);
2929
+ }
2930
+ */
2931
+
2932
+ /*
2933
+ // it's optional check to ensure that sizes are correct
2934
+ if (inStreamSpec->TotalSize_for_Coder != curFolderUnpackSize)
2935
+ return E_FAIL;
2936
+ */
2937
+ // if (inStreamSpec->AlignLog == 0)
2938
+ {
2939
+ if (procSize != curFolderUnpackSize)
2940
+ return E_FAIL;
2941
+ }
2942
+ // else
2943
+ {
2944
+ /*
2945
+ {
2946
+ const CFolder &old = newDatabase.Folders.Back();
2947
+ CFolder &folder = newDatabase.Folders.AddNew();
2948
+ {
2949
+ const unsigned numBonds = old.Bonds.Size();
2950
+ folder.Bonds.SetSize(numBonds + 1);
2951
+ for (unsigned k = 0; k < numBonds; k++)
2952
+ folder.Bonds[k] = old.Bonds[k];
2953
+ CBond &bond = folder.Bonds[numBonds];
2954
+ bond.PackIndex = 0;
2955
+ bond.UnpackIndex = 0;
2956
+ }
2957
+ {
2958
+ const unsigned numCoders = old.Coders.Size();
2959
+ folder.Coders.SetSize(numCoders + 1);
2960
+ for (unsigned k = 0; k < numCoders; k++)
2961
+ folder.Coders[k] = old.Coders[k];
2962
+ CCoderInfo &cod = folder.Coders[numCoders];
2963
+ cod.Props.Alloc(1);
2964
+ cod.Props[0] = (Byte)inStreamSpec->AlignLog;
2965
+ cod.NumStreams = 1;
2966
+ }
2967
+ {
2968
+ const unsigned numPackStreams = old.Coders.Size();
2969
+ folder.Coders.SetSize(numPackStreams);
2970
+ for (unsigned k = 0; k < numPackStreams; k++)
2971
+ folder.PackStreams[k] = old.PackStreams[k];
2972
+ }
2973
+ }
2974
+ newDatabase.Folders.Delete(newDatabase.Folders.Size() - 2);
2975
+ */
2976
+ }
2977
+
2978
+
2979
+ lps->InSize += procSize;
2980
+ // lps->InSize += curFolderUnpackSize;
2981
+
2982
+ // numUnpackStreams = 0 is very bad case for locked files
2983
+ // v3.13 doesn't understand it.
2984
+ newDatabase.NumUnpackStreamsVector.Add(numUnpackStreams);
2985
+ i += numSubFiles;
2986
+
2987
+ if (skippedSize != 0 && complexity >= skippedSize)
2988
+ {
2989
+ complexity -= skippedSize;
2990
+ RINOK(updateCallback->SetTotal(complexity))
2991
+ }
2992
+
2993
+ /*
2994
+ if (reportArcProp)
2995
+ {
2996
+ PROPVARIANT prop;
2997
+ prop.vt = VT_EMPTY;
2998
+ prop.wReserved1 = 0;
2999
+ {
3000
+ NWindows::NCOM::PropVarEm_Set_UInt32(&prop, numProcessedFiles);
3001
+ RINOK(reportArcProp->ReportProp(
3002
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex, kpidNumSubFiles, &prop));
3003
+ }
3004
+ {
3005
+ NWindows::NCOM::PropVarEm_Set_UInt64(&prop, curFolderUnpackSize);
3006
+ RINOK(reportArcProp->ReportProp(
3007
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex, kpidSize, &prop));
3008
+ }
3009
+ {
3010
+ NWindows::NCOM::PropVarEm_Set_UInt64(&prop, packSize);
3011
+ RINOK(reportArcProp->ReportProp(
3012
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex, kpidPackSize, &prop));
3013
+ }
3014
+ {
3015
+ NWindows::NCOM::PropVarEm_Set_UInt32(&prop, numStreams);
3016
+ RINOK(reportArcProp->ReportProp(
3017
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex, kpidNumStreams, &prop));
3018
+ }
3019
+ RINOK(reportArcProp->ReportFinished(NEventIndexType::kBlockIndex, (UInt32)folderIndex, NUpdate::NOperationResult::kOK));
3020
+ }
3021
+ */
3022
+ /*
3023
+ if (opCallback)
3024
+ {
3025
+ RINOK(opCallback->ReportOperation(
3026
+ NEventIndexType::kBlockIndex, (UInt32)folderIndex,
3027
+ NUpdateNotifyOp::kOpFinished));
3028
+ }
3029
+ */
3030
+ }
3031
+ }
3032
+
3033
+ RINOK(lps->SetCur())
3034
+
3035
+ /*
3036
+ fileIndexToUpdateIndexMap.ClearAndFree();
3037
+ groups.ClearAndFree();
3038
+ */
3039
+
3040
+ /*
3041
+ for (i = 0; i < newDatabase.Files.Size(); i++)
3042
+ {
3043
+ CFileItem &file = newDatabase.Files[i];
3044
+ file.Parent = treeFolderToArcIndex[file.Parent];
3045
+ }
3046
+
3047
+ if (totalSecureDataSize != 0)
3048
+ {
3049
+ newDatabase.SecureBuf.SetCapacity(totalSecureDataSize);
3050
+ size_t pos = 0;
3051
+ newDatabase.SecureSizes.Reserve(secureBlocks.Sorted.Size());
3052
+ for (i = 0; i < secureBlocks.Sorted.Size(); i++)
3053
+ {
3054
+ const CByteBuffer &buf = secureBlocks.Bufs[secureBlocks.Sorted[i]];
3055
+ size_t size = buf.GetCapacity();
3056
+ if (size != 0)
3057
+ memcpy(newDatabase.SecureBuf + pos, buf, size);
3058
+ newDatabase.SecureSizes.Add((UInt32)size);
3059
+ pos += size;
3060
+ }
3061
+ }
3062
+ */
3063
+
3064
+ {
3065
+ const unsigned numFolders = newDatabase.Folders.Size();
3066
+ if (newDatabase.NumUnpackStreamsVector.Size() != numFolders
3067
+ || newDatabase.FolderUnpackCRCs.Defs.Size() > numFolders)
3068
+ return E_FAIL;
3069
+ newDatabase.FolderUnpackCRCs.if_NonEmpty_FillResidue_with_false(numFolders);
3070
+ }
3071
+
3072
+ updateItems.ClearAndFree();
3073
+ newDatabase.ReserveDown();
3074
+
3075
+ if (opCallback)
3076
+ RINOK(opCallback->ReportOperation(NEventIndexType::kNoIndex, (UInt32)(Int32)-1, NUpdateNotifyOp::kHeader))
3077
+
3078
+ RINOK(archive.WriteDatabase(EXTERNAL_CODECS_LOC_VARS
3079
+ newDatabase, options.HeaderMethod, options.HeaderOptions))
3080
+
3081
+ if (v_StreamSetRestriction)
3082
+ RINOK(v_StreamSetRestriction->SetRestriction(0, 0))
3083
+
3084
+ return S_OK;
3085
+ }
3086
+
3087
+ }}