7zip-native 0.0.0-stage → 0.0.5

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 (1327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -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 +528 -0
  10. package/dist/index.d.cts +63 -0
  11. package/dist/index.d.mts +63 -0
  12. package/dist/index.d.ts +63 -0
  13. package/dist/index.mjs +524 -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/darwin-arm64/7zip_native.node +0 -0
  19. package/prebuilds/darwin-arm64/lib7z.dylib +0 -0
  20. package/prebuilds/darwin-x64/7zip_native.node +0 -0
  21. package/prebuilds/darwin-x64/lib7z.dylib +0 -0
  22. package/prebuilds/linux-arm/7z.so +0 -0
  23. package/prebuilds/linux-arm/7zip_native.node +0 -0
  24. package/prebuilds/linux-arm64/7z.so +0 -0
  25. package/prebuilds/linux-arm64/7zip_native.node +0 -0
  26. package/prebuilds/linux-ia32/7z.so +0 -0
  27. package/prebuilds/linux-ia32/7zip_native.node +0 -0
  28. package/prebuilds/linux-x64/7z.so +0 -0
  29. package/prebuilds/linux-x64/7zip_native.node +0 -0
  30. package/prebuilds/win32-arm64/7z.dll +0 -0
  31. package/prebuilds/win32-arm64/7zip_native.node +0 -0
  32. package/prebuilds/win32-x64/7z.dll +0 -0
  33. package/prebuilds/win32-x64/7zip_native.node +0 -0
  34. package/vendor/7zip/.gitattributes +2 -0
  35. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  36. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  37. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  38. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  39. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  40. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  41. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  42. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  43. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  44. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  45. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  46. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  47. package/vendor/7zip/C/7z.h +204 -0
  48. package/vendor/7zip/C/7zAlloc.c +89 -0
  49. package/vendor/7zip/C/7zAlloc.h +19 -0
  50. package/vendor/7zip/C/7zArcIn.c +1701 -0
  51. package/vendor/7zip/C/7zBuf.c +36 -0
  52. package/vendor/7zip/C/7zBuf.h +35 -0
  53. package/vendor/7zip/C/7zBuf2.c +52 -0
  54. package/vendor/7zip/C/7zCrc.c +420 -0
  55. package/vendor/7zip/C/7zCrc.h +28 -0
  56. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  57. package/vendor/7zip/C/7zDec.c +672 -0
  58. package/vendor/7zip/C/7zFile.c +443 -0
  59. package/vendor/7zip/C/7zFile.h +91 -0
  60. package/vendor/7zip/C/7zStream.c +199 -0
  61. package/vendor/7zip/C/7zTypes.h +600 -0
  62. package/vendor/7zip/C/7zVersion.h +27 -0
  63. package/vendor/7zip/C/7zVersion.rc +55 -0
  64. package/vendor/7zip/C/7zWindows.h +107 -0
  65. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  66. package/vendor/7zip/C/Aes.c +429 -0
  67. package/vendor/7zip/C/Aes.h +60 -0
  68. package/vendor/7zip/C/AesOpt.c +1002 -0
  69. package/vendor/7zip/C/Alloc.c +774 -0
  70. package/vendor/7zip/C/Alloc.h +76 -0
  71. package/vendor/7zip/C/Asm_c.mak +12 -0
  72. package/vendor/7zip/C/Bcj2.c +290 -0
  73. package/vendor/7zip/C/Bcj2.h +332 -0
  74. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  75. package/vendor/7zip/C/Blake2.h +105 -0
  76. package/vendor/7zip/C/Blake2s.c +2672 -0
  77. package/vendor/7zip/C/Bra.c +709 -0
  78. package/vendor/7zip/C/Bra.h +105 -0
  79. package/vendor/7zip/C/Bra86.c +187 -0
  80. package/vendor/7zip/C/BraIA64.c +14 -0
  81. package/vendor/7zip/C/BwtSort.c +630 -0
  82. package/vendor/7zip/C/BwtSort.h +27 -0
  83. package/vendor/7zip/C/Compiler.h +287 -0
  84. package/vendor/7zip/C/CpuArch.c +970 -0
  85. package/vendor/7zip/C/CpuArch.h +719 -0
  86. package/vendor/7zip/C/Delta.c +169 -0
  87. package/vendor/7zip/C/Delta.h +19 -0
  88. package/vendor/7zip/C/DllSecur.c +99 -0
  89. package/vendor/7zip/C/DllSecur.h +20 -0
  90. package/vendor/7zip/C/HuffEnc.c +361 -0
  91. package/vendor/7zip/C/HuffEnc.h +23 -0
  92. package/vendor/7zip/C/LzFind.c +1746 -0
  93. package/vendor/7zip/C/LzFind.h +160 -0
  94. package/vendor/7zip/C/LzFindMt.c +1422 -0
  95. package/vendor/7zip/C/LzFindMt.h +114 -0
  96. package/vendor/7zip/C/LzFindOpt.c +578 -0
  97. package/vendor/7zip/C/LzHash.h +34 -0
  98. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  99. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  100. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  101. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  102. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  103. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  104. package/vendor/7zip/C/Lzma86.h +111 -0
  105. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  106. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  107. package/vendor/7zip/C/LzmaDec.c +1367 -0
  108. package/vendor/7zip/C/LzmaDec.h +237 -0
  109. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  110. package/vendor/7zip/C/LzmaEnc.h +85 -0
  111. package/vendor/7zip/C/LzmaLib.c +42 -0
  112. package/vendor/7zip/C/LzmaLib.h +138 -0
  113. package/vendor/7zip/C/Md5.c +206 -0
  114. package/vendor/7zip/C/Md5.h +34 -0
  115. package/vendor/7zip/C/MtCoder.c +604 -0
  116. package/vendor/7zip/C/MtCoder.h +144 -0
  117. package/vendor/7zip/C/MtDec.c +1124 -0
  118. package/vendor/7zip/C/MtDec.h +202 -0
  119. package/vendor/7zip/C/Ppmd.h +169 -0
  120. package/vendor/7zip/C/Ppmd7.c +1131 -0
  121. package/vendor/7zip/C/Ppmd7.h +181 -0
  122. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  123. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  124. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  125. package/vendor/7zip/C/Ppmd8.c +1574 -0
  126. package/vendor/7zip/C/Ppmd8.h +181 -0
  127. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  128. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  129. package/vendor/7zip/C/Precomp.h +127 -0
  130. package/vendor/7zip/C/RotateDefs.h +50 -0
  131. package/vendor/7zip/C/Sha1.c +441 -0
  132. package/vendor/7zip/C/Sha1.h +86 -0
  133. package/vendor/7zip/C/Sha1Opt.c +424 -0
  134. package/vendor/7zip/C/Sha256.c +492 -0
  135. package/vendor/7zip/C/Sha256.h +86 -0
  136. package/vendor/7zip/C/Sha256Opt.c +451 -0
  137. package/vendor/7zip/C/Sha3.c +359 -0
  138. package/vendor/7zip/C/Sha3.h +36 -0
  139. package/vendor/7zip/C/Sha512.c +711 -0
  140. package/vendor/7zip/C/Sha512.h +86 -0
  141. package/vendor/7zip/C/Sha512Opt.c +395 -0
  142. package/vendor/7zip/C/Sort.c +268 -0
  143. package/vendor/7zip/C/Sort.h +15 -0
  144. package/vendor/7zip/C/SwapBytes.c +835 -0
  145. package/vendor/7zip/C/SwapBytes.h +17 -0
  146. package/vendor/7zip/C/Threads.c +826 -0
  147. package/vendor/7zip/C/Threads.h +260 -0
  148. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  149. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  150. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  151. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  152. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  153. package/vendor/7zip/C/Util/7z/makefile +44 -0
  154. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  155. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  156. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  157. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  158. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  159. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  160. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  161. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  162. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  163. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  164. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  165. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  166. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  167. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  168. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  169. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  170. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  171. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  172. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  173. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  174. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  175. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  176. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  177. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  178. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  179. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  180. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  181. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  182. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  183. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  184. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  185. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  186. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  187. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  188. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  189. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  190. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  191. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  192. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  193. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  194. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  195. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  196. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  197. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  198. package/vendor/7zip/C/Xxh64.c +389 -0
  199. package/vendor/7zip/C/Xxh64.h +50 -0
  200. package/vendor/7zip/C/Xz.c +92 -0
  201. package/vendor/7zip/C/Xz.h +542 -0
  202. package/vendor/7zip/C/XzCrc64.c +140 -0
  203. package/vendor/7zip/C/XzCrc64.h +26 -0
  204. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  205. package/vendor/7zip/C/XzDec.c +2865 -0
  206. package/vendor/7zip/C/XzEnc.c +1374 -0
  207. package/vendor/7zip/C/XzEnc.h +62 -0
  208. package/vendor/7zip/C/XzIn.c +385 -0
  209. package/vendor/7zip/C/ZstdDec.c +4067 -0
  210. package/vendor/7zip/C/ZstdDec.h +173 -0
  211. package/vendor/7zip/C/var_clang.mak +11 -0
  212. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  213. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  214. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  215. package/vendor/7zip/C/var_gcc.mak +12 -0
  216. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  217. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  218. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  219. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  220. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  221. package/vendor/7zip/C/warn_clang.mak +1 -0
  222. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  223. package/vendor/7zip/C/warn_gcc.mak +51 -0
  224. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  225. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  226. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  245. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  246. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  247. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  248. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  249. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  250. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  251. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  252. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  253. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  254. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  255. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  256. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  257. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  258. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  259. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  260. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  261. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  264. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  265. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  266. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  271. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  285. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  293. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  294. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  295. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  296. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  297. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  298. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  299. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  300. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  301. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  302. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  303. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  304. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  305. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  306. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  307. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  308. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  309. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  310. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  311. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  312. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  313. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  314. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  315. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  316. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  317. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  318. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  319. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  320. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  321. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  322. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  323. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  324. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  348. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  349. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  350. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  351. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  352. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  353. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  354. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  355. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  362. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  363. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  364. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  365. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  366. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  367. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  368. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  369. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  377. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  378. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  379. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  380. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  381. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  382. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  391. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  392. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  393. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  394. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  395. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  396. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  402. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  403. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  404. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  405. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  406. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  414. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  415. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  416. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  417. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  418. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  419. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  420. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  428. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  429. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  430. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  431. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  435. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  436. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  437. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  438. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  439. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  440. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  441. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  442. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  443. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  444. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  445. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  446. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  447. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  448. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  449. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  450. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  451. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  528. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  529. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  530. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  531. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  532. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  533. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  534. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  535. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  536. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  537. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  538. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  539. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  540. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  541. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  542. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  543. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  544. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  545. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  546. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  547. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  548. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  549. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  550. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  551. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  552. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  553. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  554. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  555. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  556. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  557. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  558. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  559. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  560. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  561. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  562. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  563. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  564. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  565. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  566. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  567. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  568. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  569. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  570. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  571. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  572. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  573. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  574. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  575. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  576. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  577. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  578. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  579. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  580. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  581. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  582. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  583. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  584. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  585. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  586. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  587. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  588. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  589. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  590. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  591. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  600. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  602. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  603. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  604. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  605. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  606. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  607. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  608. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  609. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  610. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  611. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  612. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  613. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  614. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  615. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  616. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  617. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  618. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  619. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  620. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  621. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  622. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  623. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  624. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  625. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  626. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  627. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  628. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  629. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  630. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  631. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  632. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  633. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  634. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  639. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  641. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  643. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  644. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  645. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  646. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  647. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  648. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  649. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  650. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  651. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  652. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  654. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  655. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  657. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  658. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  659. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  660. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  661. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  662. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  663. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  664. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  665. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  666. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  667. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  668. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  669. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  670. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  671. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  672. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  673. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  674. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  675. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  676. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  679. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  680. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  681. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  682. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  683. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  684. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  685. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  686. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  687. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  688. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  689. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  690. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  691. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  692. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  693. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  694. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  695. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  696. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  712. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  713. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  714. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  715. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  716. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  717. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  718. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  719. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  720. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  721. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  722. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  723. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  724. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  725. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  726. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  727. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  728. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  729. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  730. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  731. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  732. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  733. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  734. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  735. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  736. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  737. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  738. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  739. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  740. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  741. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  742. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  743. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  744. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  745. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  746. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  747. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  748. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  749. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  750. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  751. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  752. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  753. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  754. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  755. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  756. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  757. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  758. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  759. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  760. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  761. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  762. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  804. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  805. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  806. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  807. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  808. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  809. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  810. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  811. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  812. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  813. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  814. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  815. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  816. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  817. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  833. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  834. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  835. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  836. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  837. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  838. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  839. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  840. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  841. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  842. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  843. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  844. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  845. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  846. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  853. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  854. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  855. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  856. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  857. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  858. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  859. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  860. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  861. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  862. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  863. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  864. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  865. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  866. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  879. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  880. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  881. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  882. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  883. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  884. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  885. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  886. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  887. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  888. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  889. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  890. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  891. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  892. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1076. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1077. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1078. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1079. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1080. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1081. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1082. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1083. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1084. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1085. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1086. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1087. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1088. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1089. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1114. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1115. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1116. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1117. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1118. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1119. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1120. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1121. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1122. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1123. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1124. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1125. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1126. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1127. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1128. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1129. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1130. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1131. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1132. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1133. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1134. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1135. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1136. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1137. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1138. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1140. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1141. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1142. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1143. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1144. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1145. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1146. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1147. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1148. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1149. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1150. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1151. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1152. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1153. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1154. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1155. package/vendor/7zip/CPP/Build.mak +259 -0
  1156. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1157. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1158. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1159. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1160. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1161. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1162. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1163. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1164. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1165. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1166. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1167. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1168. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1169. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1170. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1171. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1172. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1173. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1174. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1175. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1176. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1177. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1178. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1179. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1180. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1181. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1182. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1183. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1184. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1185. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1186. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1187. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1188. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1189. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1190. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1191. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1192. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1193. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1194. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1195. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1196. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1197. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1198. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1199. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1200. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1201. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1202. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1203. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1204. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1205. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1206. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1207. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1208. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1209. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1210. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1211. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1212. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1213. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1214. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1215. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1216. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1217. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1218. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1219. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1220. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1221. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1222. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1223. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1224. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1225. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1226. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1227. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1228. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1229. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1230. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1231. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1232. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1233. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1234. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1235. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1236. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1237. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1238. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1241. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1242. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1243. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1244. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1245. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1246. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1247. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1248. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1249. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1250. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1251. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1252. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1253. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1254. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1255. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1256. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1257. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1258. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1259. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1260. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1261. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1262. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1263. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1264. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1265. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1266. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1267. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1268. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1269. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1270. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1271. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1272. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1273. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1274. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1275. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1276. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1277. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1278. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1279. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1280. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1281. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1282. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1283. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1284. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1285. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1286. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1287. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1288. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1289. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1290. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1291. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1292. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1293. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1294. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1295. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1296. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1297. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1298. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1299. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1300. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1301. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1302. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1303. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1304. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1305. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1306. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1307. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1308. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1309. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1310. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1311. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1312. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1313. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1314. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1315. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1316. package/vendor/7zip/DOC/7zC.txt +187 -0
  1317. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1318. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1319. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1320. package/vendor/7zip/DOC/License.txt +151 -0
  1321. package/vendor/7zip/DOC/Methods.txt +177 -0
  1322. package/vendor/7zip/DOC/copying.txt +502 -0
  1323. package/vendor/7zip/DOC/lzma.txt +345 -0
  1324. package/vendor/7zip/DOC/readme.txt +299 -0
  1325. package/vendor/7zip/DOC/src-history.txt +884 -0
  1326. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1327. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,3690 @@
1
+ // OpenArchive.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ // #define SHOW_DEBUG_INFO
6
+
7
+ #ifdef SHOW_DEBUG_INFO
8
+ #include <stdio.h>
9
+ #endif
10
+
11
+ #include "../../../../C/CpuArch.h"
12
+
13
+ #include "../../../Common/ComTry.h"
14
+ #include "../../../Common/IntToString.h"
15
+ #include "../../../Common/StringConvert.h"
16
+ #include "../../../Common/StringToInt.h"
17
+ #include "../../../Common/UTFConvert.h"
18
+ #include "../../../Common/Wildcard.h"
19
+
20
+ #include "../../../Windows/FileDir.h"
21
+
22
+ #include "../../Common/FileStreams.h"
23
+ #include "../../Common/LimitedStreams.h"
24
+ #include "../../Common/ProgressUtils.h"
25
+ #include "../../Common/StreamUtils.h"
26
+
27
+ #include "../../Compress/CopyCoder.h"
28
+
29
+ #include "DefaultName.h"
30
+ #include "OpenArchive.h"
31
+
32
+ #ifndef Z7_SFX
33
+ #include "SetProperties.h"
34
+ #endif
35
+
36
+ #ifndef Z7_SFX
37
+ #ifdef SHOW_DEBUG_INFO
38
+ #define PRF(x) x
39
+ #else
40
+ #define PRF(x)
41
+ #endif
42
+ #endif
43
+
44
+ // increase it, if you need to support larger SFX stubs
45
+ static const UInt64 kMaxCheckStartPosition = 1 << 23;
46
+
47
+ /*
48
+ Open:
49
+ - formatIndex >= 0 (exact Format)
50
+ 1) Open with main type. Archive handler is allowed to use archive start finder.
51
+ Warning, if there is tail.
52
+
53
+ - formatIndex = -1 (Parser:0) (default)
54
+ - same as #1 but doesn't return Parser
55
+
56
+ - formatIndex = -2 (#1)
57
+ - file has supported extension (like a.7z)
58
+ Open with that main type (only starting from start of file).
59
+ - open OK:
60
+ - if there is no tail - return OK
61
+ - if there is tail:
62
+ - archive is not "Self Exe" - return OK with Warning, that there is tail
63
+ - archive is "Self Exe"
64
+ ignore "Self Exe" stub, and tries to open tail
65
+ - tail can be open as archive - shows that archive and stub size property.
66
+ - tail can't be open as archive - shows Parser ???
67
+ - open FAIL:
68
+ Try to open with all other types from offset 0 only.
69
+ If some open type is OK and physical archive size is uequal or larger
70
+ than file size, then return that archive with warning that cannot be open as [extension type].
71
+ If extension was EXE, it will try to open as unknown_extension case
72
+ - file has unknown extension (like a.hhh)
73
+ It tries to open via parser code.
74
+ - if there is full archive or tail archive and unknown block or "Self Exe"
75
+ at front, it shows tail archive and stub size property.
76
+ - in another cases, if there is some archive inside file, it returns parser/
77
+ - in another cases, it retuens S_FALSE
78
+
79
+
80
+ - formatIndex = -3 (#2)
81
+ - same as #1, but
82
+ - stub (EXE) + archive is open in Parser
83
+
84
+ - formatIndex = -4 (#3)
85
+ - returns only Parser. skip full file archive. And show other sub-archives
86
+
87
+ - formatIndex = -5 (#4)
88
+ - returns only Parser. skip full file archive. And show other sub-archives for each byte pos
89
+
90
+ */
91
+
92
+
93
+
94
+
95
+ using namespace NWindows;
96
+
97
+ /*
98
+ #ifdef Z7_SFX
99
+ #define OPEN_PROPS_PARAM
100
+ #else
101
+ #define OPEN_PROPS_PARAM , props
102
+ #endif
103
+ */
104
+
105
+ /*
106
+ CArc::~CArc()
107
+ {
108
+ GetRawProps.Release();
109
+ Archive.Release();
110
+ printf("\nCArc::~CArc()\n");
111
+ }
112
+ */
113
+
114
+ #ifndef Z7_SFX
115
+
116
+ namespace NArchive {
117
+ namespace NParser {
118
+
119
+ struct CParseItem
120
+ {
121
+ UInt64 Offset;
122
+ UInt64 Size;
123
+ // UInt64 OkSize;
124
+ UString Name;
125
+ UString Extension;
126
+ FILETIME FileTime;
127
+ UString Comment;
128
+ UString ArcType;
129
+
130
+ bool FileTime_Defined;
131
+ bool UnpackSize_Defined;
132
+ bool NumSubDirs_Defined;
133
+ bool NumSubFiles_Defined;
134
+
135
+ bool IsSelfExe;
136
+ bool IsNotArcType;
137
+
138
+ UInt64 UnpackSize;
139
+ UInt64 NumSubDirs;
140
+ UInt64 NumSubFiles;
141
+
142
+ int FormatIndex;
143
+
144
+ bool LenIsUnknown;
145
+
146
+ CParseItem():
147
+ // OkSize(0),
148
+ FileTime_Defined(false),
149
+ UnpackSize_Defined(false),
150
+ NumSubDirs_Defined(false),
151
+ NumSubFiles_Defined(false),
152
+ IsSelfExe(false),
153
+ IsNotArcType(false),
154
+ LenIsUnknown(false)
155
+ {}
156
+
157
+ /*
158
+ bool IsEqualTo(const CParseItem &item) const
159
+ {
160
+ return Offset == item.Offset && Size == item.Size;
161
+ }
162
+ */
163
+
164
+ void NormalizeOffset()
165
+ {
166
+ if ((Int64)Offset < 0)
167
+ {
168
+ Size += Offset;
169
+ // OkSize += Offset;
170
+ Offset = 0;
171
+ }
172
+ }
173
+ };
174
+
175
+ Z7_CLASS_IMP_CHandler_IInArchive_1(
176
+ IInArchiveGetStream
177
+ )
178
+ public:
179
+ CObjectVector<CParseItem> _items;
180
+ UInt64 _maxEndOffset;
181
+ CMyComPtr<IInStream> _stream;
182
+
183
+ UInt64 GetLastEnd() const
184
+ {
185
+ if (_items.IsEmpty())
186
+ return 0;
187
+ const CParseItem &back = _items.Back();
188
+ return back.Offset + back.Size;
189
+ }
190
+
191
+ void AddUnknownItem(UInt64 next);
192
+ int FindInsertPos(const CParseItem &item) const;
193
+ void AddItem(const CParseItem &item);
194
+
195
+ CHandler(): _maxEndOffset(0) {}
196
+ };
197
+
198
+ int CHandler::FindInsertPos(const CParseItem &item) const
199
+ {
200
+ unsigned left = 0, right = _items.Size();
201
+ while (left != right)
202
+ {
203
+ const unsigned mid = (unsigned)(((size_t)left + (size_t)right) / 2);
204
+ const CParseItem &midItem = _items[mid];
205
+ if (item.Offset < midItem.Offset)
206
+ right = mid;
207
+ else if (item.Offset > midItem.Offset)
208
+ left = mid + 1;
209
+ else if (item.Size < midItem.Size)
210
+ right = mid;
211
+ /*
212
+ else if (item.Size > midItem.Size)
213
+ left = mid + 1;
214
+ */
215
+ else
216
+ {
217
+ left = mid + 1;
218
+ // return -1;
219
+ }
220
+ }
221
+ return (int)left;
222
+ }
223
+
224
+ void CHandler::AddUnknownItem(UInt64 next)
225
+ {
226
+ /*
227
+ UInt64 prevEnd = 0;
228
+ if (!_items.IsEmpty())
229
+ {
230
+ const CParseItem &back = _items.Back();
231
+ prevEnd = back.Offset + back.Size;
232
+ }
233
+ */
234
+ if (_maxEndOffset < next)
235
+ {
236
+ CParseItem item2;
237
+ item2.Offset = _maxEndOffset;
238
+ item2.Size = next - _maxEndOffset;
239
+ _maxEndOffset = next;
240
+ _items.Add(item2);
241
+ }
242
+ else if (_maxEndOffset > next && !_items.IsEmpty())
243
+ {
244
+ CParseItem &back = _items.Back();
245
+ if (back.LenIsUnknown)
246
+ {
247
+ back.Size = next - back.Offset;
248
+ _maxEndOffset = next;
249
+ }
250
+ }
251
+ }
252
+
253
+ void CHandler::AddItem(const CParseItem &item)
254
+ {
255
+ AddUnknownItem(item.Offset);
256
+ const int pos = FindInsertPos(item);
257
+ if (pos != -1)
258
+ {
259
+ _items.Insert((unsigned)pos, item);
260
+ UInt64 next = item.Offset + item.Size;
261
+ if (_maxEndOffset < next)
262
+ _maxEndOffset = next;
263
+ }
264
+ }
265
+
266
+ /*
267
+ static const CStatProp kProps[] =
268
+ {
269
+ { NULL, kpidPath, VT_BSTR},
270
+ { NULL, kpidSize, VT_UI8},
271
+ { NULL, kpidMTime, VT_FILETIME},
272
+ { NULL, kpidType, VT_BSTR},
273
+ { NULL, kpidComment, VT_BSTR},
274
+ { NULL, kpidOffset, VT_UI8},
275
+ { NULL, kpidUnpackSize, VT_UI8},
276
+ // { NULL, kpidNumSubDirs, VT_UI8},
277
+ };
278
+ */
279
+
280
+ static const Byte kProps[] =
281
+ {
282
+ kpidPath,
283
+ kpidSize,
284
+ kpidMTime,
285
+ kpidType,
286
+ kpidComment,
287
+ kpidOffset,
288
+ kpidUnpackSize
289
+ };
290
+
291
+ IMP_IInArchive_Props
292
+ IMP_IInArchive_ArcProps_NO
293
+
294
+ Z7_COM7F_IMF(CHandler::Open(IInStream *stream, const UInt64 *, IArchiveOpenCallback * /* openArchiveCallback */))
295
+ {
296
+ COM_TRY_BEGIN
297
+ {
298
+ Close();
299
+ _stream = stream;
300
+ }
301
+ return S_OK;
302
+ COM_TRY_END
303
+ }
304
+
305
+ Z7_COM7F_IMF(CHandler::Close())
306
+ {
307
+ _items.Clear();
308
+ _stream.Release();
309
+ return S_OK;
310
+ }
311
+
312
+ Z7_COM7F_IMF(CHandler::GetNumberOfItems(UInt32 *numItems))
313
+ {
314
+ *numItems = _items.Size();
315
+ return S_OK;
316
+ }
317
+
318
+ Z7_COM7F_IMF(CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value))
319
+ {
320
+ COM_TRY_BEGIN
321
+ NCOM::CPropVariant prop;
322
+
323
+ const CParseItem &item = _items[index];
324
+
325
+ switch (propID)
326
+ {
327
+ case kpidPath:
328
+ {
329
+ char sz[32];
330
+ ConvertUInt32ToString(index + 1, sz);
331
+ UString s(sz);
332
+ if (!item.Name.IsEmpty())
333
+ {
334
+ s.Add_Dot();
335
+ s += item.Name;
336
+ }
337
+ if (!item.Extension.IsEmpty())
338
+ {
339
+ s.Add_Dot();
340
+ s += item.Extension;
341
+ }
342
+ prop = s; break;
343
+ }
344
+ case kpidSize:
345
+ case kpidPackSize: prop = item.Size; break;
346
+ case kpidOffset: prop = item.Offset; break;
347
+ case kpidUnpackSize: if (item.UnpackSize_Defined) prop = item.UnpackSize; break;
348
+ case kpidNumSubFiles: if (item.NumSubFiles_Defined) prop = item.NumSubFiles; break;
349
+ case kpidNumSubDirs: if (item.NumSubDirs_Defined) prop = item.NumSubDirs; break;
350
+ case kpidMTime: if (item.FileTime_Defined) prop = item.FileTime; break;
351
+ case kpidComment: if (!item.Comment.IsEmpty()) prop = item.Comment; break;
352
+ case kpidType: if (!item.ArcType.IsEmpty()) prop = item.ArcType; break;
353
+ default: break;
354
+ }
355
+ prop.Detach(value);
356
+ return S_OK;
357
+ COM_TRY_END
358
+ }
359
+
360
+ Z7_COM7F_IMF(CHandler::Extract(const UInt32 *indices, UInt32 numItems,
361
+ Int32 testMode, IArchiveExtractCallback *extractCallback))
362
+ {
363
+ COM_TRY_BEGIN
364
+
365
+ const bool allFilesMode = (numItems == (UInt32)(Int32)-1);
366
+ if (allFilesMode)
367
+ numItems = _items.Size();
368
+ if (_stream && numItems == 0)
369
+ return S_OK;
370
+ UInt64 totalSize = 0;
371
+ UInt32 i;
372
+ for (i = 0; i < numItems; i++)
373
+ totalSize += _items[allFilesMode ? i : indices[i]].Size;
374
+ extractCallback->SetTotal(totalSize);
375
+
376
+ totalSize = 0;
377
+
378
+ CLocalProgress *lps = new CLocalProgress;
379
+ CMyComPtr<ICompressProgressInfo> progress = lps;
380
+ lps->Init(extractCallback, false);
381
+
382
+ CLimitedSequentialInStream *streamSpec = new CLimitedSequentialInStream;
383
+ CMyComPtr<ISequentialInStream> inStream(streamSpec);
384
+ streamSpec->SetStream(_stream);
385
+
386
+ CLimitedSequentialOutStream *outStreamSpec = new CLimitedSequentialOutStream;
387
+ CMyComPtr<ISequentialOutStream> outStream(outStreamSpec);
388
+
389
+ NCompress::CCopyCoder *copyCoderSpec = new NCompress::CCopyCoder();
390
+ CMyComPtr<ICompressCoder> copyCoder = copyCoderSpec;
391
+
392
+ for (i = 0; i < numItems; i++)
393
+ {
394
+ lps->InSize = totalSize;
395
+ lps->OutSize = totalSize;
396
+ RINOK(lps->SetCur())
397
+ CMyComPtr<ISequentialOutStream> realOutStream;
398
+ const Int32 askMode = testMode ?
399
+ NExtract::NAskMode::kTest :
400
+ NExtract::NAskMode::kExtract;
401
+ const UInt32 index = allFilesMode ? i : indices[i];
402
+ const CParseItem &item = _items[index];
403
+
404
+ RINOK(extractCallback->GetStream(index, &realOutStream, askMode))
405
+ UInt64 unpackSize = item.Size;
406
+ totalSize += unpackSize;
407
+ bool skipMode = false;
408
+ if (!testMode && !realOutStream)
409
+ continue;
410
+ RINOK(extractCallback->PrepareOperation(askMode))
411
+
412
+ outStreamSpec->SetStream(realOutStream);
413
+ realOutStream.Release();
414
+ outStreamSpec->Init(skipMode ? 0 : unpackSize, true);
415
+
416
+ Int32 opRes = NExtract::NOperationResult::kOK;
417
+ RINOK(InStream_SeekSet(_stream, item.Offset))
418
+ streamSpec->Init(unpackSize);
419
+ RINOK(copyCoder->Code(inStream, outStream, NULL, NULL, progress))
420
+
421
+ if (outStreamSpec->GetRem() != 0)
422
+ opRes = NExtract::NOperationResult::kDataError;
423
+ outStreamSpec->ReleaseStream();
424
+ RINOK(extractCallback->SetOperationResult(opRes))
425
+ }
426
+
427
+ return S_OK;
428
+
429
+ COM_TRY_END
430
+ }
431
+
432
+
433
+ Z7_COM7F_IMF(CHandler::GetStream(UInt32 index, ISequentialInStream **stream))
434
+ {
435
+ COM_TRY_BEGIN
436
+ const CParseItem &item = _items[index];
437
+ return CreateLimitedInStream(_stream, item.Offset, item.Size, stream);
438
+ COM_TRY_END
439
+ }
440
+
441
+ }}
442
+
443
+ #endif
444
+
445
+ HRESULT Archive_GetItemBoolProp(IInArchive *arc, UInt32 index, PROPID propID, bool &result) throw()
446
+ {
447
+ NCOM::CPropVariant prop;
448
+ result = false;
449
+ RINOK(arc->GetProperty(index, propID, &prop))
450
+ if (prop.vt == VT_BOOL)
451
+ result = VARIANT_BOOLToBool(prop.boolVal);
452
+ else if (prop.vt != VT_EMPTY)
453
+ return E_FAIL;
454
+ return S_OK;
455
+ }
456
+
457
+ HRESULT Archive_IsItem_Dir(IInArchive *arc, UInt32 index, bool &result) throw()
458
+ {
459
+ return Archive_GetItemBoolProp(arc, index, kpidIsDir, result);
460
+ }
461
+
462
+ HRESULT Archive_IsItem_Aux(IInArchive *arc, UInt32 index, bool &result) throw()
463
+ {
464
+ return Archive_GetItemBoolProp(arc, index, kpidIsAux, result);
465
+ }
466
+
467
+ HRESULT Archive_IsItem_AltStream(IInArchive *arc, UInt32 index, bool &result) throw()
468
+ {
469
+ return Archive_GetItemBoolProp(arc, index, kpidIsAltStream, result);
470
+ }
471
+
472
+ HRESULT Archive_IsItem_Deleted(IInArchive *arc, UInt32 index, bool &result) throw()
473
+ {
474
+ return Archive_GetItemBoolProp(arc, index, kpidIsDeleted, result);
475
+ }
476
+
477
+ static HRESULT Archive_GetArcProp_Bool(IInArchive *arc, PROPID propid, bool &result) throw()
478
+ {
479
+ NCOM::CPropVariant prop;
480
+ result = false;
481
+ RINOK(arc->GetArchiveProperty(propid, &prop))
482
+ if (prop.vt == VT_BOOL)
483
+ result = VARIANT_BOOLToBool(prop.boolVal);
484
+ else if (prop.vt != VT_EMPTY)
485
+ return E_FAIL;
486
+ return S_OK;
487
+ }
488
+
489
+ static HRESULT Archive_GetArcProp_UInt(IInArchive *arc, PROPID propid, UInt64 &result, bool &defined)
490
+ {
491
+ defined = false;
492
+ NCOM::CPropVariant prop;
493
+ RINOK(arc->GetArchiveProperty(propid, &prop))
494
+ switch (prop.vt)
495
+ {
496
+ case VT_UI4: result = prop.ulVal; break;
497
+ case VT_I4: result = (UInt64)(Int64)prop.lVal; break;
498
+ case VT_UI8: result = (UInt64)prop.uhVal.QuadPart; break;
499
+ case VT_I8: result = (UInt64)prop.hVal.QuadPart; break;
500
+ case VT_EMPTY: return S_OK;
501
+ default: return E_FAIL;
502
+ }
503
+ defined = true;
504
+ return S_OK;
505
+ }
506
+
507
+ static HRESULT Archive_GetArcProp_Int(IInArchive *arc, PROPID propid, Int64 &result, bool &defined)
508
+ {
509
+ defined = false;
510
+ NCOM::CPropVariant prop;
511
+ RINOK(arc->GetArchiveProperty(propid, &prop))
512
+ switch (prop.vt)
513
+ {
514
+ case VT_UI4: result = prop.ulVal; break;
515
+ case VT_I4: result = prop.lVal; break;
516
+ case VT_UI8: result = (Int64)prop.uhVal.QuadPart; break;
517
+ case VT_I8: result = (Int64)prop.hVal.QuadPart; break;
518
+ case VT_EMPTY: return S_OK;
519
+ default: return E_FAIL;
520
+ }
521
+ defined = true;
522
+ return S_OK;
523
+ }
524
+
525
+ #ifndef Z7_SFX
526
+
527
+ HRESULT CArc::GetItem_PathToParent(UInt32 index, const UInt32 parent, UStringVector &parts) const
528
+ {
529
+ if (!GetRawProps)
530
+ return E_FAIL;
531
+ if (index == parent)
532
+ return S_OK;
533
+
534
+ CRecordVector<UInt32> vec;
535
+ UString s;
536
+ bool isAltStream = false;
537
+
538
+ for (;;)
539
+ {
540
+ vec.Add(index);
541
+ UInt32 curParent = (UInt32)(Int32)-1;
542
+ UInt32 parentType = 0;
543
+ RINOK(GetRawProps->GetParent(index, &curParent, &parentType))
544
+
545
+ if (parentType == NParentType::kAltStream)
546
+ {
547
+ // that case is not expected because
548
+ // we don't call GetItem_PathToParent() function for alt stream items
549
+ if (vec.Size() != 1)
550
+ return E_FAIL;
551
+ isAltStream = true;
552
+ }
553
+ if (parent == curParent)
554
+ break;
555
+ if (curParent == (UInt32)(Int32)-1)
556
+ return E_FAIL;
557
+ index = curParent;
558
+ }
559
+
560
+ unsigned k = vec.Size();
561
+ do
562
+ {
563
+ index = vec[--k];
564
+ #ifdef MY_CPU_LE
565
+ const void *p;
566
+ UInt32 size;
567
+ UInt32 propType;
568
+ RINOK(GetRawProps->GetRawProp(index, kpidName, &p, &size, &propType))
569
+ if (p && propType == PROP_DATA_TYPE_wchar_t_PTR_Z_LE)
570
+ s = (const wchar_t *)p;
571
+ else
572
+ #endif
573
+ {
574
+ NCOM::CPropVariant prop;
575
+ RINOK(Archive->GetProperty(index, kpidName, &prop))
576
+ if (prop.vt == VT_BSTR && prop.bstrVal)
577
+ s.SetFromBstr(prop.bstrVal);
578
+ else if (prop.vt == VT_EMPTY)
579
+ s.Empty();
580
+ else
581
+ return E_FAIL;
582
+ }
583
+ if (isAltStream && k == 0 && !parts.IsEmpty())
584
+ {
585
+ UString &s2 = parts.Back();
586
+ s2.Add_Colon();
587
+ s2 += s;
588
+ }
589
+ else
590
+ parts.Add(s);
591
+ }
592
+ while (k);
593
+ return S_OK;
594
+ }
595
+
596
+ #endif
597
+
598
+
599
+
600
+ HRESULT CArc::GetItem_Path(UInt32 index, UString &result) const
601
+ {
602
+ #ifdef MY_CPU_LE
603
+ if (GetRawProps)
604
+ {
605
+ const void *p;
606
+ UInt32 size;
607
+ UInt32 propType;
608
+ if (!IsTree)
609
+ {
610
+ if (GetRawProps->GetRawProp(index, kpidPath, &p, &size, &propType) == S_OK &&
611
+ propType == NPropDataType::kUtf16z)
612
+ {
613
+ unsigned len = size / 2 - 1;
614
+ // (len) doesn't include null terminator
615
+
616
+ /*
617
+ #if WCHAR_MAX > 0xffff
618
+ len = (unsigned)Utf16LE__Get_Num_WCHARs(p, len);
619
+
620
+ wchar_t *s = result.GetBuf(len);
621
+ wchar_t *sEnd = Utf16LE__To_WCHARs_Sep(p, len, s);
622
+ if (s + len != sEnd) return E_FAIL;
623
+ *sEnd = 0;
624
+
625
+ #else
626
+ */
627
+
628
+ wchar_t *s = result.GetBuf(len);
629
+ for (unsigned i = 0; i < len; i++)
630
+ {
631
+ wchar_t c = GetUi16(p);
632
+ p = (const void *)((const Byte *)p + 2);
633
+
634
+ #if WCHAR_PATH_SEPARATOR != L'/'
635
+ if (c == L'/')
636
+ c = WCHAR_PATH_SEPARATOR;
637
+ else if (c == L'\\')
638
+ c = WCHAR_IN_FILE_NAME_BACKSLASH_REPLACEMENT; // WSL scheme
639
+ #endif
640
+
641
+ *s++ = c;
642
+ }
643
+ *s = 0;
644
+
645
+ // #endif
646
+
647
+ result.ReleaseBuf_SetLen(len);
648
+
649
+ Convert_UnicodeEsc16_To_UnicodeEscHigh(result);
650
+ if (len != 0)
651
+ return S_OK;
652
+ }
653
+ }
654
+ /*
655
+ else if (GetRawProps->GetRawProp(index, kpidName, &p, &size, &propType) == S_OK &&
656
+ p && propType == NPropDataType::kUtf16z)
657
+ {
658
+ size -= 2;
659
+ UInt32 totalSize = size;
660
+ bool isOK = false;
661
+
662
+ {
663
+ UInt32 index2 = index;
664
+ for (;;)
665
+ {
666
+ UInt32 parent = (UInt32)(Int32)-1;
667
+ UInt32 parentType = 0;
668
+ if (GetRawProps->GetParent(index2, &parent, &parentType) != S_OK)
669
+ break;
670
+ if (parent == (UInt32)(Int32)-1)
671
+ {
672
+ if (parentType != 0)
673
+ totalSize += 2;
674
+ isOK = true;
675
+ break;
676
+ }
677
+ index2 = parent;
678
+ UInt32 size2;
679
+ const void *p2;
680
+ if (GetRawProps->GetRawProp(index2, kpidName, &p2, &size2, &propType) != S_OK &&
681
+ p2 && propType == NPropDataType::kUtf16z)
682
+ break;
683
+ totalSize += size2;
684
+ }
685
+ }
686
+
687
+ if (isOK)
688
+ {
689
+ wchar_t *sz = result.GetBuf_SetEnd(totalSize / 2);
690
+ UInt32 pos = totalSize - size;
691
+ memcpy((Byte *)sz + pos, p, size);
692
+ UInt32 index2 = index;
693
+ for (;;)
694
+ {
695
+ UInt32 parent = (UInt32)(Int32)-1;
696
+ UInt32 parentType = 0;
697
+ if (GetRawProps->GetParent(index2, &parent, &parentType) != S_OK)
698
+ break;
699
+ if (parent == (UInt32)(Int32)-1)
700
+ {
701
+ if (parentType != 0)
702
+ sz[pos / 2 - 1] = L':';
703
+ break;
704
+ }
705
+ index2 = parent;
706
+ UInt32 size2;
707
+ const void *p2;
708
+ if (GetRawProps->GetRawProp(index2, kpidName, &p2, &size2, &propType) != S_OK)
709
+ break;
710
+ pos -= size2;
711
+ memcpy((Byte *)sz + pos, p2, size2);
712
+ sz[(pos + size2 - 2) / 2] = (parentType == 0) ? WCHAR_PATH_SEPARATOR : L':';
713
+ }
714
+ #ifdef _WIN32
715
+ // result.Replace(L'/', WCHAR_PATH_SEPARATOR);
716
+ #endif
717
+ return S_OK;
718
+ }
719
+ }
720
+ */
721
+ }
722
+ #endif
723
+
724
+ {
725
+ NCOM::CPropVariant prop;
726
+ RINOK(Archive->GetProperty(index, kpidPath, &prop))
727
+ if (prop.vt == VT_BSTR && prop.bstrVal)
728
+ result.SetFromBstr(prop.bstrVal);
729
+ else if (prop.vt == VT_EMPTY)
730
+ result.Empty();
731
+ else
732
+ return E_FAIL;
733
+ }
734
+
735
+ if (result.IsEmpty())
736
+ return GetItem_DefaultPath(index, result);
737
+
738
+ Convert_UnicodeEsc16_To_UnicodeEscHigh(result);
739
+ return S_OK;
740
+ }
741
+
742
+ HRESULT CArc::GetItem_DefaultPath(UInt32 index, UString &result) const
743
+ {
744
+ result.Empty();
745
+ bool isDir;
746
+ RINOK(Archive_IsItem_Dir(Archive, index, isDir))
747
+ if (!isDir)
748
+ {
749
+ result = DefaultName;
750
+ NCOM::CPropVariant prop;
751
+ RINOK(Archive->GetProperty(index, kpidExtension, &prop))
752
+ if (prop.vt == VT_BSTR)
753
+ {
754
+ result.Add_Dot();
755
+ result += prop.bstrVal;
756
+ }
757
+ else if (prop.vt != VT_EMPTY)
758
+ return E_FAIL;
759
+ }
760
+ return S_OK;
761
+ }
762
+
763
+ HRESULT CArc::GetItem_Path2(UInt32 index, UString &result) const
764
+ {
765
+ RINOK(GetItem_Path(index, result))
766
+ if (Ask_Deleted)
767
+ {
768
+ bool isDeleted = false;
769
+ RINOK(Archive_IsItem_Deleted(Archive, index, isDeleted))
770
+ if (isDeleted)
771
+ result.Insert(0, L"[DELETED]" WSTRING_PATH_SEPARATOR);
772
+ }
773
+ return S_OK;
774
+ }
775
+
776
+ #ifdef SUPPORT_ALT_STREAMS
777
+
778
+ int FindAltStreamColon_in_Path(const wchar_t *path)
779
+ {
780
+ unsigned i = 0;
781
+ int colonPos = -1;
782
+ for (;; i++)
783
+ {
784
+ wchar_t c = path[i];
785
+ if (c == 0)
786
+ return colonPos;
787
+ if (c == ':')
788
+ {
789
+ if (colonPos < 0)
790
+ colonPos = (int)i;
791
+ continue;
792
+ }
793
+ if (c == WCHAR_PATH_SEPARATOR)
794
+ colonPos = -1;
795
+ }
796
+ }
797
+
798
+ #endif
799
+
800
+ HRESULT CArc::GetItem(UInt32 index, CReadArcItem &item) const
801
+ {
802
+ #ifdef SUPPORT_ALT_STREAMS
803
+ item.IsAltStream = false;
804
+ item.AltStreamName.Empty();
805
+ item.MainPath.Empty();
806
+ #endif
807
+
808
+ item.IsDir = false;
809
+ item.Path.Empty();
810
+ item.ParentIndex = (UInt32)(Int32)-1;
811
+
812
+ item.PathParts.Clear();
813
+
814
+ RINOK(Archive_IsItem_Dir(Archive, index, item.IsDir))
815
+ item.MainIsDir = item.IsDir;
816
+
817
+ RINOK(GetItem_Path2(index, item.Path))
818
+
819
+ #ifndef Z7_SFX
820
+ UInt32 mainIndex = index;
821
+ #endif
822
+
823
+ #ifdef SUPPORT_ALT_STREAMS
824
+
825
+ item.MainPath = item.Path;
826
+ if (Ask_AltStream)
827
+ {
828
+ RINOK(Archive_IsItem_AltStream(Archive, index, item.IsAltStream))
829
+ }
830
+
831
+ bool needFindAltStream = false;
832
+
833
+ if (item.IsAltStream)
834
+ {
835
+ needFindAltStream = true;
836
+ if (GetRawProps)
837
+ {
838
+ UInt32 parentType = 0;
839
+ UInt32 parentIndex;
840
+ RINOK(GetRawProps->GetParent(index, &parentIndex, &parentType))
841
+ if (parentType == NParentType::kAltStream)
842
+ {
843
+ NCOM::CPropVariant prop;
844
+ RINOK(Archive->GetProperty(index, kpidName, &prop))
845
+ if (prop.vt == VT_BSTR && prop.bstrVal)
846
+ item.AltStreamName.SetFromBstr(prop.bstrVal);
847
+ else if (prop.vt != VT_EMPTY)
848
+ return E_FAIL;
849
+ else
850
+ {
851
+ // item.IsAltStream = false;
852
+ }
853
+ /*
854
+ if (item.AltStreamName.IsEmpty())
855
+ item.IsAltStream = false;
856
+ */
857
+
858
+ needFindAltStream = false;
859
+ item.ParentIndex = parentIndex;
860
+ mainIndex = parentIndex;
861
+
862
+ if (parentIndex == (UInt32)(Int32)-1)
863
+ {
864
+ item.MainPath.Empty();
865
+ item.MainIsDir = true;
866
+ }
867
+ else
868
+ {
869
+ RINOK(GetItem_Path2(parentIndex, item.MainPath))
870
+ RINOK(Archive_IsItem_Dir(Archive, parentIndex, item.MainIsDir))
871
+ }
872
+ }
873
+ }
874
+ }
875
+
876
+ if (item.WriteToAltStreamIfColon || needFindAltStream)
877
+ {
878
+ /* Good handler must support GetRawProps::GetParent for alt streams.
879
+ So the following code currently is not used */
880
+ const int colon = FindAltStreamColon_in_Path(item.Path);
881
+ if (colon >= 0)
882
+ {
883
+ item.MainPath.DeleteFrom((unsigned)colon);
884
+ item.AltStreamName = item.Path.Ptr((unsigned)(colon + 1));
885
+ item.MainIsDir = (colon == 0 || IsPathSepar(item.Path[(unsigned)colon - 1]));
886
+ item.IsAltStream = true;
887
+ }
888
+ }
889
+
890
+ #endif
891
+
892
+ #ifndef Z7_SFX
893
+ if (item._use_baseParentFolder_mode)
894
+ {
895
+ RINOK(GetItem_PathToParent(mainIndex, (unsigned)item._baseParentFolder, item.PathParts))
896
+
897
+ #ifdef SUPPORT_ALT_STREAMS
898
+ if ((item.WriteToAltStreamIfColon || needFindAltStream) && !item.PathParts.IsEmpty())
899
+ {
900
+ int colon;
901
+ {
902
+ UString &s = item.PathParts.Back();
903
+ colon = FindAltStreamColon_in_Path(s);
904
+ if (colon >= 0)
905
+ {
906
+ item.AltStreamName = s.Ptr((unsigned)(colon + 1));
907
+ item.MainIsDir = (colon == 0 || IsPathSepar(s[(unsigned)colon - 1]));
908
+ item.IsAltStream = true;
909
+ s.DeleteFrom((unsigned)colon);
910
+ }
911
+ }
912
+ if (colon == 0)
913
+ item.PathParts.DeleteBack();
914
+ }
915
+ #endif
916
+
917
+ }
918
+ else
919
+ #endif
920
+ SplitPathToParts(
921
+ #ifdef SUPPORT_ALT_STREAMS
922
+ item.MainPath
923
+ #else
924
+ item.Path
925
+ #endif
926
+ , item.PathParts);
927
+
928
+ return S_OK;
929
+ }
930
+
931
+ #ifndef Z7_SFX
932
+
933
+ static HRESULT Archive_GetItem_Size(IInArchive *archive, UInt32 index, UInt64 &size, bool &defined)
934
+ {
935
+ NCOM::CPropVariant prop;
936
+ defined = false;
937
+ size = 0;
938
+ RINOK(archive->GetProperty(index, kpidSize, &prop))
939
+ switch (prop.vt)
940
+ {
941
+ case VT_UI1: size = prop.bVal; break;
942
+ case VT_UI2: size = prop.uiVal; break;
943
+ case VT_UI4: size = prop.ulVal; break;
944
+ case VT_UI8: size = (UInt64)prop.uhVal.QuadPart; break;
945
+ case VT_EMPTY: return S_OK;
946
+ default: return E_FAIL;
947
+ }
948
+ defined = true;
949
+ return S_OK;
950
+ }
951
+
952
+ #endif
953
+
954
+ HRESULT CArc::GetItem_Size(UInt32 index, UInt64 &size, bool &defined) const
955
+ {
956
+ NCOM::CPropVariant prop;
957
+ defined = false;
958
+ size = 0;
959
+ RINOK(Archive->GetProperty(index, kpidSize, &prop))
960
+ switch (prop.vt)
961
+ {
962
+ case VT_UI1: size = prop.bVal; break;
963
+ case VT_UI2: size = prop.uiVal; break;
964
+ case VT_UI4: size = prop.ulVal; break;
965
+ case VT_UI8: size = (UInt64)prop.uhVal.QuadPart; break;
966
+ case VT_EMPTY: return S_OK;
967
+ default: return E_FAIL;
968
+ }
969
+ defined = true;
970
+ return S_OK;
971
+ }
972
+
973
+ HRESULT CArc::GetItem_MTime(UInt32 index, CArcTime &at) const
974
+ {
975
+ at.Clear();
976
+ NCOM::CPropVariant prop;
977
+ RINOK(Archive->GetProperty(index, kpidMTime, &prop))
978
+
979
+ if (prop.vt == VT_FILETIME)
980
+ {
981
+ /*
982
+ // for debug
983
+ if (FILETIME_IsZero(prop.at) && MTime.Def)
984
+ {
985
+ at = MTime;
986
+ return S_OK;
987
+ }
988
+ */
989
+ at.Set_From_Prop(prop);
990
+ if (at.Prec == 0)
991
+ {
992
+ // (at.Prec == 0) before version 22.
993
+ // so kpidTimeType is required for that code
994
+ prop.Clear();
995
+ RINOK(Archive->GetProperty(index, kpidTimeType, &prop))
996
+ if (prop.vt == VT_UI4)
997
+ {
998
+ UInt32 val = prop.ulVal;
999
+ if (val == NFileTimeType::kWindows)
1000
+ val = k_PropVar_TimePrec_100ns;
1001
+ /*
1002
+ else if (val > k_PropVar_TimePrec_1ns)
1003
+ {
1004
+ val = k_PropVar_TimePrec_100ns;
1005
+ // val = k_PropVar_TimePrec_1ns;
1006
+ // return E_FAIL; // for debug
1007
+ }
1008
+ */
1009
+ at.Prec = (UInt16)val;
1010
+ }
1011
+ }
1012
+ return S_OK;
1013
+ }
1014
+
1015
+ if (prop.vt != VT_EMPTY)
1016
+ return E_FAIL;
1017
+ if (MTime.Def)
1018
+ at = MTime;
1019
+ return S_OK;
1020
+ }
1021
+
1022
+ #ifndef Z7_SFX
1023
+
1024
+ static inline bool TestSignature(const Byte *p1, const Byte *p2, size_t size)
1025
+ {
1026
+ for (size_t i = 0; i < size; i++)
1027
+ if (p1[i] != p2[i])
1028
+ return false;
1029
+ return true;
1030
+ }
1031
+
1032
+
1033
+ static void MakeCheckOrder(CCodecs *codecs,
1034
+ CIntVector &orderIndices, unsigned numTypes, CIntVector &orderIndices2,
1035
+ const Byte *data, size_t dataSize)
1036
+ {
1037
+ for (unsigned i = 0; i < numTypes; i++)
1038
+ {
1039
+ const int index = orderIndices[i];
1040
+ if (index < 0)
1041
+ continue;
1042
+ const CArcInfoEx &ai = codecs->Formats[(unsigned)index];
1043
+ if (ai.SignatureOffset == 0)
1044
+ {
1045
+ if (ai.Signatures.IsEmpty())
1046
+ {
1047
+ if (dataSize != 0) // 21.04: no Signature means Empty Signature
1048
+ continue;
1049
+ }
1050
+ else
1051
+ {
1052
+ unsigned k;
1053
+ const CObjectVector<CByteBuffer> &sigs = ai.Signatures;
1054
+ for (k = 0; k < sigs.Size(); k++)
1055
+ {
1056
+ const CByteBuffer &sig = sigs[k];
1057
+ if (sig.Size() <= dataSize && TestSignature(data, sig, sig.Size()))
1058
+ break;
1059
+ }
1060
+ if (k == sigs.Size())
1061
+ continue;
1062
+ }
1063
+ }
1064
+ orderIndices2.Add(index);
1065
+ orderIndices[i] = -1;
1066
+ }
1067
+ }
1068
+
1069
+ #ifdef UNDER_CE
1070
+ static const unsigned kNumHashBytes = 1;
1071
+ #define HASH_VAL(buf) ((buf)[0])
1072
+ #else
1073
+ static const unsigned kNumHashBytes = 2;
1074
+ // #define HASH_VAL(buf) ((buf)[0] | ((UInt32)(buf)[1] << 8))
1075
+ #define HASH_VAL(buf) GetUi16(buf)
1076
+ #endif
1077
+
1078
+ static bool IsExeExt(const UString &ext)
1079
+ {
1080
+ return ext.IsEqualTo_Ascii_NoCase("exe");
1081
+ }
1082
+
1083
+ static const char * const k_PreArcFormats[] =
1084
+ {
1085
+ "pe"
1086
+ , "elf"
1087
+ , "macho"
1088
+ , "mub"
1089
+ , "te"
1090
+ };
1091
+
1092
+ static bool IsNameFromList(const UString &s, const char * const names[], size_t num)
1093
+ {
1094
+ for (unsigned i = 0; i < num; i++)
1095
+ if (StringsAreEqualNoCase_Ascii(s, names[i]))
1096
+ return true;
1097
+ return false;
1098
+ }
1099
+
1100
+
1101
+ static bool IsPreArcFormat(const CArcInfoEx &ai)
1102
+ {
1103
+ if (ai.Flags_PreArc())
1104
+ return true;
1105
+ return IsNameFromList(ai.Name, k_PreArcFormats, Z7_ARRAY_SIZE(k_PreArcFormats));
1106
+ }
1107
+
1108
+ static const char * const k_Formats_with_simple_signuature[] =
1109
+ {
1110
+ "7z"
1111
+ , "xz"
1112
+ , "rar"
1113
+ , "bzip2"
1114
+ , "gzip"
1115
+ , "cab"
1116
+ , "wim"
1117
+ , "rpm"
1118
+ , "vhd"
1119
+ , "xar"
1120
+ };
1121
+
1122
+ static bool IsNewStyleSignature(const CArcInfoEx &ai)
1123
+ {
1124
+ // if (ai.Version >= 0x91F)
1125
+ if (ai.NewInterface)
1126
+ return true;
1127
+ return IsNameFromList(ai.Name, k_Formats_with_simple_signuature, Z7_ARRAY_SIZE(k_Formats_with_simple_signuature));
1128
+ }
1129
+
1130
+
1131
+
1132
+ class CArchiveOpenCallback_Offset Z7_final:
1133
+ public IArchiveOpenCallback,
1134
+ public IArchiveOpenVolumeCallback,
1135
+ #ifndef Z7_NO_CRYPTO
1136
+ public ICryptoGetTextPassword,
1137
+ #endif
1138
+ public CMyUnknownImp
1139
+ {
1140
+ Z7_COM_QI_BEGIN2(IArchiveOpenCallback)
1141
+ Z7_COM_QI_ENTRY(IArchiveOpenVolumeCallback)
1142
+ #ifndef Z7_NO_CRYPTO
1143
+ Z7_COM_QI_ENTRY(ICryptoGetTextPassword)
1144
+ #endif
1145
+ Z7_COM_QI_END
1146
+ Z7_COM_ADDREF_RELEASE
1147
+
1148
+ Z7_IFACE_COM7_IMP(IArchiveOpenCallback)
1149
+ Z7_IFACE_COM7_IMP(IArchiveOpenVolumeCallback)
1150
+ #ifndef Z7_NO_CRYPTO
1151
+ Z7_IFACE_COM7_IMP(ICryptoGetTextPassword)
1152
+ #endif
1153
+
1154
+ public:
1155
+ CMyComPtr<IArchiveOpenCallback> Callback;
1156
+ CMyComPtr<IArchiveOpenVolumeCallback> OpenVolumeCallback;
1157
+ UInt64 Files;
1158
+ UInt64 Offset;
1159
+
1160
+ #ifndef Z7_NO_CRYPTO
1161
+ CMyComPtr<ICryptoGetTextPassword> GetTextPassword;
1162
+ #endif
1163
+ };
1164
+
1165
+ #ifndef Z7_NO_CRYPTO
1166
+ Z7_COM7F_IMF(CArchiveOpenCallback_Offset::CryptoGetTextPassword(BSTR *password))
1167
+ {
1168
+ COM_TRY_BEGIN
1169
+ if (GetTextPassword)
1170
+ return GetTextPassword->CryptoGetTextPassword(password);
1171
+ return E_NOTIMPL;
1172
+ COM_TRY_END
1173
+ }
1174
+ #endif
1175
+
1176
+ Z7_COM7F_IMF(CArchiveOpenCallback_Offset::SetTotal(const UInt64 *, const UInt64 *))
1177
+ {
1178
+ return S_OK;
1179
+ }
1180
+
1181
+ Z7_COM7F_IMF(CArchiveOpenCallback_Offset::SetCompleted(const UInt64 *, const UInt64 *bytes))
1182
+ {
1183
+ if (!Callback)
1184
+ return S_OK;
1185
+ UInt64 value = Offset;
1186
+ if (bytes)
1187
+ value += *bytes;
1188
+ return Callback->SetCompleted(&Files, &value);
1189
+ }
1190
+
1191
+ Z7_COM7F_IMF(CArchiveOpenCallback_Offset::GetProperty(PROPID propID, PROPVARIANT *value))
1192
+ {
1193
+ if (OpenVolumeCallback)
1194
+ return OpenVolumeCallback->GetProperty(propID, value);
1195
+ NCOM::PropVariant_Clear(value);
1196
+ return S_OK;
1197
+ // return E_NOTIMPL;
1198
+ }
1199
+
1200
+ Z7_COM7F_IMF(CArchiveOpenCallback_Offset::GetStream(const wchar_t *name, IInStream **inStream))
1201
+ {
1202
+ if (OpenVolumeCallback)
1203
+ return OpenVolumeCallback->GetStream(name, inStream);
1204
+ return S_FALSE;
1205
+ }
1206
+
1207
+ #endif
1208
+
1209
+
1210
+ UInt32 GetOpenArcErrorFlags(const NCOM::CPropVariant &prop, bool *isDefinedProp)
1211
+ {
1212
+ if (isDefinedProp != NULL)
1213
+ *isDefinedProp = false;
1214
+
1215
+ switch (prop.vt)
1216
+ {
1217
+ case VT_UI8: if (isDefinedProp) *isDefinedProp = true; return (UInt32)prop.uhVal.QuadPart;
1218
+ case VT_UI4: if (isDefinedProp) *isDefinedProp = true; return prop.ulVal;
1219
+ case VT_EMPTY: return 0;
1220
+ default: throw 151199;
1221
+ }
1222
+ }
1223
+
1224
+ void CArcErrorInfo::ClearErrors()
1225
+ {
1226
+ // ErrorFormatIndex = -1; // we don't need to clear ErrorFormatIndex here !!!
1227
+
1228
+ ThereIsTail = false;
1229
+ UnexpecedEnd = false;
1230
+ IgnoreTail = false;
1231
+ // NonZerosTail = false;
1232
+ ErrorFlags_Defined = false;
1233
+ ErrorFlags = 0;
1234
+ WarningFlags = 0;
1235
+ TailSize = 0;
1236
+
1237
+ ErrorMessage.Empty();
1238
+ WarningMessage.Empty();
1239
+ }
1240
+
1241
+ HRESULT CArc::ReadBasicProps(IInArchive *archive, UInt64 startPos, HRESULT openRes)
1242
+ {
1243
+ // OkPhySize_Defined = false;
1244
+ PhySize_Defined = false;
1245
+ PhySize = 0;
1246
+ Offset = 0;
1247
+ AvailPhySize = FileSize - startPos;
1248
+
1249
+ ErrorInfo.ClearErrors();
1250
+ {
1251
+ NCOM::CPropVariant prop;
1252
+ RINOK(archive->GetArchiveProperty(kpidErrorFlags, &prop))
1253
+ ErrorInfo.ErrorFlags = GetOpenArcErrorFlags(prop, &ErrorInfo.ErrorFlags_Defined);
1254
+ }
1255
+ {
1256
+ NCOM::CPropVariant prop;
1257
+ RINOK(archive->GetArchiveProperty(kpidWarningFlags, &prop))
1258
+ ErrorInfo.WarningFlags = GetOpenArcErrorFlags(prop);
1259
+ }
1260
+
1261
+ {
1262
+ NCOM::CPropVariant prop;
1263
+ RINOK(archive->GetArchiveProperty(kpidError, &prop))
1264
+ if (prop.vt != VT_EMPTY)
1265
+ ErrorInfo.ErrorMessage = (prop.vt == VT_BSTR ? prop.bstrVal : L"Unknown error");
1266
+ }
1267
+
1268
+ {
1269
+ NCOM::CPropVariant prop;
1270
+ RINOK(archive->GetArchiveProperty(kpidWarning, &prop))
1271
+ if (prop.vt != VT_EMPTY)
1272
+ ErrorInfo.WarningMessage = (prop.vt == VT_BSTR ? prop.bstrVal : L"Unknown warning");
1273
+ }
1274
+
1275
+ if (openRes == S_OK || ErrorInfo.IsArc_After_NonOpen())
1276
+ {
1277
+ RINOK(Archive_GetArcProp_UInt(archive, kpidPhySize, PhySize, PhySize_Defined))
1278
+ /*
1279
+ RINOK(Archive_GetArcProp_UInt(archive, kpidOkPhySize, OkPhySize, OkPhySize_Defined));
1280
+ if (!OkPhySize_Defined)
1281
+ {
1282
+ OkPhySize_Defined = PhySize_Defined;
1283
+ OkPhySize = PhySize;
1284
+ }
1285
+ */
1286
+
1287
+ bool offsetDefined;
1288
+ RINOK(Archive_GetArcProp_Int(archive, kpidOffset, Offset, offsetDefined))
1289
+
1290
+ Int64 globalOffset = (Int64)startPos + Offset;
1291
+ AvailPhySize = (UInt64)((Int64)FileSize - globalOffset);
1292
+ if (PhySize_Defined)
1293
+ {
1294
+ UInt64 endPos = (UInt64)(globalOffset + (Int64)PhySize);
1295
+ if (endPos < FileSize)
1296
+ {
1297
+ AvailPhySize = PhySize;
1298
+ ErrorInfo.ThereIsTail = true;
1299
+ ErrorInfo.TailSize = FileSize - endPos;
1300
+ }
1301
+ else if (endPos > FileSize)
1302
+ ErrorInfo.UnexpecedEnd = true;
1303
+ }
1304
+ }
1305
+
1306
+ return S_OK;
1307
+ }
1308
+
1309
+ /*
1310
+ static void PrintNumber(const char *s, int n)
1311
+ {
1312
+ char temp[100];
1313
+ sprintf(temp, "%s %d", s, n);
1314
+ // OutputDebugStringA(temp);
1315
+ printf(temp);
1316
+ }
1317
+ */
1318
+
1319
+ HRESULT CArc::PrepareToOpen(const COpenOptions &op, unsigned formatIndex, CMyComPtr<IInArchive> &archive)
1320
+ {
1321
+ // OutputDebugStringA("a1");
1322
+ // PrintNumber("formatIndex", formatIndex);
1323
+
1324
+ RINOK(op.codecs->CreateInArchive(formatIndex, archive))
1325
+ // OutputDebugStringA("a2");
1326
+ if (!archive)
1327
+ return S_OK;
1328
+
1329
+ #ifdef Z7_EXTERNAL_CODECS
1330
+ if (op.codecs->NeedSetLibCodecs)
1331
+ {
1332
+ const CArcInfoEx &ai = op.codecs->Formats[formatIndex];
1333
+ if (ai.LibIndex >= 0 ?
1334
+ !op.codecs->Libs[(unsigned)ai.LibIndex].SetCodecs :
1335
+ !op.codecs->Libs.IsEmpty())
1336
+ {
1337
+ CMyComPtr<ISetCompressCodecsInfo> setCompressCodecsInfo;
1338
+ archive.QueryInterface(IID_ISetCompressCodecsInfo, (void **)&setCompressCodecsInfo);
1339
+ if (setCompressCodecsInfo)
1340
+ {
1341
+ RINOK(setCompressCodecsInfo->SetCompressCodecsInfo(op.codecs))
1342
+ }
1343
+ }
1344
+ }
1345
+ #endif
1346
+
1347
+
1348
+ #ifndef Z7_SFX
1349
+
1350
+ const CArcInfoEx &ai = op.codecs->Formats[formatIndex];
1351
+
1352
+ // OutputDebugStringW(ai.Name);
1353
+ // OutputDebugStringA("a3");
1354
+
1355
+ if (ai.Flags_PreArc())
1356
+ {
1357
+ /* we notify parsers that extract executables, that they don't need
1358
+ to open archive, if there is tail after executable (for SFX cases) */
1359
+ CMyComPtr<IArchiveAllowTail> allowTail;
1360
+ archive.QueryInterface(IID_IArchiveAllowTail, (void **)&allowTail);
1361
+ if (allowTail)
1362
+ allowTail->AllowTail(BoolToInt(true));
1363
+ }
1364
+
1365
+ if (op.props)
1366
+ {
1367
+ /*
1368
+ FOR_VECTOR (y, op.props)
1369
+ {
1370
+ const COptionalOpenProperties &optProps = (*op.props)[y];
1371
+ if (optProps.FormatName.IsEmpty() || optProps.FormatName.CompareNoCase(ai.Name) == 0)
1372
+ {
1373
+ RINOK(SetProperties(archive, optProps.Props));
1374
+ break;
1375
+ }
1376
+ }
1377
+ */
1378
+ RINOK(SetProperties(archive, *op.props))
1379
+ }
1380
+
1381
+ #endif
1382
+ return S_OK;
1383
+ }
1384
+
1385
+ #ifndef Z7_SFX
1386
+
1387
+ static HRESULT ReadParseItemProps(IInArchive *archive, const CArcInfoEx &ai, NArchive::NParser::CParseItem &pi)
1388
+ {
1389
+ pi.Extension = ai.GetMainExt();
1390
+ pi.FileTime_Defined = false;
1391
+ pi.ArcType = ai.Name;
1392
+
1393
+ RINOK(Archive_GetArcProp_Bool(archive, kpidIsNotArcType, pi.IsNotArcType))
1394
+
1395
+ // RINOK(Archive_GetArcProp_Bool(archive, kpidIsSelfExe, pi.IsSelfExe));
1396
+ pi.IsSelfExe = ai.Flags_PreArc();
1397
+
1398
+ {
1399
+ NCOM::CPropVariant prop;
1400
+ RINOK(archive->GetArchiveProperty(kpidMTime, &prop))
1401
+ if (prop.vt == VT_FILETIME)
1402
+ {
1403
+ pi.FileTime_Defined = true;
1404
+ pi.FileTime = prop.filetime;
1405
+ }
1406
+ }
1407
+
1408
+ if (!pi.FileTime_Defined)
1409
+ {
1410
+ NCOM::CPropVariant prop;
1411
+ RINOK(archive->GetArchiveProperty(kpidCTime, &prop))
1412
+ if (prop.vt == VT_FILETIME)
1413
+ {
1414
+ pi.FileTime_Defined = true;
1415
+ pi.FileTime = prop.filetime;
1416
+ }
1417
+ }
1418
+
1419
+ {
1420
+ NCOM::CPropVariant prop;
1421
+ RINOK(archive->GetArchiveProperty(kpidName, &prop))
1422
+ if (prop.vt == VT_BSTR)
1423
+ {
1424
+ pi.Name.SetFromBstr(prop.bstrVal);
1425
+ pi.Extension.Empty();
1426
+ }
1427
+ else
1428
+ {
1429
+ RINOK(archive->GetArchiveProperty(kpidExtension, &prop))
1430
+ if (prop.vt == VT_BSTR)
1431
+ pi.Extension.SetFromBstr(prop.bstrVal);
1432
+ }
1433
+ }
1434
+
1435
+ {
1436
+ NCOM::CPropVariant prop;
1437
+ RINOK(archive->GetArchiveProperty(kpidShortComment, &prop))
1438
+ if (prop.vt == VT_BSTR)
1439
+ pi.Comment.SetFromBstr(prop.bstrVal);
1440
+ }
1441
+
1442
+
1443
+ UInt32 numItems;
1444
+ RINOK(archive->GetNumberOfItems(&numItems))
1445
+
1446
+ // pi.NumSubFiles = numItems;
1447
+ // RINOK(Archive_GetArcProp_UInt(archive, kpidUnpackSize, pi.UnpackSize, pi.UnpackSize_Defined));
1448
+ // if (!pi.UnpackSize_Defined)
1449
+ {
1450
+ pi.NumSubFiles = 0;
1451
+ pi.NumSubDirs = 0;
1452
+ pi.UnpackSize = 0;
1453
+ for (UInt32 i = 0; i < numItems; i++)
1454
+ {
1455
+ UInt64 size = 0;
1456
+ bool defined = false;
1457
+ Archive_GetItem_Size(archive, i, size, defined);
1458
+ if (defined)
1459
+ {
1460
+ pi.UnpackSize_Defined = true;
1461
+ pi.UnpackSize += size;
1462
+ }
1463
+
1464
+ bool isDir = false;
1465
+ Archive_IsItem_Dir(archive, i, isDir);
1466
+ if (isDir)
1467
+ pi.NumSubDirs++;
1468
+ else
1469
+ pi.NumSubFiles++;
1470
+ }
1471
+ if (pi.NumSubDirs != 0)
1472
+ pi.NumSubDirs_Defined = true;
1473
+ pi.NumSubFiles_Defined = true;
1474
+ }
1475
+
1476
+ return S_OK;
1477
+ }
1478
+
1479
+ #endif
1480
+
1481
+ HRESULT CArc::CheckZerosTail(const COpenOptions &op, UInt64 offset)
1482
+ {
1483
+ if (!op.stream)
1484
+ return S_OK;
1485
+ RINOK(InStream_SeekSet(op.stream, offset))
1486
+ const UInt32 kBufSize = 1 << 11;
1487
+ Byte buf[kBufSize];
1488
+
1489
+ for (;;)
1490
+ {
1491
+ UInt32 processed = 0;
1492
+ RINOK(op.stream->Read(buf, kBufSize, &processed))
1493
+ if (processed == 0)
1494
+ {
1495
+ // ErrorInfo.NonZerosTail = false;
1496
+ ErrorInfo.IgnoreTail = true;
1497
+ return S_OK;
1498
+ }
1499
+ for (size_t i = 0; i < processed; i++)
1500
+ {
1501
+ if (buf[i] != 0)
1502
+ {
1503
+ // ErrorInfo.IgnoreTail = false;
1504
+ // ErrorInfo.NonZerosTail = true;
1505
+ return S_OK;
1506
+ }
1507
+ }
1508
+ }
1509
+ }
1510
+
1511
+
1512
+
1513
+ #ifndef Z7_SFX
1514
+
1515
+ Z7_CLASS_IMP_COM_2(
1516
+ CExtractCallback_To_OpenCallback
1517
+ , IArchiveExtractCallback
1518
+ , ICompressProgressInfo
1519
+ )
1520
+ Z7_IFACE_COM7_IMP(IProgress)
1521
+ public:
1522
+ CMyComPtr<IArchiveOpenCallback> Callback;
1523
+ UInt64 Files;
1524
+ UInt64 Offset;
1525
+
1526
+ void Init(IArchiveOpenCallback *callback)
1527
+ {
1528
+ Callback = callback;
1529
+ Files = 0;
1530
+ Offset = 0;
1531
+ }
1532
+ };
1533
+
1534
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::SetTotal(UInt64 /* size */))
1535
+ {
1536
+ return S_OK;
1537
+ }
1538
+
1539
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::SetCompleted(const UInt64 * /* completeValue */))
1540
+ {
1541
+ return S_OK;
1542
+ }
1543
+
1544
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::SetRatioInfo(const UInt64 *inSize, const UInt64 * /* outSize */))
1545
+ {
1546
+ if (Callback)
1547
+ {
1548
+ UInt64 value = Offset;
1549
+ if (inSize)
1550
+ value += *inSize;
1551
+ return Callback->SetCompleted(&Files, &value);
1552
+ }
1553
+ return S_OK;
1554
+ }
1555
+
1556
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::GetStream(UInt32 /* index */, ISequentialOutStream **outStream, Int32 /* askExtractMode */))
1557
+ {
1558
+ *outStream = NULL;
1559
+ return S_OK;
1560
+ }
1561
+
1562
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::PrepareOperation(Int32 /* askExtractMode */))
1563
+ {
1564
+ return S_OK;
1565
+ }
1566
+
1567
+ Z7_COM7F_IMF(CExtractCallback_To_OpenCallback::SetOperationResult(Int32 /* operationResult */))
1568
+ {
1569
+ return S_OK;
1570
+ }
1571
+
1572
+
1573
+ static HRESULT OpenArchiveSpec(IInArchive *archive, bool needPhySize,
1574
+ IInStream *stream, const UInt64 *maxCheckStartPosition,
1575
+ IArchiveOpenCallback *openCallback,
1576
+ IArchiveExtractCallback *extractCallback)
1577
+ {
1578
+ /*
1579
+ if (needPhySize)
1580
+ {
1581
+ Z7_DECL_CMyComPtr_QI_FROM(
1582
+ IArchiveOpen2,
1583
+ open2, archive)
1584
+ if (open2)
1585
+ return open2->ArcOpen2(stream, kOpenFlags_RealPhySize, openCallback);
1586
+ }
1587
+ */
1588
+ RINOK(archive->Open(stream, maxCheckStartPosition, openCallback))
1589
+ if (needPhySize)
1590
+ {
1591
+ bool phySize_Defined = false;
1592
+ UInt64 phySize = 0;
1593
+ RINOK(Archive_GetArcProp_UInt(archive, kpidPhySize, phySize, phySize_Defined))
1594
+ if (phySize_Defined)
1595
+ return S_OK;
1596
+
1597
+ bool phySizeCantBeDetected = false;
1598
+ RINOK(Archive_GetArcProp_Bool(archive, kpidPhySizeCantBeDetected, phySizeCantBeDetected))
1599
+
1600
+ if (!phySizeCantBeDetected)
1601
+ {
1602
+ PRF(printf("\n-- !phySize_Defined after Open, call archive->Extract()"));
1603
+ // It's for bzip2/gz and some xz archives, where Open operation doesn't know phySize.
1604
+ // But the Handler will know phySize after full archive testing.
1605
+ RINOK(archive->Extract(NULL, (UInt32)(Int32)-1, BoolToInt(true), extractCallback))
1606
+ PRF(printf("\n-- OK"));
1607
+ }
1608
+ }
1609
+ return S_OK;
1610
+ }
1611
+
1612
+
1613
+
1614
+ static int FindFormatForArchiveType(CCodecs *codecs, CIntVector orderIndices, const char *name)
1615
+ {
1616
+ FOR_VECTOR (i, orderIndices)
1617
+ {
1618
+ int oi = orderIndices[i];
1619
+ if (oi >= 0)
1620
+ if (StringsAreEqualNoCase_Ascii(codecs->Formats[(unsigned)oi].Name, name))
1621
+ return (int)i;
1622
+ }
1623
+ return -1;
1624
+ }
1625
+
1626
+ #endif
1627
+
1628
+ HRESULT CArc::OpenStream2(const COpenOptions &op)
1629
+ {
1630
+ // fprintf(stdout, "\nOpen: %S", Path); fflush(stdout);
1631
+
1632
+ Archive.Release();
1633
+ GetRawProps.Release();
1634
+ GetRootProps.Release();
1635
+
1636
+ ErrorInfo.ClearErrors();
1637
+ ErrorInfo.ErrorFormatIndex = -1;
1638
+
1639
+ IsParseArc = false;
1640
+ ArcStreamOffset = 0;
1641
+
1642
+ // OutputDebugStringA("1");
1643
+ // OutputDebugStringW(Path);
1644
+
1645
+ const UString fileName = ExtractFileNameFromPath(Path);
1646
+ UString extension;
1647
+ {
1648
+ const int dotPos = fileName.ReverseFind_Dot();
1649
+ if (dotPos >= 0)
1650
+ extension = fileName.Ptr((unsigned)(dotPos + 1));
1651
+ }
1652
+
1653
+ CIntVector orderIndices;
1654
+
1655
+ bool searchMarkerInHandler = false;
1656
+ #ifdef Z7_SFX
1657
+ searchMarkerInHandler = true;
1658
+ #endif
1659
+
1660
+ CBoolArr isMainFormatArr(op.codecs->Formats.Size());
1661
+ {
1662
+ FOR_VECTOR(i, op.codecs->Formats)
1663
+ isMainFormatArr[i] = false;
1664
+ }
1665
+
1666
+ const UInt64 maxStartOffset =
1667
+ op.openType.MaxStartOffset_Defined ?
1668
+ op.openType.MaxStartOffset :
1669
+ kMaxCheckStartPosition;
1670
+
1671
+ #ifndef Z7_SFX
1672
+ bool isUnknownExt = false;
1673
+ #endif
1674
+
1675
+ #ifndef Z7_SFX
1676
+ bool isForced = false;
1677
+ #endif
1678
+
1679
+ unsigned numMainTypes = 0;
1680
+ const int formatIndex = op.openType.FormatIndex;
1681
+
1682
+ if (formatIndex >= 0)
1683
+ {
1684
+ #ifndef Z7_SFX
1685
+ isForced = true;
1686
+ #endif
1687
+ orderIndices.Add(formatIndex);
1688
+ numMainTypes = 1;
1689
+ isMainFormatArr[(unsigned)formatIndex] = true;
1690
+
1691
+ searchMarkerInHandler = true;
1692
+ }
1693
+ else
1694
+ {
1695
+ unsigned numFinded = 0;
1696
+ #ifndef Z7_SFX
1697
+ bool isPrearcExt = false;
1698
+ #endif
1699
+
1700
+ {
1701
+ #ifndef Z7_SFX
1702
+
1703
+ bool isZip = false;
1704
+ bool isRar = false;
1705
+
1706
+ const wchar_t c = extension[0];
1707
+ if (c == 'z' || c == 'Z' || c == 'r' || c == 'R')
1708
+ {
1709
+ bool isNumber = false;
1710
+ for (unsigned k = 1;; k++)
1711
+ {
1712
+ const wchar_t d = extension[k];
1713
+ if (d == 0)
1714
+ break;
1715
+ if (d < '0' || d > '9')
1716
+ {
1717
+ isNumber = false;
1718
+ break;
1719
+ }
1720
+ isNumber = true;
1721
+ }
1722
+ if (isNumber)
1723
+ {
1724
+ if (c == 'z' || c == 'Z')
1725
+ isZip = true;
1726
+ else
1727
+ isRar = true;
1728
+ }
1729
+ }
1730
+
1731
+ #endif
1732
+
1733
+ FOR_VECTOR (i, op.codecs->Formats)
1734
+ {
1735
+ const CArcInfoEx &ai = op.codecs->Formats[i];
1736
+
1737
+ if (IgnoreSplit || !op.openType.CanReturnArc)
1738
+ if (ai.Is_Split())
1739
+ continue;
1740
+ if (op.excludedFormats->FindInSorted((int)i) >= 0)
1741
+ continue;
1742
+
1743
+ #ifndef Z7_SFX
1744
+ if (IsPreArcFormat(ai))
1745
+ isPrearcExt = true;
1746
+ #endif
1747
+
1748
+ if (ai.FindExtension(extension) >= 0
1749
+ #ifndef Z7_SFX
1750
+ || (isZip && ai.Is_Zip())
1751
+ || (isRar && ai.Is_Rar())
1752
+ #endif
1753
+ )
1754
+ {
1755
+ // PrintNumber("orderIndices.Insert", i);
1756
+ orderIndices.Insert(numFinded++, (int)i);
1757
+ isMainFormatArr[i] = true;
1758
+ }
1759
+ else
1760
+ orderIndices.Add((int)i);
1761
+ }
1762
+ }
1763
+
1764
+ if (!op.stream)
1765
+ {
1766
+ if (numFinded != 1)
1767
+ return E_NOTIMPL;
1768
+ orderIndices.DeleteFrom(1);
1769
+ }
1770
+ // PrintNumber("numFinded", numFinded );
1771
+
1772
+ /*
1773
+ if (op.openOnlySpecifiedByExtension)
1774
+ {
1775
+ if (numFinded != 0 && !IsExeExt(extension))
1776
+ orderIndices.DeleteFrom(numFinded);
1777
+ }
1778
+ */
1779
+
1780
+ #ifndef Z7_SFX
1781
+
1782
+ if (op.stream && orderIndices.Size() >= 2)
1783
+ {
1784
+ RINOK(InStream_SeekToBegin(op.stream))
1785
+ CByteBuffer byteBuffer;
1786
+ CIntVector orderIndices2;
1787
+ if (numFinded == 0 || IsExeExt(extension))
1788
+ {
1789
+ // signature search was here
1790
+ }
1791
+ else if (extension.IsEqualTo("000") || extension.IsEqualTo("001"))
1792
+ {
1793
+ const int i = FindFormatForArchiveType(op.codecs, orderIndices, "rar");
1794
+ if (i >= 0)
1795
+ {
1796
+ const size_t kBufSize = (1 << 10);
1797
+ byteBuffer.Alloc(kBufSize);
1798
+ size_t processedSize = kBufSize;
1799
+ RINOK(ReadStream(op.stream, byteBuffer, &processedSize))
1800
+ if (processedSize >= 16)
1801
+ {
1802
+ const Byte *buf = byteBuffer;
1803
+ const Byte kRarHeader[] = { 0x52 , 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00 };
1804
+ if (TestSignature(buf, kRarHeader, 7) && buf[9] == 0x73 && (buf[10] & 1) != 0)
1805
+ {
1806
+ orderIndices2.Add(orderIndices[(unsigned)i]);
1807
+ orderIndices[(unsigned)i] = -1;
1808
+ if (i >= (int)numFinded)
1809
+ numFinded++;
1810
+ }
1811
+ }
1812
+ }
1813
+ }
1814
+ else
1815
+ {
1816
+ const size_t kBufSize = (1 << 10);
1817
+ byteBuffer.Alloc(kBufSize);
1818
+ size_t processedSize = kBufSize;
1819
+ RINOK(ReadStream(op.stream, byteBuffer, &processedSize))
1820
+ if (processedSize == 0)
1821
+ return S_FALSE;
1822
+
1823
+ /*
1824
+ check type order:
1825
+ 0) matched_extension && Backward
1826
+ 1) matched_extension && (no_signuature || SignatureOffset != 0)
1827
+ 2) matched_extension && (matched_signature)
1828
+ // 3) no signuature
1829
+ // 4) matched signuature
1830
+ */
1831
+ // we move index from orderIndices to orderIndices2 for priority handlers.
1832
+
1833
+ for (unsigned i = 0; i < numFinded; i++)
1834
+ {
1835
+ const int index = orderIndices[i];
1836
+ if (index < 0)
1837
+ continue;
1838
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)index];
1839
+ if (ai.Flags_BackwardOpen())
1840
+ {
1841
+ // backward doesn't need start signatures
1842
+ orderIndices2.Add(index);
1843
+ orderIndices[i] = -1;
1844
+ }
1845
+ }
1846
+
1847
+ MakeCheckOrder(op.codecs, orderIndices, numFinded, orderIndices2, NULL, 0);
1848
+ MakeCheckOrder(op.codecs, orderIndices, numFinded, orderIndices2, byteBuffer, processedSize);
1849
+ // MakeCheckOrder(op.codecs, orderIndices, orderIndices.Size(), orderIndices2, NULL, 0);
1850
+ // MakeCheckOrder(op.codecs, orderIndices, orderIndices.Size(), orderIndices2, byteBuffer, processedSize);
1851
+ }
1852
+
1853
+ FOR_VECTOR (i, orderIndices)
1854
+ {
1855
+ const int val = orderIndices[i];
1856
+ if (val != -1)
1857
+ orderIndices2.Add(val);
1858
+ }
1859
+ orderIndices = orderIndices2;
1860
+ }
1861
+
1862
+ if (orderIndices.Size() >= 2)
1863
+ {
1864
+ const int iIso = FindFormatForArchiveType(op.codecs, orderIndices, "iso");
1865
+ const int iUdf = FindFormatForArchiveType(op.codecs, orderIndices, "udf");
1866
+ if (iUdf > iIso && iIso >= 0)
1867
+ {
1868
+ const int isoIndex = orderIndices[(unsigned)iIso];
1869
+ const int udfIndex = orderIndices[(unsigned)iUdf];
1870
+ orderIndices[(unsigned)iUdf] = isoIndex;
1871
+ orderIndices[(unsigned)iIso] = udfIndex;
1872
+ }
1873
+ }
1874
+
1875
+ numMainTypes = numFinded;
1876
+ isUnknownExt = (numMainTypes == 0) || isPrearcExt;
1877
+
1878
+ #else // Z7_SFX
1879
+
1880
+ numMainTypes = orderIndices.Size();
1881
+
1882
+ // we need correct numMainTypes for mutlivolume SFX (if some volume is missing)
1883
+ if (numFinded != 0)
1884
+ numMainTypes = numFinded;
1885
+
1886
+ #endif
1887
+ }
1888
+
1889
+ UInt64 fileSize = 0;
1890
+ if (op.stream)
1891
+ {
1892
+ RINOK(InStream_GetSize_SeekToBegin(op.stream, fileSize))
1893
+ }
1894
+ FileSize = fileSize;
1895
+
1896
+
1897
+ #ifndef Z7_SFX
1898
+
1899
+ CBoolArr skipFrontalFormat(op.codecs->Formats.Size());
1900
+ {
1901
+ FOR_VECTOR(i, op.codecs->Formats)
1902
+ skipFrontalFormat[i] = false;
1903
+ }
1904
+
1905
+ #endif
1906
+
1907
+ const COpenType &mode = op.openType;
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+ if (mode.CanReturnArc)
1914
+ {
1915
+ // ---------- OPEN main type by extenssion ----------
1916
+
1917
+ unsigned numCheckTypes = orderIndices.Size();
1918
+ if (formatIndex >= 0)
1919
+ numCheckTypes = numMainTypes;
1920
+
1921
+ for (unsigned i = 0; i < numCheckTypes; i++)
1922
+ {
1923
+ FormatIndex = orderIndices[i];
1924
+
1925
+ // orderIndices[] item cannot be negative here
1926
+
1927
+ bool exactOnly = false;
1928
+
1929
+ #ifndef Z7_SFX
1930
+
1931
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)FormatIndex];
1932
+ // OutputDebugStringW(ai.Name);
1933
+ if (i >= numMainTypes)
1934
+ {
1935
+ // here we allow mismatched extension only for backward handlers
1936
+ if (!ai.Flags_BackwardOpen()
1937
+ // && !ai.Flags_PureStartOpen()
1938
+ )
1939
+ continue;
1940
+ exactOnly = true;
1941
+ }
1942
+
1943
+ #endif
1944
+
1945
+ // Some handlers do not set total bytes. So we set it here
1946
+ if (op.callback)
1947
+ RINOK(op.callback->SetTotal(NULL, &fileSize))
1948
+
1949
+ if (op.stream)
1950
+ {
1951
+ RINOK(InStream_SeekToBegin(op.stream))
1952
+ }
1953
+
1954
+ CMyComPtr<IInArchive> archive;
1955
+
1956
+ RINOK(PrepareToOpen(op, (unsigned)FormatIndex, archive))
1957
+ if (!archive)
1958
+ continue;
1959
+
1960
+ HRESULT result;
1961
+ if (op.stream)
1962
+ {
1963
+ UInt64 searchLimit = (!exactOnly && searchMarkerInHandler) ? maxStartOffset: 0;
1964
+ result = archive->Open(op.stream, &searchLimit, op.callback);
1965
+ }
1966
+ else
1967
+ {
1968
+ CMyComPtr<IArchiveOpenSeq> openSeq;
1969
+ archive.QueryInterface(IID_IArchiveOpenSeq, (void **)&openSeq);
1970
+ if (!openSeq)
1971
+ return E_NOTIMPL;
1972
+ result = openSeq->OpenSeq(op.seqStream);
1973
+ }
1974
+
1975
+ RINOK(ReadBasicProps(archive, 0, result))
1976
+
1977
+ if (result == S_FALSE)
1978
+ {
1979
+ bool isArc = ErrorInfo.IsArc_After_NonOpen();
1980
+
1981
+ #ifndef Z7_SFX
1982
+ // if it's archive, we allow another open attempt for parser
1983
+ if (!mode.CanReturnParser || !isArc)
1984
+ skipFrontalFormat[(unsigned)FormatIndex] = true;
1985
+ #endif
1986
+
1987
+ if (exactOnly)
1988
+ continue;
1989
+
1990
+ if (i == 0 && numMainTypes == 1)
1991
+ {
1992
+ // we set NonOpenErrorInfo, only if there is only one main format (defined by extension).
1993
+ ErrorInfo.ErrorFormatIndex = FormatIndex;
1994
+ NonOpen_ErrorInfo = ErrorInfo;
1995
+
1996
+ if (!mode.CanReturnParser && isArc)
1997
+ {
1998
+ // if (formatIndex < 0 && !searchMarkerInHandler)
1999
+ {
2000
+ // if bad archive was detected, we don't need additional open attempts
2001
+ #ifndef Z7_SFX
2002
+ if (!IsPreArcFormat(ai) /* || !mode.SkipSfxStub */)
2003
+ #endif
2004
+ return S_FALSE;
2005
+ }
2006
+ }
2007
+ }
2008
+
2009
+ /*
2010
+ #ifndef Z7_SFX
2011
+ if (IsExeExt(extension) || ai.Flags_PreArc())
2012
+ {
2013
+ // openOnlyFullArc = false;
2014
+ // canReturnTailArc = true;
2015
+ // limitSignatureSearch = true;
2016
+ }
2017
+ #endif
2018
+ */
2019
+
2020
+ continue;
2021
+ }
2022
+
2023
+ RINOK(result)
2024
+
2025
+ #ifndef Z7_SFX
2026
+
2027
+ bool isMainFormat = isMainFormatArr[(unsigned)FormatIndex];
2028
+ const COpenSpecFlags &specFlags = mode.GetSpec(isForced, isMainFormat, isUnknownExt);
2029
+
2030
+ bool thereIsTail = ErrorInfo.ThereIsTail;
2031
+ if (thereIsTail && mode.ZerosTailIsAllowed)
2032
+ {
2033
+ RINOK(CheckZerosTail(op, (UInt64)(Offset + (Int64)PhySize)))
2034
+ if (ErrorInfo.IgnoreTail)
2035
+ thereIsTail = false;
2036
+ }
2037
+
2038
+ if (Offset > 0)
2039
+ {
2040
+ if (exactOnly
2041
+ || !searchMarkerInHandler
2042
+ || !specFlags.CanReturn_NonStart()
2043
+ || (mode.MaxStartOffset_Defined && (UInt64)Offset > mode.MaxStartOffset))
2044
+ continue;
2045
+ }
2046
+ if (thereIsTail)
2047
+ {
2048
+ if (Offset > 0)
2049
+ {
2050
+ if (!specFlags.CanReturnMid)
2051
+ continue;
2052
+ }
2053
+ else if (!specFlags.CanReturnFrontal)
2054
+ continue;
2055
+ }
2056
+
2057
+ if (Offset > 0 || thereIsTail)
2058
+ {
2059
+ if (formatIndex < 0)
2060
+ {
2061
+ if (IsPreArcFormat(ai))
2062
+ {
2063
+ // openOnlyFullArc = false;
2064
+ // canReturnTailArc = true;
2065
+ /*
2066
+ if (mode.SkipSfxStub)
2067
+ limitSignatureSearch = true;
2068
+ */
2069
+ // if (mode.SkipSfxStub)
2070
+ {
2071
+ // skipFrontalFormat[FormatIndex] = true;
2072
+ continue;
2073
+ }
2074
+ }
2075
+ }
2076
+ }
2077
+
2078
+ #endif
2079
+
2080
+ Archive = archive;
2081
+ return S_OK;
2082
+ }
2083
+ }
2084
+
2085
+
2086
+
2087
+ #ifndef Z7_SFX
2088
+
2089
+ if (!op.stream)
2090
+ return S_FALSE;
2091
+
2092
+ if (formatIndex >= 0 && !mode.CanReturnParser)
2093
+ {
2094
+ if (mode.MaxStartOffset_Defined)
2095
+ {
2096
+ if (mode.MaxStartOffset == 0)
2097
+ return S_FALSE;
2098
+ }
2099
+ else
2100
+ {
2101
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)formatIndex];
2102
+ if (ai.FindExtension(extension) >= 0)
2103
+ {
2104
+ if (ai.Flags_FindSignature() && searchMarkerInHandler)
2105
+ return S_FALSE;
2106
+ }
2107
+ }
2108
+ }
2109
+
2110
+ NArchive::NParser::CHandler *handlerSpec = new NArchive::NParser::CHandler;
2111
+ CMyComPtr<IInArchive> handler = handlerSpec;
2112
+
2113
+ CExtractCallback_To_OpenCallback *extractCallback_To_OpenCallback_Spec = new CExtractCallback_To_OpenCallback;
2114
+ CMyComPtr<IArchiveExtractCallback> extractCallback_To_OpenCallback = extractCallback_To_OpenCallback_Spec;
2115
+ extractCallback_To_OpenCallback_Spec->Init(op.callback);
2116
+
2117
+ {
2118
+ // ---------- Check all possible START archives ----------
2119
+ // this code is better for full file archives than Parser's code.
2120
+
2121
+ CByteBuffer byteBuffer;
2122
+ bool endOfFile = false;
2123
+ size_t processedSize;
2124
+ {
2125
+ size_t bufSize = 1 << 20; // it must be larger than max signature offset or IsArcFunc offset ((1 << 19) + x for UDF)
2126
+ if (bufSize > fileSize)
2127
+ {
2128
+ bufSize = (size_t)fileSize;
2129
+ endOfFile = true;
2130
+ }
2131
+ byteBuffer.Alloc(bufSize);
2132
+ RINOK(InStream_SeekToBegin(op.stream))
2133
+ processedSize = bufSize;
2134
+ RINOK(ReadStream(op.stream, byteBuffer, &processedSize))
2135
+ if (processedSize == 0)
2136
+ return S_FALSE;
2137
+ if (processedSize < bufSize)
2138
+ endOfFile = true;
2139
+ }
2140
+ CUIntVector sortedFormats;
2141
+
2142
+ unsigned i;
2143
+
2144
+ int splitIndex = -1;
2145
+
2146
+ for (i = 0; i < orderIndices.Size(); i++)
2147
+ {
2148
+ // orderIndices[] item cannot be negative here
2149
+ unsigned form = (unsigned)orderIndices[i];
2150
+ if (skipFrontalFormat[form])
2151
+ continue;
2152
+
2153
+ const CArcInfoEx &ai = op.codecs->Formats[form];
2154
+
2155
+ if (ai.Is_Split())
2156
+ {
2157
+ splitIndex = (int)form;
2158
+ continue;
2159
+ }
2160
+
2161
+ if (ai.Flags_ByExtOnlyOpen())
2162
+ continue;
2163
+
2164
+ if (ai.IsArcFunc)
2165
+ {
2166
+ UInt32 isArcRes = ai.IsArcFunc(byteBuffer, processedSize);
2167
+ if (isArcRes == k_IsArc_Res_NO)
2168
+ continue;
2169
+ if (isArcRes == k_IsArc_Res_NEED_MORE && endOfFile)
2170
+ continue;
2171
+ // if (isArcRes == k_IsArc_Res_YES_LOW_PROB) continue;
2172
+ sortedFormats.Insert(0, form);
2173
+ continue;
2174
+ }
2175
+
2176
+ const bool isNewStyleSignature = IsNewStyleSignature(ai);
2177
+ bool needCheck = !isNewStyleSignature
2178
+ || ai.Signatures.IsEmpty()
2179
+ || ai.Flags_PureStartOpen()
2180
+ || ai.Flags_StartOpen()
2181
+ || ai.Flags_BackwardOpen();
2182
+
2183
+ if (isNewStyleSignature && !ai.Signatures.IsEmpty())
2184
+ {
2185
+ unsigned k;
2186
+ for (k = 0; k < ai.Signatures.Size(); k++)
2187
+ {
2188
+ const CByteBuffer &sig = ai.Signatures[k];
2189
+ if (processedSize < ai.SignatureOffset + sig.Size())
2190
+ {
2191
+ if (!endOfFile)
2192
+ needCheck = true;
2193
+ }
2194
+ else if (TestSignature(sig, byteBuffer + ai.SignatureOffset, sig.Size()))
2195
+ break;
2196
+ }
2197
+ if (k != ai.Signatures.Size())
2198
+ {
2199
+ sortedFormats.Insert(0, form);
2200
+ continue;
2201
+ }
2202
+ }
2203
+ if (needCheck)
2204
+ sortedFormats.Add(form);
2205
+ }
2206
+
2207
+ if (splitIndex >= 0)
2208
+ sortedFormats.Insert(0, (unsigned)splitIndex);
2209
+
2210
+ for (i = 0; i < sortedFormats.Size(); i++)
2211
+ {
2212
+ FormatIndex = (int)sortedFormats[i];
2213
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)FormatIndex];
2214
+
2215
+ if (op.callback)
2216
+ RINOK(op.callback->SetTotal(NULL, &fileSize))
2217
+
2218
+ RINOK(InStream_SeekToBegin(op.stream))
2219
+
2220
+ CMyComPtr<IInArchive> archive;
2221
+ RINOK(PrepareToOpen(op, (unsigned)FormatIndex, archive))
2222
+ if (!archive)
2223
+ continue;
2224
+
2225
+ PRF(printf("\nSorted Open %S", (const wchar_t *)ai.Name));
2226
+ HRESULT result;
2227
+ {
2228
+ UInt64 searchLimit = 0;
2229
+ /*
2230
+ if (mode.CanReturnArc)
2231
+ result = archive->Open(op.stream, &searchLimit, op.callback);
2232
+ else
2233
+ */
2234
+ // if (!CanReturnArc), it's ParserMode, and we need phy size
2235
+ result = OpenArchiveSpec(archive,
2236
+ !mode.CanReturnArc, // needPhySize
2237
+ op.stream, &searchLimit, op.callback, extractCallback_To_OpenCallback);
2238
+ }
2239
+
2240
+ if (result == S_FALSE)
2241
+ {
2242
+ skipFrontalFormat[(unsigned)FormatIndex] = true;
2243
+ // FIXME: maybe we must use LenIsUnknown.
2244
+ // printf(" OpenForSize Error");
2245
+ continue;
2246
+ }
2247
+ RINOK(result)
2248
+
2249
+ RINOK(ReadBasicProps(archive, 0, result))
2250
+
2251
+ if (Offset > 0)
2252
+ {
2253
+ continue; // good handler doesn't return such Offset > 0
2254
+ // but there are some cases like false prefixed PK00 archive, when
2255
+ // we can support it?
2256
+ }
2257
+
2258
+ NArchive::NParser::CParseItem pi;
2259
+ pi.Offset = (UInt64)Offset;
2260
+ pi.Size = AvailPhySize;
2261
+
2262
+ // bool needScan = false;
2263
+
2264
+ if (!PhySize_Defined)
2265
+ {
2266
+ // it's for Z format
2267
+ pi.LenIsUnknown = true;
2268
+ // needScan = true;
2269
+ // phySize = arcRem;
2270
+ // nextNeedCheckStartOpen = false;
2271
+ }
2272
+
2273
+ /*
2274
+ if (OkPhySize_Defined)
2275
+ pi.OkSize = pi.OkPhySize;
2276
+ else
2277
+ pi.OkSize = pi.Size;
2278
+ */
2279
+
2280
+ pi.NormalizeOffset();
2281
+ // printf(" phySize = %8d", (unsigned)phySize);
2282
+
2283
+
2284
+ if (mode.CanReturnArc)
2285
+ {
2286
+ const bool isMainFormat = isMainFormatArr[(unsigned)FormatIndex];
2287
+ const COpenSpecFlags &specFlags = mode.GetSpec(isForced, isMainFormat, isUnknownExt);
2288
+ bool openCur = false;
2289
+
2290
+ if (!ErrorInfo.ThereIsTail)
2291
+ openCur = true;
2292
+ else
2293
+ {
2294
+ if (mode.ZerosTailIsAllowed)
2295
+ {
2296
+ RINOK(CheckZerosTail(op, (UInt64)(Offset + (Int64)PhySize)))
2297
+ if (ErrorInfo.IgnoreTail)
2298
+ openCur = true;
2299
+ }
2300
+ if (!openCur)
2301
+ {
2302
+ openCur = specFlags.CanReturnFrontal;
2303
+ if (formatIndex < 0) // format is not forced
2304
+ {
2305
+ if (IsPreArcFormat(ai))
2306
+ {
2307
+ // if (mode.SkipSfxStub)
2308
+ {
2309
+ openCur = false;
2310
+ }
2311
+ }
2312
+ }
2313
+ }
2314
+ }
2315
+
2316
+ if (openCur)
2317
+ {
2318
+ InStream = op.stream;
2319
+ Archive = archive;
2320
+ return S_OK;
2321
+ }
2322
+ }
2323
+
2324
+ skipFrontalFormat[(unsigned)FormatIndex] = true;
2325
+
2326
+
2327
+ // if (!mode.CanReturnArc)
2328
+ /*
2329
+ if (!ErrorInfo.ThereIsTail)
2330
+ continue;
2331
+ */
2332
+ if (pi.Offset == 0 && !pi.LenIsUnknown && pi.Size >= FileSize)
2333
+ continue;
2334
+
2335
+ // printf("\nAdd offset = %d", (int)pi.Offset);
2336
+ RINOK(ReadParseItemProps(archive, ai, pi))
2337
+ handlerSpec->AddItem(pi);
2338
+ }
2339
+ }
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+ // ---------- PARSER ----------
2346
+
2347
+ CUIntVector arc2sig; // formatIndex to signatureIndex
2348
+ CUIntVector sig2arc; // signatureIndex to formatIndex;
2349
+ {
2350
+ unsigned sum = 0;
2351
+ FOR_VECTOR (i, op.codecs->Formats)
2352
+ {
2353
+ arc2sig.Add(sum);
2354
+ const CObjectVector<CByteBuffer> &sigs = op.codecs->Formats[i].Signatures;
2355
+ sum += sigs.Size();
2356
+ FOR_VECTOR (k, sigs)
2357
+ sig2arc.Add(i);
2358
+ }
2359
+ }
2360
+
2361
+ {
2362
+ const size_t kBeforeSize = 1 << 16;
2363
+ const size_t kAfterSize = 1 << 20;
2364
+ const size_t kBufSize = 1 << 22; // it must be more than kBeforeSize + kAfterSize
2365
+
2366
+ const UInt32 kNumVals = (UInt32)1 << (kNumHashBytes * 8);
2367
+ CByteArr hashBuffer(kNumVals);
2368
+ Byte *hash = hashBuffer;
2369
+ memset(hash, 0xFF, kNumVals);
2370
+ Byte prevs[256];
2371
+ memset(prevs, 0xFF, sizeof(prevs));
2372
+ if (sig2arc.Size() >= 0xFF)
2373
+ return S_FALSE;
2374
+
2375
+ CUIntVector difficultFormats;
2376
+ CBoolArr difficultBools(256);
2377
+ {
2378
+ for (unsigned i = 0; i < 256; i++)
2379
+ difficultBools[i] = false;
2380
+ }
2381
+
2382
+ bool thereAreHandlersForSearch = false;
2383
+
2384
+ // UInt32 maxSignatureEnd = 0;
2385
+
2386
+ FOR_VECTOR (i, orderIndices)
2387
+ {
2388
+ int index = orderIndices[i];
2389
+ if (index < 0)
2390
+ continue;
2391
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)index];
2392
+ if (ai.Flags_ByExtOnlyOpen())
2393
+ continue;
2394
+ bool isDifficult = false;
2395
+ // if (ai.Version < 0x91F) // we don't use parser with old DLL (before 9.31)
2396
+ if (!ai.NewInterface)
2397
+ isDifficult = true;
2398
+ else
2399
+ {
2400
+ if (ai.Flags_StartOpen())
2401
+ isDifficult = true;
2402
+ FOR_VECTOR (k, ai.Signatures)
2403
+ {
2404
+ const CByteBuffer &sig = ai.Signatures[k];
2405
+ /*
2406
+ UInt32 signatureEnd = ai.SignatureOffset + (UInt32)sig.Size();
2407
+ if (maxSignatureEnd < signatureEnd)
2408
+ maxSignatureEnd = signatureEnd;
2409
+ */
2410
+ if (sig.Size() < kNumHashBytes)
2411
+ {
2412
+ isDifficult = true;
2413
+ continue;
2414
+ }
2415
+ thereAreHandlersForSearch = true;
2416
+ UInt32 v = HASH_VAL(sig);
2417
+ unsigned sigIndex = arc2sig[(unsigned)index] + k;
2418
+ prevs[sigIndex] = hash[v];
2419
+ hash[v] = (Byte)sigIndex;
2420
+ }
2421
+ }
2422
+ if (isDifficult)
2423
+ {
2424
+ difficultFormats.Add((unsigned)index);
2425
+ difficultBools[(unsigned)index] = true;
2426
+ }
2427
+ }
2428
+
2429
+ if (!thereAreHandlersForSearch)
2430
+ {
2431
+ // openOnlyFullArc = true;
2432
+ // canReturnTailArc = true;
2433
+ }
2434
+
2435
+ RINOK(InStream_SeekToBegin(op.stream))
2436
+
2437
+ CLimitedCachedInStream *limitedStreamSpec = new CLimitedCachedInStream;
2438
+ CMyComPtr<IInStream> limitedStream = limitedStreamSpec;
2439
+ limitedStreamSpec->SetStream(op.stream);
2440
+
2441
+ CArchiveOpenCallback_Offset *openCallback_Offset_Spec = NULL;
2442
+ CMyComPtr<IArchiveOpenCallback> openCallback_Offset;
2443
+ if (op.callback)
2444
+ {
2445
+ openCallback_Offset_Spec = new CArchiveOpenCallback_Offset;
2446
+ openCallback_Offset = openCallback_Offset_Spec;
2447
+ openCallback_Offset_Spec->Callback = op.callback;
2448
+ openCallback_Offset_Spec->Callback.QueryInterface(IID_IArchiveOpenVolumeCallback, &openCallback_Offset_Spec->OpenVolumeCallback);
2449
+ #ifndef Z7_NO_CRYPTO
2450
+ openCallback_Offset_Spec->Callback.QueryInterface(IID_ICryptoGetTextPassword, &openCallback_Offset_Spec->GetTextPassword);
2451
+ #endif
2452
+ }
2453
+
2454
+ if (op.callback)
2455
+ RINOK(op.callback->SetTotal(NULL, &fileSize))
2456
+
2457
+ CByteBuffer &byteBuffer = limitedStreamSpec->Buffer;
2458
+ byteBuffer.Alloc(kBufSize);
2459
+
2460
+ UInt64 callbackPrev = 0;
2461
+ bool needCheckStartOpen = true; // = true, if we need to test all archives types for current pos.
2462
+
2463
+ bool endOfFile = false;
2464
+ UInt64 bufPhyPos = 0;
2465
+ size_t bytesInBuf = 0;
2466
+ // UInt64 prevPos = 0;
2467
+
2468
+ // ---------- Main Scan Loop ----------
2469
+
2470
+ UInt64 pos = 0;
2471
+
2472
+ if (!mode.EachPos && handlerSpec->_items.Size() == 1)
2473
+ {
2474
+ NArchive::NParser::CParseItem &pi = handlerSpec->_items[0];
2475
+ if (!pi.LenIsUnknown && pi.Offset == 0)
2476
+ pos = pi.Size;
2477
+ }
2478
+
2479
+ for (;;)
2480
+ {
2481
+ // printf("\nPos = %d", (int)pos);
2482
+ UInt64 posInBuf = pos - bufPhyPos;
2483
+
2484
+ // if (pos > ((UInt64)1 << 35)) break;
2485
+
2486
+ if (!endOfFile)
2487
+ {
2488
+ if (bytesInBuf < kBufSize)
2489
+ {
2490
+ size_t processedSize = kBufSize - bytesInBuf;
2491
+ // printf("\nRead ask = %d", (unsigned)processedSize);
2492
+ UInt64 seekPos = bufPhyPos + bytesInBuf;
2493
+ RINOK(InStream_SeekSet(op.stream, bufPhyPos + bytesInBuf))
2494
+ RINOK(ReadStream(op.stream, byteBuffer.NonConstData() + bytesInBuf, &processedSize))
2495
+ // printf(" processed = %d", (unsigned)processedSize);
2496
+ if (processedSize == 0)
2497
+ {
2498
+ fileSize = seekPos;
2499
+ endOfFile = true;
2500
+ }
2501
+ else
2502
+ {
2503
+ bytesInBuf += processedSize;
2504
+ limitedStreamSpec->SetCache(processedSize, (size_t)bufPhyPos);
2505
+ }
2506
+ continue;
2507
+ }
2508
+
2509
+ if (bytesInBuf < posInBuf)
2510
+ {
2511
+ UInt64 skipSize = posInBuf - bytesInBuf;
2512
+ if (skipSize <= kBeforeSize)
2513
+ {
2514
+ size_t keepSize = (size_t)(kBeforeSize - skipSize);
2515
+ // printf("\nmemmove skip = %d", (int)keepSize);
2516
+ memmove(byteBuffer, byteBuffer.ConstData() + bytesInBuf - keepSize, keepSize);
2517
+ bytesInBuf = keepSize;
2518
+ bufPhyPos = pos - keepSize;
2519
+ continue;
2520
+ }
2521
+ // printf("\nSkip %d", (int)(skipSize - kBeforeSize));
2522
+ // RINOK(op.stream->Seek(skipSize - kBeforeSize, STREAM_SEEK_CUR, NULL));
2523
+ bytesInBuf = 0;
2524
+ bufPhyPos = pos - kBeforeSize;
2525
+ continue;
2526
+ }
2527
+
2528
+ if (bytesInBuf - posInBuf < kAfterSize)
2529
+ {
2530
+ size_t beg = (size_t)posInBuf - kBeforeSize;
2531
+ // printf("\nmemmove for after beg = %d", (int)beg);
2532
+ memmove(byteBuffer, byteBuffer.ConstData() + beg, bytesInBuf - beg);
2533
+ bufPhyPos += beg;
2534
+ bytesInBuf -= beg;
2535
+ continue;
2536
+ }
2537
+ }
2538
+
2539
+ if (bytesInBuf <= (size_t)posInBuf)
2540
+ break;
2541
+
2542
+ bool useOffsetCallback = false;
2543
+ if (openCallback_Offset)
2544
+ {
2545
+ openCallback_Offset_Spec->Files = handlerSpec->_items.Size();
2546
+ openCallback_Offset_Spec->Offset = pos;
2547
+
2548
+ useOffsetCallback = (!op.openType.CanReturnArc || handlerSpec->_items.Size() > 1);
2549
+
2550
+ if (pos >= callbackPrev + (1 << 23))
2551
+ {
2552
+ RINOK(openCallback_Offset->SetCompleted(NULL, NULL))
2553
+ callbackPrev = pos;
2554
+ }
2555
+ }
2556
+
2557
+ {
2558
+ UInt64 endPos = bufPhyPos + bytesInBuf;
2559
+ if (fileSize < endPos)
2560
+ {
2561
+ FileSize = fileSize; // why ????
2562
+ fileSize = endPos;
2563
+ }
2564
+ }
2565
+
2566
+ const size_t availSize = bytesInBuf - (size_t)posInBuf;
2567
+ if (availSize < kNumHashBytes)
2568
+ break;
2569
+ size_t scanSize = availSize -
2570
+ ((availSize >= kAfterSize) ? kAfterSize : kNumHashBytes);
2571
+
2572
+ {
2573
+ /*
2574
+ UInt64 scanLimit = openOnlyFullArc ?
2575
+ maxSignatureEnd :
2576
+ op.openType.ScanSize + maxSignatureEnd;
2577
+ */
2578
+ if (!mode.CanReturnParser)
2579
+ {
2580
+ if (pos > maxStartOffset)
2581
+ break;
2582
+ UInt64 remScan = maxStartOffset - pos;
2583
+ if (scanSize > remScan)
2584
+ scanSize = (size_t)remScan;
2585
+ }
2586
+ }
2587
+
2588
+ scanSize++;
2589
+
2590
+ const Byte *buf = byteBuffer.ConstData() + (size_t)posInBuf;
2591
+ const Byte *bufLimit = buf + scanSize;
2592
+ size_t ppp = 0;
2593
+
2594
+ if (!needCheckStartOpen)
2595
+ {
2596
+ for (; buf < bufLimit && hash[HASH_VAL(buf)] == 0xFF; buf++);
2597
+ ppp = (size_t)(buf - (byteBuffer.ConstData() + (size_t)posInBuf));
2598
+ pos += ppp;
2599
+ if (buf == bufLimit)
2600
+ continue;
2601
+ }
2602
+
2603
+ UInt32 v = HASH_VAL(buf);
2604
+ bool nextNeedCheckStartOpen = true;
2605
+ unsigned i = hash[v];
2606
+ unsigned indexOfDifficult = 0;
2607
+
2608
+ // ---------- Open Loop for Current Pos ----------
2609
+ bool wasOpen = false;
2610
+
2611
+ for (;;)
2612
+ {
2613
+ unsigned index;
2614
+ bool isDifficult;
2615
+ if (needCheckStartOpen && indexOfDifficult < difficultFormats.Size())
2616
+ {
2617
+ index = difficultFormats[indexOfDifficult++];
2618
+ isDifficult = true;
2619
+ }
2620
+ else
2621
+ {
2622
+ if (i == 0xFF)
2623
+ break;
2624
+ index = sig2arc[i];
2625
+ unsigned sigIndex = i - arc2sig[index];
2626
+ i = prevs[i];
2627
+ if (needCheckStartOpen && difficultBools[index])
2628
+ continue;
2629
+ const CArcInfoEx &ai = op.codecs->Formats[index];
2630
+
2631
+ if (pos < ai.SignatureOffset)
2632
+ continue;
2633
+
2634
+ /*
2635
+ if (openOnlyFullArc)
2636
+ if (pos != ai.SignatureOffset)
2637
+ continue;
2638
+ */
2639
+
2640
+ const CByteBuffer &sig = ai.Signatures[sigIndex];
2641
+
2642
+ if (ppp + sig.Size() > availSize
2643
+ || !TestSignature(buf, sig, sig.Size()))
2644
+ continue;
2645
+ // printf("\nSignature OK: %10S %8x %5d", (const wchar_t *)ai.Name, (int)pos, (int)(pos - prevPos));
2646
+ // prevPos = pos;
2647
+ isDifficult = false;
2648
+ }
2649
+
2650
+ const CArcInfoEx &ai = op.codecs->Formats[index];
2651
+
2652
+
2653
+ if ((isDifficult && pos == 0) || ai.SignatureOffset == pos)
2654
+ {
2655
+ // we don't check same archive second time */
2656
+ if (skipFrontalFormat[index])
2657
+ continue;
2658
+ }
2659
+
2660
+ UInt64 startArcPos = pos;
2661
+ if (!isDifficult)
2662
+ {
2663
+ if (pos < ai.SignatureOffset)
2664
+ continue;
2665
+ startArcPos = pos - ai.SignatureOffset;
2666
+ /*
2667
+ // we don't need the check for Z files
2668
+ if (startArcPos < handlerSpec->GetLastEnd())
2669
+ continue;
2670
+ */
2671
+ }
2672
+
2673
+ if (ai.IsArcFunc && startArcPos >= bufPhyPos)
2674
+ {
2675
+ const size_t offsetInBuf = (size_t)(startArcPos - bufPhyPos);
2676
+ if (offsetInBuf < bytesInBuf)
2677
+ {
2678
+ const UInt32 isArcRes = ai.IsArcFunc(byteBuffer.ConstData() + offsetInBuf, bytesInBuf - offsetInBuf);
2679
+ if (isArcRes == k_IsArc_Res_NO)
2680
+ continue;
2681
+ if (isArcRes == k_IsArc_Res_NEED_MORE && endOfFile)
2682
+ continue;
2683
+ /*
2684
+ if (isArcRes == k_IsArc_Res_YES_LOW_PROB)
2685
+ {
2686
+ // if (pos != ai.SignatureOffset)
2687
+ continue;
2688
+ }
2689
+ */
2690
+ }
2691
+ // printf("\nIsArc OK: %S", (const wchar_t *)ai.Name);
2692
+ }
2693
+
2694
+ PRF(printf("\npos = %9I64d : %S", pos, (const wchar_t *)ai.Name));
2695
+
2696
+ const bool isMainFormat = isMainFormatArr[index];
2697
+ const COpenSpecFlags &specFlags = mode.GetSpec(isForced, isMainFormat, isUnknownExt);
2698
+
2699
+ CMyComPtr<IInArchive> archive;
2700
+ RINOK(PrepareToOpen(op, index, archive))
2701
+ if (!archive)
2702
+ return E_FAIL;
2703
+
2704
+ // OutputDebugStringW(ai.Name);
2705
+
2706
+ const UInt64 rem = fileSize - startArcPos;
2707
+
2708
+ UInt64 arcStreamOffset = 0;
2709
+
2710
+ if (ai.Flags_UseGlobalOffset())
2711
+ {
2712
+ RINOK(limitedStreamSpec->InitAndSeek(0, fileSize))
2713
+ RINOK(InStream_SeekSet(limitedStream, startArcPos))
2714
+ }
2715
+ else
2716
+ {
2717
+ RINOK(limitedStreamSpec->InitAndSeek(startArcPos, rem))
2718
+ arcStreamOffset = startArcPos;
2719
+ }
2720
+
2721
+ UInt64 maxCheckStartPosition = 0;
2722
+
2723
+ if (openCallback_Offset)
2724
+ {
2725
+ openCallback_Offset_Spec->Files = handlerSpec->_items.Size();
2726
+ openCallback_Offset_Spec->Offset = startArcPos;
2727
+ }
2728
+
2729
+ // HRESULT result = archive->Open(limitedStream, &maxCheckStartPosition, openCallback_Offset);
2730
+ extractCallback_To_OpenCallback_Spec->Files = 0;
2731
+ extractCallback_To_OpenCallback_Spec->Offset = startArcPos;
2732
+
2733
+ HRESULT result = OpenArchiveSpec(archive,
2734
+ true, // needPhySize
2735
+ limitedStream, &maxCheckStartPosition,
2736
+ useOffsetCallback ? (IArchiveOpenCallback *)openCallback_Offset : (IArchiveOpenCallback *)op.callback,
2737
+ extractCallback_To_OpenCallback);
2738
+
2739
+ RINOK(ReadBasicProps(archive, ai.Flags_UseGlobalOffset() ? 0 : startArcPos, result))
2740
+
2741
+ bool isOpen = false;
2742
+
2743
+ if (result == S_FALSE)
2744
+ {
2745
+ if (!mode.CanReturnParser)
2746
+ {
2747
+ if (formatIndex < 0 && ErrorInfo.IsArc_After_NonOpen())
2748
+ {
2749
+ ErrorInfo.ErrorFormatIndex = (int)index;
2750
+ NonOpen_ErrorInfo = ErrorInfo;
2751
+ // if archive was detected, we don't need additional open attempts
2752
+ return S_FALSE;
2753
+ }
2754
+ continue;
2755
+ }
2756
+ if (!ErrorInfo.IsArc_After_NonOpen() || !PhySize_Defined || PhySize == 0)
2757
+ continue;
2758
+ }
2759
+ else
2760
+ {
2761
+ if (PhySize_Defined && PhySize == 0)
2762
+ {
2763
+ PRF(printf(" phySize_Defined && PhySize == 0 "));
2764
+ // we skip that epmty archive case with unusual unexpected (PhySize == 0) from Code function.
2765
+ continue;
2766
+ }
2767
+ isOpen = true;
2768
+ RINOK(result)
2769
+ PRF(printf(" OK "));
2770
+ }
2771
+
2772
+ // fprintf(stderr, "\n %8X %S", startArcPos, Path);
2773
+ // printf("\nOpen OK: %S", ai.Name);
2774
+
2775
+
2776
+ NArchive::NParser::CParseItem pi;
2777
+ pi.Offset = startArcPos;
2778
+
2779
+ if (ai.Flags_UseGlobalOffset())
2780
+ pi.Offset = (UInt64)Offset;
2781
+ else if (Offset != 0)
2782
+ return E_FAIL;
2783
+
2784
+ const UInt64 arcRem = FileSize - pi.Offset;
2785
+ UInt64 phySize = arcRem;
2786
+ const bool phySize_Defined = PhySize_Defined;
2787
+ if (phySize_Defined)
2788
+ {
2789
+ if (pi.Offset + PhySize > FileSize)
2790
+ {
2791
+ // ErrorInfo.ThereIsTail = true;
2792
+ PhySize = FileSize - pi.Offset;
2793
+ }
2794
+ phySize = PhySize;
2795
+ }
2796
+ if (phySize == 0 || (UInt64)phySize > ((UInt64)1 << 63))
2797
+ return E_FAIL;
2798
+
2799
+ /*
2800
+ if (!ai.UseGlobalOffset)
2801
+ {
2802
+ if (phySize > arcRem)
2803
+ {
2804
+ ThereIsTail = true;
2805
+ phySize = arcRem;
2806
+ }
2807
+ }
2808
+ */
2809
+
2810
+ bool needScan = false;
2811
+
2812
+
2813
+ if (isOpen && !phySize_Defined)
2814
+ {
2815
+ // it's for Z format, or bzip2,gz,xz with phySize that was not detected
2816
+ pi.LenIsUnknown = true;
2817
+ needScan = true;
2818
+ phySize = arcRem;
2819
+ nextNeedCheckStartOpen = false;
2820
+ }
2821
+
2822
+ pi.Size = phySize;
2823
+ /*
2824
+ if (OkPhySize_Defined)
2825
+ pi.OkSize = OkPhySize;
2826
+ */
2827
+ pi.NormalizeOffset();
2828
+ // printf(" phySize = %8d", (unsigned)phySize);
2829
+
2830
+ /*
2831
+ if (needSkipFullArc)
2832
+ if (pi.Offset == 0 && phySize_Defined && pi.Size >= fileSize)
2833
+ continue;
2834
+ */
2835
+ if (pi.Offset == 0 && !pi.LenIsUnknown && pi.Size >= FileSize)
2836
+ {
2837
+ // it's possible for dmg archives
2838
+ if (!mode.CanReturnArc)
2839
+ continue;
2840
+ }
2841
+
2842
+ if (mode.EachPos)
2843
+ pos++;
2844
+ else if (needScan)
2845
+ {
2846
+ pos++;
2847
+ /*
2848
+ if (!OkPhySize_Defined)
2849
+ pos++;
2850
+ else
2851
+ pos = pi.Offset + pi.OkSize;
2852
+ */
2853
+ }
2854
+ else
2855
+ pos = pi.Offset + pi.Size;
2856
+
2857
+
2858
+ RINOK(ReadParseItemProps(archive, ai, pi))
2859
+
2860
+ if (pi.Offset < startArcPos && !mode.EachPos /* && phySize_Defined */)
2861
+ {
2862
+ /* It's for DMG format.
2863
+ This code deletes all previous items that are included to current item */
2864
+
2865
+ while (!handlerSpec->_items.IsEmpty())
2866
+ {
2867
+ {
2868
+ const NArchive::NParser::CParseItem &back = handlerSpec->_items.Back();
2869
+ if (back.Offset < pi.Offset)
2870
+ break;
2871
+ if (back.Offset + back.Size > pi.Offset + pi.Size)
2872
+ break;
2873
+ }
2874
+ handlerSpec->_items.DeleteBack();
2875
+ }
2876
+ }
2877
+
2878
+
2879
+ if (isOpen && mode.CanReturnArc && phySize_Defined)
2880
+ {
2881
+ // if (pi.Offset + pi.Size >= fileSize)
2882
+ bool openCur = false;
2883
+
2884
+ bool thereIsTail = ErrorInfo.ThereIsTail;
2885
+ if (thereIsTail && mode.ZerosTailIsAllowed)
2886
+ {
2887
+ RINOK(CheckZerosTail(op, (UInt64)((Int64)arcStreamOffset + Offset + (Int64)PhySize)))
2888
+ if (ErrorInfo.IgnoreTail)
2889
+ thereIsTail = false;
2890
+ }
2891
+
2892
+ if (pi.Offset != 0)
2893
+ {
2894
+ if (!pi.IsNotArcType)
2895
+ {
2896
+ if (thereIsTail)
2897
+ openCur = specFlags.CanReturnMid;
2898
+ else
2899
+ openCur = specFlags.CanReturnTail;
2900
+ }
2901
+ }
2902
+ else
2903
+ {
2904
+ if (!thereIsTail)
2905
+ openCur = true;
2906
+ else
2907
+ openCur = specFlags.CanReturnFrontal;
2908
+
2909
+ if (formatIndex >= -2)
2910
+ openCur = true;
2911
+ }
2912
+
2913
+ if (formatIndex < 0 && pi.IsSelfExe /* && mode.SkipSfxStub */)
2914
+ openCur = false;
2915
+
2916
+ // We open file as SFX, if there is front archive or first archive is "Self Executable"
2917
+ if (!openCur && !pi.IsSelfExe && !thereIsTail &&
2918
+ (!pi.IsNotArcType || pi.Offset == 0))
2919
+ {
2920
+ if (handlerSpec->_items.IsEmpty())
2921
+ {
2922
+ if (specFlags.CanReturnTail)
2923
+ openCur = true;
2924
+ }
2925
+ else if (handlerSpec->_items.Size() == 1)
2926
+ {
2927
+ if (handlerSpec->_items[0].IsSelfExe)
2928
+ {
2929
+ if (mode.SpecUnknownExt.CanReturnTail)
2930
+ openCur = true;
2931
+ }
2932
+ }
2933
+ }
2934
+
2935
+ if (openCur)
2936
+ {
2937
+ InStream = op.stream;
2938
+ Archive = archive;
2939
+ FormatIndex = (int)index;
2940
+ ArcStreamOffset = arcStreamOffset;
2941
+ return S_OK;
2942
+ }
2943
+ }
2944
+
2945
+ /*
2946
+ if (openOnlyFullArc)
2947
+ {
2948
+ ErrorInfo.ClearErrors();
2949
+ return S_FALSE;
2950
+ }
2951
+ */
2952
+
2953
+ pi.FormatIndex = (int)index;
2954
+
2955
+ // printf("\nAdd offset = %d", (int)pi.Offset);
2956
+ handlerSpec->AddItem(pi);
2957
+ wasOpen = true;
2958
+ break;
2959
+ }
2960
+ // ---------- End of Open Loop for Current Pos ----------
2961
+
2962
+ if (!wasOpen)
2963
+ pos++;
2964
+ needCheckStartOpen = (nextNeedCheckStartOpen && wasOpen);
2965
+ }
2966
+ // ---------- End of Main Scan Loop ----------
2967
+
2968
+ /*
2969
+ if (handlerSpec->_items.Size() == 1)
2970
+ {
2971
+ const NArchive::NParser::CParseItem &pi = handlerSpec->_items[0];
2972
+ if (pi.Size == fileSize && pi.Offset == 0)
2973
+ {
2974
+ Archive = archive;
2975
+ FormatIndex2 = pi.FormatIndex;
2976
+ return S_OK;
2977
+ }
2978
+ }
2979
+ */
2980
+
2981
+ if (mode.CanReturnParser)
2982
+ {
2983
+ bool returnParser = (handlerSpec->_items.Size() == 1); // it's possible if fileSize was not correct at start of parsing
2984
+ handlerSpec->AddUnknownItem(fileSize);
2985
+ if (handlerSpec->_items.Size() == 0)
2986
+ return S_FALSE;
2987
+ if (returnParser || handlerSpec->_items.Size() != 1)
2988
+ {
2989
+ // return S_FALSE;
2990
+ handlerSpec->_stream = op.stream;
2991
+ Archive = handler;
2992
+ ErrorInfo.ClearErrors();
2993
+ IsParseArc = true;
2994
+ FormatIndex = -1; // It's parser
2995
+ Offset = 0;
2996
+ return S_OK;
2997
+ }
2998
+ }
2999
+ }
3000
+
3001
+ #endif
3002
+
3003
+ if (!Archive)
3004
+ return S_FALSE;
3005
+ return S_OK;
3006
+ }
3007
+
3008
+
3009
+
3010
+
3011
+ HRESULT CArc::OpenStream(const COpenOptions &op)
3012
+ {
3013
+ RINOK(OpenStream2(op))
3014
+ // PrintNumber("op.formatIndex 3", op.formatIndex);
3015
+
3016
+ if (Archive)
3017
+ {
3018
+ GetRawProps.Release();
3019
+ GetRootProps.Release();
3020
+ Archive->QueryInterface(IID_IArchiveGetRawProps, (void **)&GetRawProps);
3021
+ Archive->QueryInterface(IID_IArchiveGetRootProps, (void **)&GetRootProps);
3022
+
3023
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidIsTree, IsTree))
3024
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidIsDeleted, Ask_Deleted))
3025
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidIsAltStream, Ask_AltStream))
3026
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidIsAux, Ask_Aux))
3027
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidINode, Ask_INode))
3028
+ RINOK(Archive_GetArcProp_Bool(Archive, kpidReadOnly, IsReadOnly))
3029
+
3030
+ const UString fileName = ExtractFileNameFromPath(Path);
3031
+ UString extension;
3032
+ {
3033
+ int dotPos = fileName.ReverseFind_Dot();
3034
+ if (dotPos >= 0)
3035
+ extension = fileName.Ptr((unsigned)(dotPos + 1));
3036
+ }
3037
+
3038
+ DefaultName.Empty();
3039
+ if (FormatIndex >= 0)
3040
+ {
3041
+ const CArcInfoEx &ai = op.codecs->Formats[(unsigned)FormatIndex];
3042
+ if (ai.Exts.Size() == 0)
3043
+ DefaultName = GetDefaultName2(fileName, UString(), UString());
3044
+ else
3045
+ {
3046
+ int subExtIndex = ai.FindExtension(extension);
3047
+ if (subExtIndex < 0)
3048
+ subExtIndex = 0;
3049
+ const CArcExtInfo &extInfo = ai.Exts[(unsigned)subExtIndex];
3050
+ DefaultName = GetDefaultName2(fileName, extInfo.Ext, extInfo.AddExt);
3051
+ }
3052
+ }
3053
+ }
3054
+
3055
+ return S_OK;
3056
+ }
3057
+
3058
+ #ifdef Z7_SFX
3059
+
3060
+ #ifdef _WIN32
3061
+ #define k_ExeExt ".exe"
3062
+ static const unsigned k_ExeExt_Len = 4;
3063
+ #else
3064
+ #define k_ExeExt ""
3065
+ static const unsigned k_ExeExt_Len = 0;
3066
+ #endif
3067
+
3068
+ #endif
3069
+
3070
+ HRESULT CArc::OpenStreamOrFile(COpenOptions &op)
3071
+ {
3072
+ CMyComPtr<IInStream> fileStream;
3073
+ CMyComPtr<ISequentialInStream> seqStream;
3074
+ CInFileStream *fileStreamSpec = NULL;
3075
+
3076
+ if (op.stdInMode)
3077
+ {
3078
+ #if 1
3079
+ seqStream = new CStdInFileStream;
3080
+ #else
3081
+ if (!CreateStdInStream(seqStream))
3082
+ return GetLastError_noZero_HRESULT();
3083
+ #endif
3084
+ op.seqStream = seqStream;
3085
+ }
3086
+ else if (!op.stream)
3087
+ {
3088
+ fileStreamSpec = new CInFileStream;
3089
+ fileStream = fileStreamSpec;
3090
+ Path = filePath;
3091
+ if (!fileStreamSpec->Open(us2fs(Path)))
3092
+ return GetLastError_noZero_HRESULT();
3093
+ op.stream = fileStream;
3094
+ #ifdef Z7_SFX
3095
+ IgnoreSplit = true;
3096
+ #endif
3097
+ }
3098
+
3099
+ /*
3100
+ if (callback)
3101
+ {
3102
+ UInt64 fileSize;
3103
+ RINOK(InStream_GetSize_SeekToEnd(op.stream, fileSize));
3104
+ RINOK(op.callback->SetTotal(NULL, &fileSize))
3105
+ }
3106
+ */
3107
+
3108
+ HRESULT res = OpenStream(op);
3109
+ IgnoreSplit = false;
3110
+
3111
+ #ifdef Z7_SFX
3112
+
3113
+ if (res != S_FALSE
3114
+ || !fileStreamSpec
3115
+ || !op.callbackSpec
3116
+ || NonOpen_ErrorInfo.IsArc_After_NonOpen())
3117
+ return res;
3118
+
3119
+ {
3120
+ if (filePath.Len() > k_ExeExt_Len
3121
+ && StringsAreEqualNoCase_Ascii(filePath.RightPtr(k_ExeExt_Len), k_ExeExt))
3122
+ {
3123
+ const UString path2 = filePath.Left(filePath.Len() - k_ExeExt_Len);
3124
+ FOR_VECTOR (i, op.codecs->Formats)
3125
+ {
3126
+ const CArcInfoEx &ai = op.codecs->Formats[i];
3127
+ if (ai.Is_Split())
3128
+ continue;
3129
+ UString path3 = path2;
3130
+ path3.Add_Dot();
3131
+ path3 += ai.GetMainExt(); // "7z" for SFX.
3132
+ Path = path3;
3133
+ Path += ".001";
3134
+ bool isOk = op.callbackSpec->SetSecondFileInfo(us2fs(Path));
3135
+ if (!isOk)
3136
+ {
3137
+ Path = path3;
3138
+ isOk = op.callbackSpec->SetSecondFileInfo(us2fs(Path));
3139
+ }
3140
+ if (isOk)
3141
+ {
3142
+ if (fileStreamSpec->Open(us2fs(Path)))
3143
+ {
3144
+ op.stream = fileStream;
3145
+ NonOpen_ErrorInfo.ClearErrors_Full();
3146
+ if (OpenStream(op) == S_OK)
3147
+ return S_OK;
3148
+ }
3149
+ }
3150
+ }
3151
+ }
3152
+ }
3153
+
3154
+ #endif
3155
+
3156
+ return res;
3157
+ }
3158
+
3159
+ void CArchiveLink::KeepModeForNextOpen()
3160
+ {
3161
+ for (unsigned i = Arcs.Size(); i != 0;)
3162
+ {
3163
+ i--;
3164
+ CMyComPtr<IArchiveKeepModeForNextOpen> keep;
3165
+ Arcs[i].Archive->QueryInterface(IID_IArchiveKeepModeForNextOpen, (void **)&keep);
3166
+ if (keep)
3167
+ keep->KeepModeForNextOpen();
3168
+ }
3169
+ }
3170
+
3171
+ HRESULT CArchiveLink::Close()
3172
+ {
3173
+ for (unsigned i = Arcs.Size(); i != 0;)
3174
+ {
3175
+ i--;
3176
+ RINOK(Arcs[i].Close())
3177
+ }
3178
+ IsOpen = false;
3179
+ // ErrorsText.Empty();
3180
+ return S_OK;
3181
+ }
3182
+
3183
+ void CArchiveLink::Release()
3184
+ {
3185
+ // NonOpenErrorFormatIndex = -1;
3186
+ NonOpen_ErrorInfo.ClearErrors();
3187
+ NonOpen_ArcPath.Empty();
3188
+ while (!Arcs.IsEmpty())
3189
+ Arcs.DeleteBack();
3190
+ }
3191
+
3192
+ /*
3193
+ void CArchiveLink::Set_ErrorsText()
3194
+ {
3195
+ FOR_VECTOR(i, Arcs)
3196
+ {
3197
+ const CArc &arc = Arcs[i];
3198
+ if (!arc.ErrorFlagsText.IsEmpty())
3199
+ {
3200
+ if (!ErrorsText.IsEmpty())
3201
+ ErrorsText.Add_LF();
3202
+ ErrorsText += GetUnicodeString(arc.ErrorFlagsText);
3203
+ }
3204
+ if (!arc.ErrorMessage.IsEmpty())
3205
+ {
3206
+ if (!ErrorsText.IsEmpty())
3207
+ ErrorsText.Add_LF();
3208
+ ErrorsText += arc.ErrorMessage;
3209
+ }
3210
+
3211
+ if (!arc.WarningMessage.IsEmpty())
3212
+ {
3213
+ if (!ErrorsText.IsEmpty())
3214
+ ErrorsText.Add_LF();
3215
+ ErrorsText += arc.WarningMessage;
3216
+ }
3217
+ }
3218
+ }
3219
+ */
3220
+
3221
+ HRESULT CArchiveLink::Open(COpenOptions &op)
3222
+ {
3223
+ Release();
3224
+ if (op.types->Size() >= 32)
3225
+ return E_NOTIMPL;
3226
+
3227
+ HRESULT resSpec;
3228
+
3229
+ for (;;)
3230
+ {
3231
+ resSpec = S_OK;
3232
+
3233
+ op.openType = COpenType();
3234
+ if (op.types->Size() >= 1)
3235
+ {
3236
+ COpenType latest;
3237
+ if (Arcs.Size() < op.types->Size())
3238
+ latest = (*op.types)[op.types->Size() - Arcs.Size() - 1];
3239
+ else
3240
+ {
3241
+ latest = (*op.types)[0];
3242
+ if (!latest.Recursive)
3243
+ break;
3244
+ }
3245
+ op.openType = latest;
3246
+ }
3247
+ else if (Arcs.Size() >= 32)
3248
+ break;
3249
+
3250
+ /*
3251
+ op.formatIndex = -1;
3252
+ if (op.types->Size() >= 1)
3253
+ {
3254
+ int latest;
3255
+ if (Arcs.Size() < op.types->Size())
3256
+ latest = (*op.types)[op.types->Size() - Arcs.Size() - 1];
3257
+ else
3258
+ {
3259
+ latest = (*op.types)[0];
3260
+ if (latest != -2 && latest != -3)
3261
+ break;
3262
+ }
3263
+ if (latest >= 0)
3264
+ op.formatIndex = latest;
3265
+ else if (latest == -1 || latest == -2)
3266
+ {
3267
+ // default
3268
+ }
3269
+ else if (latest == -3)
3270
+ op.formatIndex = -2;
3271
+ else
3272
+ op.formatIndex = latest + 2;
3273
+ }
3274
+ else if (Arcs.Size() >= 32)
3275
+ break;
3276
+ */
3277
+
3278
+ if (Arcs.IsEmpty())
3279
+ {
3280
+ CArc arc;
3281
+ arc.filePath = op.filePath;
3282
+ arc.Path = op.filePath;
3283
+ arc.SubfileIndex = (UInt32)(Int32)-1;
3284
+ HRESULT result = arc.OpenStreamOrFile(op);
3285
+ if (result != S_OK)
3286
+ {
3287
+ if (result == S_FALSE)
3288
+ {
3289
+ NonOpen_ErrorInfo = arc.NonOpen_ErrorInfo;
3290
+ // NonOpenErrorFormatIndex = arc.ErrorFormatIndex;
3291
+ NonOpen_ArcPath = arc.Path;
3292
+ }
3293
+ return result;
3294
+ }
3295
+ Arcs.Add(arc);
3296
+ continue;
3297
+ }
3298
+
3299
+ // PrintNumber("op.formatIndex 11", op.formatIndex);
3300
+
3301
+ const CArc &arc = Arcs.Back();
3302
+
3303
+ if (op.types->Size() > Arcs.Size())
3304
+ resSpec = E_NOTIMPL;
3305
+
3306
+ UInt32 mainSubfile;
3307
+ {
3308
+ NCOM::CPropVariant prop;
3309
+ RINOK(arc.Archive->GetArchiveProperty(kpidMainSubfile, &prop))
3310
+ if (prop.vt == VT_UI4)
3311
+ mainSubfile = prop.ulVal;
3312
+ else
3313
+ break;
3314
+ UInt32 numItems;
3315
+ RINOK(arc.Archive->GetNumberOfItems(&numItems))
3316
+ if (mainSubfile >= numItems)
3317
+ break;
3318
+ }
3319
+
3320
+
3321
+ CMyComPtr<IInArchiveGetStream> getStream;
3322
+ if (arc.Archive->QueryInterface(IID_IInArchiveGetStream, (void **)&getStream) != S_OK || !getStream)
3323
+ break;
3324
+
3325
+ CMyComPtr<ISequentialInStream> subSeqStream;
3326
+ if (getStream->GetStream(mainSubfile, &subSeqStream) != S_OK || !subSeqStream)
3327
+ break;
3328
+
3329
+ CMyComPtr<IInStream> subStream;
3330
+ if (subSeqStream.QueryInterface(IID_IInStream, &subStream) != S_OK || !subStream)
3331
+ break;
3332
+
3333
+ CArc arc2;
3334
+ RINOK(arc.GetItem_Path(mainSubfile, arc2.Path))
3335
+
3336
+ bool zerosTailIsAllowed;
3337
+ RINOK(Archive_GetItemBoolProp(arc.Archive, mainSubfile, kpidZerosTailIsAllowed, zerosTailIsAllowed))
3338
+
3339
+
3340
+ if (op.callback)
3341
+ {
3342
+ Z7_DECL_CMyComPtr_QI_FROM(
3343
+ IArchiveOpenSetSubArchiveName,
3344
+ setSubArchiveName, op.callback)
3345
+ if (setSubArchiveName)
3346
+ setSubArchiveName->SetSubArchiveName(arc2.Path);
3347
+ }
3348
+
3349
+ arc2.SubfileIndex = mainSubfile;
3350
+
3351
+ // CIntVector incl;
3352
+ CIntVector excl;
3353
+
3354
+ COpenOptions op2;
3355
+ #ifndef Z7_SFX
3356
+ op2.props = op.props;
3357
+ #endif
3358
+ op2.codecs = op.codecs;
3359
+ // op2.types = &incl;
3360
+ op2.openType = op.openType;
3361
+ op2.openType.ZerosTailIsAllowed = zerosTailIsAllowed;
3362
+ op2.excludedFormats = &excl;
3363
+ op2.stdInMode = false;
3364
+ op2.stream = subStream;
3365
+ op2.filePath = arc2.Path;
3366
+ op2.callback = op.callback;
3367
+ op2.callbackSpec = op.callbackSpec;
3368
+
3369
+
3370
+ HRESULT result = arc2.OpenStream(op2);
3371
+ resSpec = (op.types->Size() == 0 ? S_OK : S_FALSE);
3372
+ if (result == S_FALSE)
3373
+ {
3374
+ NonOpen_ErrorInfo = arc2.ErrorInfo;
3375
+ NonOpen_ArcPath = arc2.Path;
3376
+ break;
3377
+ }
3378
+ RINOK(result)
3379
+ RINOK(arc.GetItem_MTime(mainSubfile, arc2.MTime))
3380
+ Arcs.Add(arc2);
3381
+ }
3382
+ IsOpen = !Arcs.IsEmpty();
3383
+ return resSpec;
3384
+ }
3385
+
3386
+ HRESULT CArchiveLink::Open2(COpenOptions &op, IOpenCallbackUI *callbackUI)
3387
+ {
3388
+ VolumesSize = 0;
3389
+ CMyComPtr2_Create<IArchiveOpenCallback, COpenCallbackImp> openCallbackSpec;
3390
+ openCallbackSpec->Callback = callbackUI;
3391
+
3392
+ FString prefix, name;
3393
+
3394
+ if (!op.stream && !op.stdInMode)
3395
+ {
3396
+ NFile::NDir::GetFullPathAndSplit(us2fs(op.filePath), prefix, name);
3397
+ RINOK(openCallbackSpec->Init2(prefix, name))
3398
+ }
3399
+ else
3400
+ {
3401
+ openCallbackSpec->SetSubArchiveName(op.filePath);
3402
+ }
3403
+
3404
+ op.callback = openCallbackSpec;
3405
+ op.callbackSpec = openCallbackSpec.ClsPtr();
3406
+
3407
+ HRESULT res = Open(op);
3408
+
3409
+ PasswordWasAsked = openCallbackSpec->PasswordWasAsked;
3410
+ // Password = openCallbackSpec->Password;
3411
+
3412
+ RINOK(res)
3413
+ // VolumePaths.Add(fs2us(prefix + name));
3414
+
3415
+ FOR_VECTOR (i, openCallbackSpec->FileNames_WasUsed)
3416
+ {
3417
+ if (openCallbackSpec->FileNames_WasUsed[i])
3418
+ {
3419
+ VolumePaths.Add(fs2us(prefix) + openCallbackSpec->FileNames[i]);
3420
+ VolumesSize += openCallbackSpec->FileSizes[i];
3421
+ }
3422
+ }
3423
+ // VolumesSize = openCallbackSpec->TotalSize;
3424
+ return S_OK;
3425
+ }
3426
+
3427
+ HRESULT CArc::ReOpen(const COpenOptions &op, IArchiveOpenCallback *openCallback_Additional)
3428
+ {
3429
+ ErrorInfo.ClearErrors();
3430
+ ErrorInfo.ErrorFormatIndex = -1;
3431
+
3432
+ UInt64 fileSize = 0;
3433
+ if (op.stream)
3434
+ {
3435
+ RINOK(InStream_SeekToBegin(op.stream))
3436
+ RINOK(InStream_AtBegin_GetSize(op.stream, fileSize))
3437
+ // RINOK(InStream_GetSize_SeekToBegin(op.stream, fileSize))
3438
+ }
3439
+ FileSize = fileSize;
3440
+
3441
+ CMyComPtr<IInStream> stream2;
3442
+ Int64 globalOffset = GetGlobalOffset();
3443
+ if (globalOffset <= 0)
3444
+ stream2 = op.stream;
3445
+ else
3446
+ {
3447
+ CTailInStream *tailStreamSpec = new CTailInStream;
3448
+ stream2 = tailStreamSpec;
3449
+ tailStreamSpec->Stream = op.stream;
3450
+ tailStreamSpec->Offset = (UInt64)globalOffset;
3451
+ tailStreamSpec->Init();
3452
+ RINOK(tailStreamSpec->SeekToStart())
3453
+ }
3454
+
3455
+ // There are archives with embedded STUBs (like ZIP), so we must support signature scanning
3456
+ // But for another archives we can use 0 here. So the code can be fixed !!!
3457
+ UInt64 maxStartPosition = kMaxCheckStartPosition;
3458
+ IArchiveOpenCallback *openCallback = openCallback_Additional;
3459
+ if (!openCallback)
3460
+ openCallback = op.callback;
3461
+ HRESULT res = Archive->Open(stream2, &maxStartPosition, openCallback);
3462
+
3463
+ if (res == S_OK)
3464
+ {
3465
+ RINOK(ReadBasicProps(Archive, (UInt64)globalOffset, res))
3466
+ ArcStreamOffset = (UInt64)globalOffset;
3467
+ if (ArcStreamOffset != 0)
3468
+ InStream = op.stream;
3469
+ }
3470
+ return res;
3471
+ }
3472
+
3473
+ HRESULT CArchiveLink::Open3(COpenOptions &op, IOpenCallbackUI *callbackUI)
3474
+ {
3475
+ HRESULT res = Open2(op, callbackUI);
3476
+ if (callbackUI)
3477
+ {
3478
+ RINOK(callbackUI->Open_Finished())
3479
+ }
3480
+ return res;
3481
+ }
3482
+
3483
+ HRESULT CArchiveLink::ReOpen(COpenOptions &op)
3484
+ {
3485
+ if (Arcs.Size() > 1)
3486
+ return E_NOTIMPL;
3487
+
3488
+ CObjectVector<COpenType> inc;
3489
+ CIntVector excl;
3490
+
3491
+ op.types = &inc;
3492
+ op.excludedFormats = &excl;
3493
+ op.stdInMode = false;
3494
+ op.stream = NULL;
3495
+ if (Arcs.Size() == 0) // ???
3496
+ return Open2(op, NULL);
3497
+
3498
+ /* if archive is multivolume (unsupported here still)
3499
+ COpenCallbackImp object will exist after Open stage. */
3500
+ COpenCallbackImp *openCallbackSpec = new COpenCallbackImp;
3501
+ CMyComPtr<IArchiveOpenCallback> openCallbackNew = openCallbackSpec;
3502
+
3503
+ openCallbackSpec->Callback = NULL;
3504
+ openCallbackSpec->ReOpenCallback = op.callback;
3505
+ {
3506
+ FString dirPrefix, fileName;
3507
+ NFile::NDir::GetFullPathAndSplit(us2fs(op.filePath), dirPrefix, fileName);
3508
+ RINOK(openCallbackSpec->Init2(dirPrefix, fileName))
3509
+ }
3510
+
3511
+
3512
+ CInFileStream *fileStreamSpec = new CInFileStream;
3513
+ CMyComPtr<IInStream> stream(fileStreamSpec);
3514
+ if (!fileStreamSpec->Open(us2fs(op.filePath)))
3515
+ return GetLastError_noZero_HRESULT();
3516
+ op.stream = stream;
3517
+
3518
+ CArc &arc = Arcs[0];
3519
+ const HRESULT res = arc.ReOpen(op, openCallbackNew);
3520
+
3521
+ openCallbackSpec->ReOpenCallback = NULL;
3522
+
3523
+ PasswordWasAsked = openCallbackSpec->PasswordWasAsked;
3524
+ // Password = openCallbackSpec->Password;
3525
+
3526
+ IsOpen = (res == S_OK);
3527
+ return res;
3528
+ }
3529
+
3530
+ #ifndef Z7_SFX
3531
+
3532
+ bool ParseComplexSize(const wchar_t *s, UInt64 &result);
3533
+ bool ParseComplexSize(const wchar_t *s, UInt64 &result)
3534
+ {
3535
+ result = 0;
3536
+ const wchar_t *end;
3537
+ UInt64 number = ConvertStringToUInt64(s, &end);
3538
+ if (end == s)
3539
+ return false;
3540
+ if (*end == 0)
3541
+ {
3542
+ result = number;
3543
+ return true;
3544
+ }
3545
+ if (end[1] != 0)
3546
+ return false;
3547
+ unsigned numBits;
3548
+ switch (MyCharLower_Ascii(*end))
3549
+ {
3550
+ case 'b': result = number; return true;
3551
+ case 'k': numBits = 10; break;
3552
+ case 'm': numBits = 20; break;
3553
+ case 'g': numBits = 30; break;
3554
+ case 't': numBits = 40; break;
3555
+ default: return false;
3556
+ }
3557
+ if (number >= ((UInt64)1 << (64 - numBits)))
3558
+ return false;
3559
+ result = number << numBits;
3560
+ return true;
3561
+ }
3562
+
3563
+ static bool ParseTypeParams(const UString &s, COpenType &type)
3564
+ {
3565
+ if (s[0] == 0)
3566
+ return true;
3567
+ if (s[1] == 0)
3568
+ {
3569
+ switch ((unsigned)(Byte)s[0])
3570
+ {
3571
+ case 'e': type.EachPos = true; return true;
3572
+ case 'a': type.CanReturnArc = true; return true;
3573
+ case 'r': type.Recursive = true; return true;
3574
+ default: break;
3575
+ }
3576
+ return false;
3577
+ }
3578
+ if (s[0] == 's')
3579
+ {
3580
+ UInt64 result;
3581
+ if (!ParseComplexSize(s.Ptr(1), result))
3582
+ return false;
3583
+ type.MaxStartOffset = result;
3584
+ type.MaxStartOffset_Defined = true;
3585
+ return true;
3586
+ }
3587
+
3588
+ return false;
3589
+ }
3590
+
3591
+ static bool ParseType(CCodecs &codecs, const UString &s, COpenType &type)
3592
+ {
3593
+ int pos2 = s.Find(L':');
3594
+
3595
+ {
3596
+ UString name;
3597
+ if (pos2 < 0)
3598
+ {
3599
+ name = s;
3600
+ pos2 = (int)s.Len();
3601
+ }
3602
+ else
3603
+ {
3604
+ name = s.Left((unsigned)pos2);
3605
+ pos2++;
3606
+ }
3607
+
3608
+ int index = codecs.FindFormatForArchiveType(name);
3609
+ type.Recursive = false;
3610
+
3611
+ if (index < 0)
3612
+ {
3613
+ if (name[0] == '*')
3614
+ {
3615
+ if (name[1] != 0)
3616
+ return false;
3617
+ }
3618
+ else if (name[0] == '#')
3619
+ {
3620
+ if (name[1] != 0)
3621
+ return false;
3622
+ type.CanReturnArc = false;
3623
+ type.CanReturnParser = true;
3624
+ }
3625
+ else if (name.IsEqualTo_Ascii_NoCase("hash"))
3626
+ {
3627
+ // type.CanReturnArc = false;
3628
+ // type.CanReturnParser = false;
3629
+ type.IsHashType = true;
3630
+ }
3631
+ else
3632
+ return false;
3633
+ }
3634
+
3635
+ type.FormatIndex = index;
3636
+
3637
+ }
3638
+
3639
+ for (unsigned i = (unsigned)pos2; i < s.Len();)
3640
+ {
3641
+ int next = s.Find(L':', i);
3642
+ if (next < 0)
3643
+ next = (int)s.Len();
3644
+ const UString name = s.Mid(i, (unsigned)next - i);
3645
+ if (name.IsEmpty())
3646
+ return false;
3647
+ if (!ParseTypeParams(name, type))
3648
+ return false;
3649
+ i = (unsigned)next + 1;
3650
+ }
3651
+
3652
+ return true;
3653
+ }
3654
+
3655
+ bool ParseOpenTypes(CCodecs &codecs, const UString &s, CObjectVector<COpenType> &types)
3656
+ {
3657
+ types.Clear();
3658
+ bool isHashType = false;
3659
+ for (unsigned pos = 0; pos < s.Len();)
3660
+ {
3661
+ int pos2 = s.Find(L'.', pos);
3662
+ if (pos2 < 0)
3663
+ pos2 = (int)s.Len();
3664
+ UString name = s.Mid(pos, (unsigned)pos2 - pos);
3665
+ if (name.IsEmpty())
3666
+ return false;
3667
+ COpenType type;
3668
+ if (!ParseType(codecs, name, type))
3669
+ return false;
3670
+ if (isHashType)
3671
+ return false;
3672
+ if (type.IsHashType)
3673
+ isHashType = true;
3674
+ types.Add(type);
3675
+ pos = (unsigned)pos2 + 1;
3676
+ }
3677
+ return true;
3678
+ }
3679
+
3680
+ /*
3681
+ bool IsHashType(const CObjectVector<COpenType> &types)
3682
+ {
3683
+ if (types.Size() != 1)
3684
+ return false;
3685
+ return types[0].IsHashType;
3686
+ }
3687
+ */
3688
+
3689
+
3690
+ #endif