7zip-native 0.0.0-stage → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1313) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -2
  3. package/THIRD_PARTY_NOTICES.md +23 -0
  4. package/bench/args.mts +69 -0
  5. package/bench/benchmark.mts +102 -0
  6. package/bench/compare.mts +546 -0
  7. package/bench/concurrency.mts +196 -0
  8. package/binding.gyp +51 -0
  9. package/dist/index.cjs +433 -0
  10. package/dist/index.d.cts +59 -0
  11. package/dist/index.d.mts +59 -0
  12. package/dist/index.d.ts +59 -0
  13. package/dist/index.mjs +429 -0
  14. package/docs/architecture.md +112 -0
  15. package/examples/basic.mts +19 -0
  16. package/native/addon.cpp +2154 -0
  17. package/package.json +85 -5
  18. package/prebuilds/linux-x64/7z.so +0 -0
  19. package/prebuilds/linux-x64/7zip_native.node +0 -0
  20. package/vendor/7zip/.gitattributes +2 -0
  21. package/vendor/7zip/Asm/arm/7zCrcOpt.asm +100 -0
  22. package/vendor/7zip/Asm/arm64/7zAsm.S +187 -0
  23. package/vendor/7zip/Asm/arm64/LzmaDecOpt.S +1487 -0
  24. package/vendor/7zip/Asm/x86/7zAsm.asm +341 -0
  25. package/vendor/7zip/Asm/x86/7zCrcOpt.asm +258 -0
  26. package/vendor/7zip/Asm/x86/AesOpt.asm +742 -0
  27. package/vendor/7zip/Asm/x86/LzFindOpt.asm +540 -0
  28. package/vendor/7zip/Asm/x86/LzmaDecOpt.asm +1339 -0
  29. package/vendor/7zip/Asm/x86/Sha1Opt.asm +263 -0
  30. package/vendor/7zip/Asm/x86/Sha256Opt.asm +275 -0
  31. package/vendor/7zip/Asm/x86/Sort.asm +860 -0
  32. package/vendor/7zip/Asm/x86/XzCrc64Opt.asm +523 -0
  33. package/vendor/7zip/C/7z.h +204 -0
  34. package/vendor/7zip/C/7zAlloc.c +89 -0
  35. package/vendor/7zip/C/7zAlloc.h +19 -0
  36. package/vendor/7zip/C/7zArcIn.c +1701 -0
  37. package/vendor/7zip/C/7zBuf.c +36 -0
  38. package/vendor/7zip/C/7zBuf.h +35 -0
  39. package/vendor/7zip/C/7zBuf2.c +52 -0
  40. package/vendor/7zip/C/7zCrc.c +420 -0
  41. package/vendor/7zip/C/7zCrc.h +28 -0
  42. package/vendor/7zip/C/7zCrcOpt.c +199 -0
  43. package/vendor/7zip/C/7zDec.c +672 -0
  44. package/vendor/7zip/C/7zFile.c +443 -0
  45. package/vendor/7zip/C/7zFile.h +91 -0
  46. package/vendor/7zip/C/7zStream.c +199 -0
  47. package/vendor/7zip/C/7zTypes.h +600 -0
  48. package/vendor/7zip/C/7zVersion.h +27 -0
  49. package/vendor/7zip/C/7zVersion.rc +55 -0
  50. package/vendor/7zip/C/7zWindows.h +107 -0
  51. package/vendor/7zip/C/7zip_gcc_c.mak +366 -0
  52. package/vendor/7zip/C/Aes.c +429 -0
  53. package/vendor/7zip/C/Aes.h +60 -0
  54. package/vendor/7zip/C/AesOpt.c +1002 -0
  55. package/vendor/7zip/C/Alloc.c +774 -0
  56. package/vendor/7zip/C/Alloc.h +76 -0
  57. package/vendor/7zip/C/Asm_c.mak +12 -0
  58. package/vendor/7zip/C/Bcj2.c +290 -0
  59. package/vendor/7zip/C/Bcj2.h +332 -0
  60. package/vendor/7zip/C/Bcj2Enc.c +509 -0
  61. package/vendor/7zip/C/Blake2.h +105 -0
  62. package/vendor/7zip/C/Blake2s.c +2672 -0
  63. package/vendor/7zip/C/Bra.c +709 -0
  64. package/vendor/7zip/C/Bra.h +105 -0
  65. package/vendor/7zip/C/Bra86.c +187 -0
  66. package/vendor/7zip/C/BraIA64.c +14 -0
  67. package/vendor/7zip/C/BwtSort.c +630 -0
  68. package/vendor/7zip/C/BwtSort.h +27 -0
  69. package/vendor/7zip/C/Compiler.h +287 -0
  70. package/vendor/7zip/C/CpuArch.c +970 -0
  71. package/vendor/7zip/C/CpuArch.h +719 -0
  72. package/vendor/7zip/C/Delta.c +169 -0
  73. package/vendor/7zip/C/Delta.h +19 -0
  74. package/vendor/7zip/C/DllSecur.c +99 -0
  75. package/vendor/7zip/C/DllSecur.h +20 -0
  76. package/vendor/7zip/C/HuffEnc.c +361 -0
  77. package/vendor/7zip/C/HuffEnc.h +23 -0
  78. package/vendor/7zip/C/LzFind.c +1746 -0
  79. package/vendor/7zip/C/LzFind.h +160 -0
  80. package/vendor/7zip/C/LzFindMt.c +1422 -0
  81. package/vendor/7zip/C/LzFindMt.h +114 -0
  82. package/vendor/7zip/C/LzFindOpt.c +578 -0
  83. package/vendor/7zip/C/LzHash.h +34 -0
  84. package/vendor/7zip/C/Lzma2Dec.c +493 -0
  85. package/vendor/7zip/C/Lzma2Dec.h +121 -0
  86. package/vendor/7zip/C/Lzma2DecMt.c +1095 -0
  87. package/vendor/7zip/C/Lzma2DecMt.h +81 -0
  88. package/vendor/7zip/C/Lzma2Enc.c +799 -0
  89. package/vendor/7zip/C/Lzma2Enc.h +58 -0
  90. package/vendor/7zip/C/Lzma86.h +111 -0
  91. package/vendor/7zip/C/Lzma86Dec.c +53 -0
  92. package/vendor/7zip/C/Lzma86Enc.c +103 -0
  93. package/vendor/7zip/C/LzmaDec.c +1367 -0
  94. package/vendor/7zip/C/LzmaDec.h +237 -0
  95. package/vendor/7zip/C/LzmaEnc.c +3154 -0
  96. package/vendor/7zip/C/LzmaEnc.h +85 -0
  97. package/vendor/7zip/C/LzmaLib.c +42 -0
  98. package/vendor/7zip/C/LzmaLib.h +138 -0
  99. package/vendor/7zip/C/Md5.c +206 -0
  100. package/vendor/7zip/C/Md5.h +34 -0
  101. package/vendor/7zip/C/MtCoder.c +604 -0
  102. package/vendor/7zip/C/MtCoder.h +144 -0
  103. package/vendor/7zip/C/MtDec.c +1124 -0
  104. package/vendor/7zip/C/MtDec.h +202 -0
  105. package/vendor/7zip/C/Ppmd.h +169 -0
  106. package/vendor/7zip/C/Ppmd7.c +1131 -0
  107. package/vendor/7zip/C/Ppmd7.h +181 -0
  108. package/vendor/7zip/C/Ppmd7Dec.c +312 -0
  109. package/vendor/7zip/C/Ppmd7Enc.c +340 -0
  110. package/vendor/7zip/C/Ppmd7aDec.c +295 -0
  111. package/vendor/7zip/C/Ppmd8.c +1574 -0
  112. package/vendor/7zip/C/Ppmd8.h +181 -0
  113. package/vendor/7zip/C/Ppmd8Dec.c +295 -0
  114. package/vendor/7zip/C/Ppmd8Enc.c +337 -0
  115. package/vendor/7zip/C/Precomp.h +127 -0
  116. package/vendor/7zip/C/RotateDefs.h +50 -0
  117. package/vendor/7zip/C/Sha1.c +441 -0
  118. package/vendor/7zip/C/Sha1.h +86 -0
  119. package/vendor/7zip/C/Sha1Opt.c +424 -0
  120. package/vendor/7zip/C/Sha256.c +492 -0
  121. package/vendor/7zip/C/Sha256.h +86 -0
  122. package/vendor/7zip/C/Sha256Opt.c +451 -0
  123. package/vendor/7zip/C/Sha3.c +359 -0
  124. package/vendor/7zip/C/Sha3.h +36 -0
  125. package/vendor/7zip/C/Sha512.c +711 -0
  126. package/vendor/7zip/C/Sha512.h +86 -0
  127. package/vendor/7zip/C/Sha512Opt.c +395 -0
  128. package/vendor/7zip/C/Sort.c +268 -0
  129. package/vendor/7zip/C/Sort.h +15 -0
  130. package/vendor/7zip/C/SwapBytes.c +835 -0
  131. package/vendor/7zip/C/SwapBytes.h +17 -0
  132. package/vendor/7zip/C/Threads.c +826 -0
  133. package/vendor/7zip/C/Threads.h +260 -0
  134. package/vendor/7zip/C/Util/7z/7z.dsp +249 -0
  135. package/vendor/7zip/C/Util/7z/7z.dsw +29 -0
  136. package/vendor/7zip/C/Util/7z/7zMain.c +1210 -0
  137. package/vendor/7zip/C/Util/7z/Precomp.c +4 -0
  138. package/vendor/7zip/C/Util/7z/Precomp.h +13 -0
  139. package/vendor/7zip/C/Util/7z/makefile +44 -0
  140. package/vendor/7zip/C/Util/7z/makefile.gcc +32 -0
  141. package/vendor/7zip/C/Util/7zipInstall/7zip.ico +0 -0
  142. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.c +1699 -0
  143. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsp +248 -0
  144. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.dsw +29 -0
  145. package/vendor/7zip/C/Util/7zipInstall/7zipInstall.manifest +18 -0
  146. package/vendor/7zip/C/Util/7zipInstall/Precomp.c +4 -0
  147. package/vendor/7zip/C/Util/7zipInstall/Precomp.h +13 -0
  148. package/vendor/7zip/C/Util/7zipInstall/makefile +47 -0
  149. package/vendor/7zip/C/Util/7zipInstall/resource.h +9 -0
  150. package/vendor/7zip/C/Util/7zipInstall/resource.rc +48 -0
  151. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.c +1234 -0
  152. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsp +132 -0
  153. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.dsw +29 -0
  154. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.ico +0 -0
  155. package/vendor/7zip/C/Util/7zipUninstall/7zipUninstall.manifest +18 -0
  156. package/vendor/7zip/C/Util/7zipUninstall/Precomp.c +4 -0
  157. package/vendor/7zip/C/Util/7zipUninstall/Precomp.h +13 -0
  158. package/vendor/7zip/C/Util/7zipUninstall/makefile +18 -0
  159. package/vendor/7zip/C/Util/7zipUninstall/resource.h +9 -0
  160. package/vendor/7zip/C/Util/7zipUninstall/resource.rc +48 -0
  161. package/vendor/7zip/C/Util/Lzma/LzmaUtil.c +313 -0
  162. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsp +192 -0
  163. package/vendor/7zip/C/Util/Lzma/LzmaUtil.dsw +29 -0
  164. package/vendor/7zip/C/Util/Lzma/Precomp.h +13 -0
  165. package/vendor/7zip/C/Util/Lzma/makefile +30 -0
  166. package/vendor/7zip/C/Util/Lzma/makefile.gcc +21 -0
  167. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.def +4 -0
  168. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsp +206 -0
  169. package/vendor/7zip/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  170. package/vendor/7zip/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  171. package/vendor/7zip/C/Util/LzmaLib/Precomp.c +4 -0
  172. package/vendor/7zip/C/Util/LzmaLib/Precomp.h +13 -0
  173. package/vendor/7zip/C/Util/LzmaLib/makefile +59 -0
  174. package/vendor/7zip/C/Util/LzmaLib/resource.rc +3 -0
  175. package/vendor/7zip/C/Util/SfxSetup/Precomp.c +4 -0
  176. package/vendor/7zip/C/Util/SfxSetup/Precomp.h +13 -0
  177. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.c +657 -0
  178. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  179. package/vendor/7zip/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  180. package/vendor/7zip/C/Util/SfxSetup/makefile +44 -0
  181. package/vendor/7zip/C/Util/SfxSetup/makefile_con +40 -0
  182. package/vendor/7zip/C/Util/SfxSetup/resource.rc +5 -0
  183. package/vendor/7zip/C/Util/SfxSetup/setup.ico +0 -0
  184. package/vendor/7zip/C/Xxh64.c +389 -0
  185. package/vendor/7zip/C/Xxh64.h +50 -0
  186. package/vendor/7zip/C/Xz.c +92 -0
  187. package/vendor/7zip/C/Xz.h +542 -0
  188. package/vendor/7zip/C/XzCrc64.c +140 -0
  189. package/vendor/7zip/C/XzCrc64.h +26 -0
  190. package/vendor/7zip/C/XzCrc64Opt.c +261 -0
  191. package/vendor/7zip/C/XzDec.c +2865 -0
  192. package/vendor/7zip/C/XzEnc.c +1374 -0
  193. package/vendor/7zip/C/XzEnc.h +62 -0
  194. package/vendor/7zip/C/XzIn.c +385 -0
  195. package/vendor/7zip/C/ZstdDec.c +4067 -0
  196. package/vendor/7zip/C/ZstdDec.h +173 -0
  197. package/vendor/7zip/C/var_clang.mak +11 -0
  198. package/vendor/7zip/C/var_clang_arm64.mak +12 -0
  199. package/vendor/7zip/C/var_clang_x64.mak +11 -0
  200. package/vendor/7zip/C/var_clang_x86.mak +11 -0
  201. package/vendor/7zip/C/var_gcc.mak +12 -0
  202. package/vendor/7zip/C/var_gcc_arm64.mak +12 -0
  203. package/vendor/7zip/C/var_gcc_x64.mak +10 -0
  204. package/vendor/7zip/C/var_gcc_x86.mak +10 -0
  205. package/vendor/7zip/C/var_mac_arm64.mak +13 -0
  206. package/vendor/7zip/C/var_mac_x64.mak +13 -0
  207. package/vendor/7zip/C/warn_clang.mak +1 -0
  208. package/vendor/7zip/C/warn_clang_mac.mak +1 -0
  209. package/vendor/7zip/C/warn_gcc.mak +51 -0
  210. package/vendor/7zip/CPP/7zip/7zip.mak +240 -0
  211. package/vendor/7zip/CPP/7zip/7zip_gcc.mak +1376 -0
  212. package/vendor/7zip/CPP/7zip/Aes.mak +10 -0
  213. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsp +650 -0
  214. package/vendor/7zip/CPP/7zip/Archive/7z/7z.dsw +29 -0
  215. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  216. package/vendor/7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +92 -0
  217. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  218. package/vendor/7zip/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  219. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.cpp +702 -0
  220. package/vendor/7zip/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  221. package/vendor/7zip/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  222. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  223. package/vendor/7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  224. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.cpp +800 -0
  225. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  226. package/vendor/7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1162 -0
  227. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  228. package/vendor/7zip/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  229. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.cpp +1815 -0
  230. package/vendor/7zip/CPP/7zip/Archive/7z/7zIn.h +454 -0
  231. package/vendor/7zip/CPP/7zip/Archive/7z/7zItem.h +207 -0
  232. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  233. package/vendor/7zip/CPP/7zip/Archive/7z/7zOut.h +346 -0
  234. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  235. package/vendor/7zip/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  236. package/vendor/7zip/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  237. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  238. package/vendor/7zip/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  239. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +3087 -0
  240. package/vendor/7zip/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  241. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  242. package/vendor/7zip/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  243. package/vendor/7zip/CPP/7zip/Archive/7z/makefile +81 -0
  244. package/vendor/7zip/CPP/7zip/Archive/7z/resource.rc +11 -0
  245. package/vendor/7zip/CPP/7zip/Archive/ApfsHandler.cpp +4470 -0
  246. package/vendor/7zip/CPP/7zip/Archive/ApmHandler.cpp +420 -0
  247. package/vendor/7zip/CPP/7zip/Archive/ArHandler.cpp +844 -0
  248. package/vendor/7zip/CPP/7zip/Archive/Archive.def +15 -0
  249. package/vendor/7zip/CPP/7zip/Archive/Archive2.def +22 -0
  250. package/vendor/7zip/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  251. package/vendor/7zip/CPP/7zip/Archive/ArjHandler.cpp +977 -0
  252. package/vendor/7zip/CPP/7zip/Archive/AvbHandler.cpp +616 -0
  253. package/vendor/7zip/CPP/7zip/Archive/Base64Handler.cpp +488 -0
  254. package/vendor/7zip/CPP/7zip/Archive/Bz2Handler.cpp +482 -0
  255. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +122 -0
  256. package/vendor/7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +28 -0
  257. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +1270 -0
  258. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHandler.h +29 -0
  259. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  260. package/vendor/7zip/CPP/7zip/Archive/Cab/CabHeader.h +41 -0
  261. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.cpp +485 -0
  262. package/vendor/7zip/CPP/7zip/Archive/Cab/CabIn.h +169 -0
  263. package/vendor/7zip/CPP/7zip/Archive/Cab/CabItem.h +69 -0
  264. package/vendor/7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +19 -0
  265. package/vendor/7zip/CPP/7zip/Archive/Cab/StdAfx.h +11 -0
  266. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +790 -0
  267. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmHandler.h +27 -0
  268. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +1026 -0
  269. package/vendor/7zip/CPP/7zip/Archive/Chm/ChmIn.h +282 -0
  270. package/vendor/7zip/CPP/7zip/Archive/Chm/StdAfx.h +11 -0
  271. package/vendor/7zip/CPP/7zip/Archive/ComHandler.cpp +1449 -0
  272. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  273. package/vendor/7zip/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  274. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  275. package/vendor/7zip/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  276. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.cpp +90 -0
  277. package/vendor/7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  278. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +315 -0
  279. package/vendor/7zip/CPP/7zip/Archive/Common/HandlerOut.h +169 -0
  280. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  281. package/vendor/7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  282. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +140 -0
  283. package/vendor/7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +33 -0
  284. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  285. package/vendor/7zip/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  286. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  287. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  288. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +29 -0
  289. package/vendor/7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +61 -0
  290. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  291. package/vendor/7zip/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  292. package/vendor/7zip/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  293. package/vendor/7zip/CPP/7zip/Archive/CpioHandler.cpp +1110 -0
  294. package/vendor/7zip/CPP/7zip/Archive/CramfsHandler.cpp +784 -0
  295. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.cpp +3 -0
  296. package/vendor/7zip/CPP/7zip/Archive/DeflateProps.h +6 -0
  297. package/vendor/7zip/CPP/7zip/Archive/DllExports.cpp +96 -0
  298. package/vendor/7zip/CPP/7zip/Archive/DllExports2.cpp +184 -0
  299. package/vendor/7zip/CPP/7zip/Archive/DmgHandler.cpp +2336 -0
  300. package/vendor/7zip/CPP/7zip/Archive/ElfHandler.cpp +1284 -0
  301. package/vendor/7zip/CPP/7zip/Archive/ExtHandler.cpp +2860 -0
  302. package/vendor/7zip/CPP/7zip/Archive/FatHandler.cpp +1325 -0
  303. package/vendor/7zip/CPP/7zip/Archive/FlvHandler.cpp +521 -0
  304. package/vendor/7zip/CPP/7zip/Archive/GptHandler.cpp +473 -0
  305. package/vendor/7zip/CPP/7zip/Archive/GzHandler.cpp +1200 -0
  306. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.cpp +320 -0
  307. package/vendor/7zip/CPP/7zip/Archive/HandlerCont.h +134 -0
  308. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.cpp +2631 -0
  309. package/vendor/7zip/CPP/7zip/Archive/HfsHandler.h +87 -0
  310. package/vendor/7zip/CPP/7zip/Archive/IArchive.h +755 -0
  311. package/vendor/7zip/CPP/7zip/Archive/Icons/7z.ico +0 -0
  312. package/vendor/7zip/CPP/7zip/Archive/Icons/apfs.ico +0 -0
  313. package/vendor/7zip/CPP/7zip/Archive/Icons/arj.ico +0 -0
  314. package/vendor/7zip/CPP/7zip/Archive/Icons/bz2.ico +0 -0
  315. package/vendor/7zip/CPP/7zip/Archive/Icons/cab.ico +0 -0
  316. package/vendor/7zip/CPP/7zip/Archive/Icons/cpio.ico +0 -0
  317. package/vendor/7zip/CPP/7zip/Archive/Icons/deb.ico +0 -0
  318. package/vendor/7zip/CPP/7zip/Archive/Icons/dmg.ico +0 -0
  319. package/vendor/7zip/CPP/7zip/Archive/Icons/fat.ico +0 -0
  320. package/vendor/7zip/CPP/7zip/Archive/Icons/gz.ico +0 -0
  321. package/vendor/7zip/CPP/7zip/Archive/Icons/hfs.ico +0 -0
  322. package/vendor/7zip/CPP/7zip/Archive/Icons/iso.ico +0 -0
  323. package/vendor/7zip/CPP/7zip/Archive/Icons/lzh.ico +0 -0
  324. package/vendor/7zip/CPP/7zip/Archive/Icons/lzma.ico +0 -0
  325. package/vendor/7zip/CPP/7zip/Archive/Icons/ntfs.ico +0 -0
  326. package/vendor/7zip/CPP/7zip/Archive/Icons/rar.ico +0 -0
  327. package/vendor/7zip/CPP/7zip/Archive/Icons/rpm.ico +0 -0
  328. package/vendor/7zip/CPP/7zip/Archive/Icons/split.ico +0 -0
  329. package/vendor/7zip/CPP/7zip/Archive/Icons/squashfs.ico +0 -0
  330. package/vendor/7zip/CPP/7zip/Archive/Icons/tar.ico +0 -0
  331. package/vendor/7zip/CPP/7zip/Archive/Icons/vhd.ico +0 -0
  332. package/vendor/7zip/CPP/7zip/Archive/Icons/wim.ico +0 -0
  333. package/vendor/7zip/CPP/7zip/Archive/Icons/xar.ico +0 -0
  334. package/vendor/7zip/CPP/7zip/Archive/Icons/xz.ico +0 -0
  335. package/vendor/7zip/CPP/7zip/Archive/Icons/z.ico +0 -0
  336. package/vendor/7zip/CPP/7zip/Archive/Icons/zip.ico +0 -0
  337. package/vendor/7zip/CPP/7zip/Archive/Icons/zst.ico +0 -0
  338. package/vendor/7zip/CPP/7zip/Archive/IhexHandler.cpp +493 -0
  339. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +498 -0
  340. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHandler.h +24 -0
  341. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +12 -0
  342. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoHeader.h +64 -0
  343. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +801 -0
  344. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoIn.h +328 -0
  345. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoItem.h +316 -0
  346. package/vendor/7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +21 -0
  347. package/vendor/7zip/CPP/7zip/Archive/Iso/StdAfx.h +11 -0
  348. package/vendor/7zip/CPP/7zip/Archive/LpHandler.cpp +1172 -0
  349. package/vendor/7zip/CPP/7zip/Archive/LvmHandler.cpp +1108 -0
  350. package/vendor/7zip/CPP/7zip/Archive/LzhHandler.cpp +719 -0
  351. package/vendor/7zip/CPP/7zip/Archive/LzmaHandler.cpp +606 -0
  352. package/vendor/7zip/CPP/7zip/Archive/MachoHandler.cpp +1075 -0
  353. package/vendor/7zip/CPP/7zip/Archive/MbrHandler.cpp +648 -0
  354. package/vendor/7zip/CPP/7zip/Archive/MslzHandler.cpp +389 -0
  355. package/vendor/7zip/CPP/7zip/Archive/MubHandler.cpp +248 -0
  356. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +295 -0
  357. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +97 -0
  358. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +703 -0
  359. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +30 -0
  360. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +6231 -0
  361. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisIn.h +462 -0
  362. package/vendor/7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +20 -0
  363. package/vendor/7zip/CPP/7zip/Archive/Nsis/StdAfx.h +11 -0
  364. package/vendor/7zip/CPP/7zip/Archive/NtfsHandler.cpp +2944 -0
  365. package/vendor/7zip/CPP/7zip/Archive/PeHandler.cpp +3427 -0
  366. package/vendor/7zip/CPP/7zip/Archive/PpmdHandler.cpp +414 -0
  367. package/vendor/7zip/CPP/7zip/Archive/QcowHandler.cpp +713 -0
  368. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +3483 -0
  369. package/vendor/7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +527 -0
  370. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1775 -0
  371. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHandler.h +115 -0
  372. package/vendor/7zip/CPP/7zip/Archive/Rar/RarHeader.h +209 -0
  373. package/vendor/7zip/CPP/7zip/Archive/Rar/RarItem.h +97 -0
  374. package/vendor/7zip/CPP/7zip/Archive/Rar/RarVol.h +136 -0
  375. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.cpp +3 -0
  376. package/vendor/7zip/CPP/7zip/Archive/Rar/StdAfx.h +11 -0
  377. package/vendor/7zip/CPP/7zip/Archive/RpmHandler.cpp +775 -0
  378. package/vendor/7zip/CPP/7zip/Archive/SparseHandler.cpp +558 -0
  379. package/vendor/7zip/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  380. package/vendor/7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2373 -0
  381. package/vendor/7zip/CPP/7zip/Archive/StdAfx.h +11 -0
  382. package/vendor/7zip/CPP/7zip/Archive/SwfHandler.cpp +996 -0
  383. package/vendor/7zip/CPP/7zip/Archive/Tar/StdAfx.h +11 -0
  384. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +1105 -0
  385. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandler.h +57 -0
  386. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +332 -0
  387. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +99 -0
  388. package/vendor/7zip/CPP/7zip/Archive/Tar/TarHeader.h +90 -0
  389. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.cpp +1151 -0
  390. package/vendor/7zip/CPP/7zip/Archive/Tar/TarIn.h +151 -0
  391. package/vendor/7zip/CPP/7zip/Archive/Tar/TarItem.h +365 -0
  392. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.cpp +644 -0
  393. package/vendor/7zip/CPP/7zip/Archive/Tar/TarOut.h +53 -0
  394. package/vendor/7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +31 -0
  395. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +563 -0
  396. package/vendor/7zip/CPP/7zip/Archive/Tar/TarUpdate.h +74 -0
  397. package/vendor/7zip/CPP/7zip/Archive/Udf/StdAfx.h +11 -0
  398. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +427 -0
  399. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfHandler.h +32 -0
  400. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +1756 -0
  401. package/vendor/7zip/CPP/7zip/Archive/Udf/UdfIn.h +508 -0
  402. package/vendor/7zip/CPP/7zip/Archive/UefiHandler.cpp +1884 -0
  403. package/vendor/7zip/CPP/7zip/Archive/VdiHandler.cpp +433 -0
  404. package/vendor/7zip/CPP/7zip/Archive/VhdHandler.cpp +1106 -0
  405. package/vendor/7zip/CPP/7zip/Archive/VhdxHandler.cpp +2085 -0
  406. package/vendor/7zip/CPP/7zip/Archive/VmdkHandler.cpp +1530 -0
  407. package/vendor/7zip/CPP/7zip/Archive/Wim/StdAfx.h +11 -0
  408. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +1291 -0
  409. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandler.h +117 -0
  410. package/vendor/7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +2008 -0
  411. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.cpp +2104 -0
  412. package/vendor/7zip/CPP/7zip/Archive/Wim/WimIn.h +719 -0
  413. package/vendor/7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +29 -0
  414. package/vendor/7zip/CPP/7zip/Archive/XarHandler.cpp +1316 -0
  415. package/vendor/7zip/CPP/7zip/Archive/XzHandler.cpp +1452 -0
  416. package/vendor/7zip/CPP/7zip/Archive/XzHandler.h +11 -0
  417. package/vendor/7zip/CPP/7zip/Archive/ZHandler.cpp +208 -0
  418. package/vendor/7zip/CPP/7zip/Archive/Zip/StdAfx.h +11 -0
  419. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +484 -0
  420. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +76 -0
  421. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +62 -0
  422. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +1679 -0
  423. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandler.h +94 -0
  424. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +626 -0
  425. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipHeader.h +201 -0
  426. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +3474 -0
  427. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipIn.h +456 -0
  428. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +464 -0
  429. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipItem.h +356 -0
  430. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +428 -0
  431. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipOut.h +103 -0
  432. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +38 -0
  433. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +2165 -0
  434. package/vendor/7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +107 -0
  435. package/vendor/7zip/CPP/7zip/Archive/ZstdHandler.cpp +1147 -0
  436. package/vendor/7zip/CPP/7zip/Archive/makefile +23 -0
  437. package/vendor/7zip/CPP/7zip/Asm.mak +12 -0
  438. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsp +3324 -0
  439. package/vendor/7zip/CPP/7zip/Bundles/Alone/Alone.dsw +29 -0
  440. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.cpp +3 -0
  441. package/vendor/7zip/CPP/7zip/Bundles/Alone/StdAfx.h +11 -0
  442. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile +245 -0
  443. package/vendor/7zip/CPP/7zip/Bundles/Alone/makefile.gcc +354 -0
  444. package/vendor/7zip/CPP/7zip/Bundles/Alone/resource.rc +7 -0
  445. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.cpp +3 -0
  446. package/vendor/7zip/CPP/7zip/Bundles/Alone2/StdAfx.h +11 -0
  447. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile +31 -0
  448. package/vendor/7zip/CPP/7zip/Bundles/Alone2/makefile.gcc +108 -0
  449. package/vendor/7zip/CPP/7zip/Bundles/Alone2/resource.rc +7 -0
  450. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  451. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  452. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  453. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  454. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  455. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/makefile.gcc +276 -0
  456. package/vendor/7zip/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  457. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsp +2275 -0
  458. package/vendor/7zip/CPP/7zip/Bundles/Fm/FM.dsw +29 -0
  459. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.cpp +3 -0
  460. package/vendor/7zip/CPP/7zip/Bundles/Fm/StdAfx.h +6 -0
  461. package/vendor/7zip/CPP/7zip/Bundles/Fm/makefile +82 -0
  462. package/vendor/7zip/CPP/7zip/Bundles/Fm/resource.rc +7 -0
  463. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.cpp +3 -0
  464. package/vendor/7zip/CPP/7zip/Bundles/Format7z/StdAfx.h +11 -0
  465. package/vendor/7zip/CPP/7zip/Bundles/Format7z/makefile +148 -0
  466. package/vendor/7zip/CPP/7zip/Bundles/Format7z/resource.rc +5 -0
  467. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.cpp +3 -0
  468. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/StdAfx.h +11 -0
  469. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/makefile +116 -0
  470. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtract/resource.rc +5 -0
  471. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  472. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  473. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  474. package/vendor/7zip/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  475. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc.mak +310 -0
  476. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +395 -0
  477. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsp +3486 -0
  478. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/Format7z.dsw +29 -0
  479. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.cpp +3 -0
  480. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/StdAfx.h +11 -0
  481. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile +20 -0
  482. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/makefile.gcc +55 -0
  483. package/vendor/7zip/CPP/7zip/Bundles/Format7zF/resource.rc +39 -0
  484. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  485. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  486. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  487. package/vendor/7zip/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  488. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +815 -0
  489. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  490. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  491. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  492. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  493. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  494. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  495. package/vendor/7zip/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  496. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  497. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  498. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  499. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  500. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  501. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  502. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  503. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  504. package/vendor/7zip/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  505. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  506. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  507. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  508. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  509. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  510. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  511. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +359 -0
  512. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  513. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  514. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  515. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  516. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  517. package/vendor/7zip/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  518. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  519. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  520. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  521. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  522. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  523. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  524. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  525. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  526. package/vendor/7zip/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  527. package/vendor/7zip/CPP/7zip/Bundles/makefile +19 -0
  528. package/vendor/7zip/CPP/7zip/Common/CWrappers.cpp +358 -0
  529. package/vendor/7zip/CPP/7zip/Common/CWrappers.h +182 -0
  530. package/vendor/7zip/CPP/7zip/Common/CreateCoder.cpp +548 -0
  531. package/vendor/7zip/CPP/7zip/Common/CreateCoder.h +200 -0
  532. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  533. package/vendor/7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  534. package/vendor/7zip/CPP/7zip/Common/FileStreams.cpp +923 -0
  535. package/vendor/7zip/CPP/7zip/Common/FileStreams.h +205 -0
  536. package/vendor/7zip/CPP/7zip/Common/FilterCoder.cpp +582 -0
  537. package/vendor/7zip/CPP/7zip/Common/FilterCoder.h +201 -0
  538. package/vendor/7zip/CPP/7zip/Common/InBuffer.cpp +182 -0
  539. package/vendor/7zip/CPP/7zip/Common/InBuffer.h +121 -0
  540. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  541. package/vendor/7zip/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  542. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.cpp +395 -0
  543. package/vendor/7zip/CPP/7zip/Common/LimitedStreams.h +221 -0
  544. package/vendor/7zip/CPP/7zip/Common/LockedStream.cpp +3 -0
  545. package/vendor/7zip/CPP/7zip/Common/LockedStream.h +6 -0
  546. package/vendor/7zip/CPP/7zip/Common/MemBlocks.cpp +215 -0
  547. package/vendor/7zip/CPP/7zip/Common/MemBlocks.h +72 -0
  548. package/vendor/7zip/CPP/7zip/Common/MethodId.cpp +3 -0
  549. package/vendor/7zip/CPP/7zip/Common/MethodId.h +10 -0
  550. package/vendor/7zip/CPP/7zip/Common/MethodProps.cpp +765 -0
  551. package/vendor/7zip/CPP/7zip/Common/MethodProps.h +348 -0
  552. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  553. package/vendor/7zip/CPP/7zip/Common/MultiOutStream.h +160 -0
  554. package/vendor/7zip/CPP/7zip/Common/OffsetStream.cpp +37 -0
  555. package/vendor/7zip/CPP/7zip/Common/OffsetStream.h +22 -0
  556. package/vendor/7zip/CPP/7zip/Common/OutBuffer.cpp +111 -0
  557. package/vendor/7zip/CPP/7zip/Common/OutBuffer.h +133 -0
  558. package/vendor/7zip/CPP/7zip/Common/OutMemStream.cpp +158 -0
  559. package/vendor/7zip/CPP/7zip/Common/OutMemStream.h +104 -0
  560. package/vendor/7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  561. package/vendor/7zip/CPP/7zip/Common/ProgressMt.h +43 -0
  562. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  563. package/vendor/7zip/CPP/7zip/Common/ProgressUtils.h +33 -0
  564. package/vendor/7zip/CPP/7zip/Common/PropId.cpp +115 -0
  565. package/vendor/7zip/CPP/7zip/Common/RegisterArc.h +80 -0
  566. package/vendor/7zip/CPP/7zip/Common/RegisterCodec.h +106 -0
  567. package/vendor/7zip/CPP/7zip/Common/StdAfx.h +11 -0
  568. package/vendor/7zip/CPP/7zip/Common/StreamBinder.cpp +151 -0
  569. package/vendor/7zip/CPP/7zip/Common/StreamBinder.h +78 -0
  570. package/vendor/7zip/CPP/7zip/Common/StreamObjects.cpp +290 -0
  571. package/vendor/7zip/CPP/7zip/Common/StreamObjects.h +146 -0
  572. package/vendor/7zip/CPP/7zip/Common/StreamUtils.cpp +101 -0
  573. package/vendor/7zip/CPP/7zip/Common/StreamUtils.h +31 -0
  574. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  575. package/vendor/7zip/CPP/7zip/Common/UniqBlocks.h +41 -0
  576. package/vendor/7zip/CPP/7zip/Common/VirtThread.cpp +47 -0
  577. package/vendor/7zip/CPP/7zip/Common/VirtThread.h +24 -0
  578. package/vendor/7zip/CPP/7zip/Compress/BZip2Const.h +71 -0
  579. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.cpp +28 -0
  580. package/vendor/7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  581. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.cpp +1777 -0
  582. package/vendor/7zip/CPP/7zip/Compress/BZip2Decoder.h +388 -0
  583. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.cpp +1116 -0
  584. package/vendor/7zip/CPP/7zip/Compress/BZip2Encoder.h +273 -0
  585. package/vendor/7zip/CPP/7zip/Compress/BZip2Register.cpp +25 -0
  586. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  587. package/vendor/7zip/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  588. package/vendor/7zip/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  589. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  590. package/vendor/7zip/CPP/7zip/Compress/BcjCoder.h +37 -0
  591. package/vendor/7zip/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  592. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.cpp +32 -0
  593. package/vendor/7zip/CPP/7zip/Compress/BitlDecoder.h +225 -0
  594. package/vendor/7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  595. package/vendor/7zip/CPP/7zip/Compress/BitmDecoder.h +106 -0
  596. package/vendor/7zip/CPP/7zip/Compress/BitmEncoder.h +90 -0
  597. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  598. package/vendor/7zip/CPP/7zip/Compress/BranchMisc.h +59 -0
  599. package/vendor/7zip/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  600. package/vendor/7zip/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  601. package/vendor/7zip/CPP/7zip/Compress/Codec.def +7 -0
  602. package/vendor/7zip/CPP/7zip/Compress/CodecExports.cpp +378 -0
  603. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  604. package/vendor/7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  605. package/vendor/7zip/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  606. package/vendor/7zip/CPP/7zip/Compress/Deflate64Register.cpp +25 -0
  607. package/vendor/7zip/CPP/7zip/Compress/DeflateConst.h +131 -0
  608. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.cpp +566 -0
  609. package/vendor/7zip/CPP/7zip/Compress/DeflateDecoder.h +154 -0
  610. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.cpp +1045 -0
  611. package/vendor/7zip/CPP/7zip/Compress/DeflateEncoder.h +203 -0
  612. package/vendor/7zip/CPP/7zip/Compress/DeflateRegister.cpp +25 -0
  613. package/vendor/7zip/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  614. package/vendor/7zip/CPP/7zip/Compress/DllExports2Compress.cpp +38 -0
  615. package/vendor/7zip/CPP/7zip/Compress/DllExportsCompress.cpp +59 -0
  616. package/vendor/7zip/CPP/7zip/Compress/HuffmanDecoder.h +528 -0
  617. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +250 -0
  618. package/vendor/7zip/CPP/7zip/Compress/ImplodeDecoder.h +61 -0
  619. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +3 -0
  620. package/vendor/7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +6 -0
  621. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  622. package/vendor/7zip/CPP/7zip/Compress/LzOutWindow.h +102 -0
  623. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.cpp +950 -0
  624. package/vendor/7zip/CPP/7zip/Compress/LzfseDecoder.h +63 -0
  625. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  626. package/vendor/7zip/CPP/7zip/Compress/LzhDecoder.h +68 -0
  627. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  628. package/vendor/7zip/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  629. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +134 -0
  630. package/vendor/7zip/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  631. package/vendor/7zip/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  632. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  633. package/vendor/7zip/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  634. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.cpp +374 -0
  635. package/vendor/7zip/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  636. package/vendor/7zip/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  637. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.cpp +619 -0
  638. package/vendor/7zip/CPP/7zip/Compress/LzmsDecoder.h +209 -0
  639. package/vendor/7zip/CPP/7zip/Compress/Lzx.h +61 -0
  640. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.cpp +1517 -0
  641. package/vendor/7zip/CPP/7zip/Compress/LzxDecoder.h +106 -0
  642. package/vendor/7zip/CPP/7zip/Compress/Mtf8.h +225 -0
  643. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  644. package/vendor/7zip/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  645. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  646. package/vendor/7zip/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  647. package/vendor/7zip/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  648. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.cpp +309 -0
  649. package/vendor/7zip/CPP/7zip/Compress/PpmdZip.h +78 -0
  650. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.cpp +355 -0
  651. package/vendor/7zip/CPP/7zip/Compress/QuantumDecoder.h +60 -0
  652. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.cpp +518 -0
  653. package/vendor/7zip/CPP/7zip/Compress/Rar1Decoder.h +70 -0
  654. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.cpp +472 -0
  655. package/vendor/7zip/CPP/7zip/Compress/Rar2Decoder.h +111 -0
  656. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.cpp +939 -0
  657. package/vendor/7zip/CPP/7zip/Compress/Rar3Decoder.h +283 -0
  658. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.cpp +1153 -0
  659. package/vendor/7zip/CPP/7zip/Compress/Rar3Vm.h +195 -0
  660. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.cpp +2060 -0
  661. package/vendor/7zip/CPP/7zip/Compress/Rar5Decoder.h +132 -0
  662. package/vendor/7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +33 -0
  663. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +290 -0
  664. package/vendor/7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  665. package/vendor/7zip/CPP/7zip/Compress/StdAfx.h +11 -0
  666. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.cpp +399 -0
  667. package/vendor/7zip/CPP/7zip/Compress/XpressDecoder.h +18 -0
  668. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  669. package/vendor/7zip/CPP/7zip/Compress/XzDecoder.h +86 -0
  670. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  671. package/vendor/7zip/CPP/7zip/Compress/XzEncoder.h +35 -0
  672. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.cpp +392 -0
  673. package/vendor/7zip/CPP/7zip/Compress/ZDecoder.h +41 -0
  674. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.cpp +136 -0
  675. package/vendor/7zip/CPP/7zip/Compress/ZlibDecoder.h +78 -0
  676. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  677. package/vendor/7zip/CPP/7zip/Compress/ZlibEncoder.h +42 -0
  678. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.cpp +437 -0
  679. package/vendor/7zip/CPP/7zip/Compress/ZstdDecoder.h +98 -0
  680. package/vendor/7zip/CPP/7zip/Compress/makefile +7 -0
  681. package/vendor/7zip/CPP/7zip/Crc.mak +8 -0
  682. package/vendor/7zip/CPP/7zip/Crc64.mak +8 -0
  683. package/vendor/7zip/CPP/7zip/Crypto/7zAes.cpp +315 -0
  684. package/vendor/7zip/CPP/7zip/Crypto/7zAes.h +130 -0
  685. package/vendor/7zip/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  686. package/vendor/7zip/CPP/7zip/Crypto/Codec.def +4 -0
  687. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.cpp +94 -0
  688. package/vendor/7zip/CPP/7zip/Crypto/HmacSha1.h +31 -0
  689. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.cpp +53 -0
  690. package/vendor/7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  691. package/vendor/7zip/CPP/7zip/Crypto/MyAes.cpp +277 -0
  692. package/vendor/7zip/CPP/7zip/Crypto/MyAes.h +122 -0
  693. package/vendor/7zip/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  694. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +48 -0
  695. package/vendor/7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +19 -0
  696. package/vendor/7zip/CPP/7zip/Crypto/RandGen.cpp +242 -0
  697. package/vendor/7zip/CPP/7zip/Crypto/RandGen.h +41 -0
  698. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +130 -0
  699. package/vendor/7zip/CPP/7zip/Crypto/Rar20Crypto.h +54 -0
  700. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.cpp +273 -0
  701. package/vendor/7zip/CPP/7zip/Crypto/Rar5Aes.h +97 -0
  702. package/vendor/7zip/CPP/7zip/Crypto/RarAes.cpp +202 -0
  703. package/vendor/7zip/CPP/7zip/Crypto/RarAes.h +54 -0
  704. package/vendor/7zip/CPP/7zip/Crypto/Sha1Cls.h +37 -0
  705. package/vendor/7zip/CPP/7zip/Crypto/StdAfx.h +11 -0
  706. package/vendor/7zip/CPP/7zip/Crypto/WzAes.cpp +231 -0
  707. package/vendor/7zip/CPP/7zip/Crypto/WzAes.h +161 -0
  708. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.cpp +114 -0
  709. package/vendor/7zip/CPP/7zip/Crypto/ZipCrypto.h +80 -0
  710. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.cpp +265 -0
  711. package/vendor/7zip/CPP/7zip/Crypto/ZipStrong.h +73 -0
  712. package/vendor/7zip/CPP/7zip/GuiCommon.rc +119 -0
  713. package/vendor/7zip/CPP/7zip/Guid.txt +243 -0
  714. package/vendor/7zip/CPP/7zip/ICoder.h +480 -0
  715. package/vendor/7zip/CPP/7zip/IDecl.h +76 -0
  716. package/vendor/7zip/CPP/7zip/IPassword.h +54 -0
  717. package/vendor/7zip/CPP/7zip/IProgress.h +20 -0
  718. package/vendor/7zip/CPP/7zip/IStream.h +210 -0
  719. package/vendor/7zip/CPP/7zip/LzFindOpt.mak +7 -0
  720. package/vendor/7zip/CPP/7zip/LzmaDec.mak +7 -0
  721. package/vendor/7zip/CPP/7zip/LzmaDec_gcc.mak +14 -0
  722. package/vendor/7zip/CPP/7zip/MyVersion.h +2 -0
  723. package/vendor/7zip/CPP/7zip/MyVersionInfo.rc +2 -0
  724. package/vendor/7zip/CPP/7zip/PropID.h +178 -0
  725. package/vendor/7zip/CPP/7zip/Sha1.mak +13 -0
  726. package/vendor/7zip/CPP/7zip/Sha256.mak +13 -0
  727. package/vendor/7zip/CPP/7zip/Sort.mak +6 -0
  728. package/vendor/7zip/CPP/7zip/SubBuild.mak +3 -0
  729. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.cpp +2003 -0
  730. package/vendor/7zip/CPP/7zip/UI/Agent/Agent.h +365 -0
  731. package/vendor/7zip/CPP/7zip/UI/Agent/AgentOut.cpp +776 -0
  732. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.cpp +1098 -0
  733. package/vendor/7zip/CPP/7zip/UI/Agent/AgentProxy.h +198 -0
  734. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolder.cpp +57 -0
  735. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOpen.cpp +243 -0
  736. package/vendor/7zip/CPP/7zip/UI/Agent/ArchiveFolderOut.cpp +457 -0
  737. package/vendor/7zip/CPP/7zip/UI/Agent/IFolderArchive.h +123 -0
  738. package/vendor/7zip/CPP/7zip/UI/Agent/StdAfx.h +11 -0
  739. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.cpp +208 -0
  740. package/vendor/7zip/CPP/7zip/UI/Agent/UpdateCallbackAgent.h +22 -0
  741. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  742. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  743. package/vendor/7zip/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  744. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  745. package/vendor/7zip/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  746. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile +29 -0
  747. package/vendor/7zip/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  748. package/vendor/7zip/CPP/7zip/UI/Client7z/resource.rc +3 -0
  749. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1913 -0
  750. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  751. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +3243 -0
  752. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveExtractCallback.h +640 -0
  753. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  754. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  755. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +403 -0
  756. package/vendor/7zip/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  757. package/vendor/7zip/CPP/7zip/UI/Common/Bench.cpp +5036 -0
  758. package/vendor/7zip/CPP/7zip/UI/Common/Bench.h +121 -0
  759. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.cpp +343 -0
  760. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall.h +28 -0
  761. package/vendor/7zip/CPP/7zip/UI/Common/CompressCall2.cpp +327 -0
  762. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  763. package/vendor/7zip/CPP/7zip/UI/Common/DefaultName.h +11 -0
  764. package/vendor/7zip/CPP/7zip/UI/Common/DirItem.h +407 -0
  765. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.cpp +1637 -0
  766. package/vendor/7zip/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  767. package/vendor/7zip/CPP/7zip/UI/Common/ExitCode.h +27 -0
  768. package/vendor/7zip/CPP/7zip/UI/Common/Extract.cpp +593 -0
  769. package/vendor/7zip/CPP/7zip/UI/Common/Extract.h +118 -0
  770. package/vendor/7zip/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  771. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.cpp +299 -0
  772. package/vendor/7zip/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  773. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.cpp +2273 -0
  774. package/vendor/7zip/CPP/7zip/UI/Common/HashCalc.h +322 -0
  775. package/vendor/7zip/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  776. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.cpp +1354 -0
  777. package/vendor/7zip/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  778. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.cpp +3690 -0
  779. package/vendor/7zip/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  780. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.cpp +746 -0
  781. package/vendor/7zip/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  782. package/vendor/7zip/CPP/7zip/UI/Common/Property.h +14 -0
  783. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  784. package/vendor/7zip/CPP/7zip/UI/Common/SetProperties.h +10 -0
  785. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  786. package/vendor/7zip/CPP/7zip/UI/Common/SortUtils.h +10 -0
  787. package/vendor/7zip/CPP/7zip/UI/Common/StdAfx.h +11 -0
  788. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  789. package/vendor/7zip/CPP/7zip/UI/Common/TempFiles.h +19 -0
  790. package/vendor/7zip/CPP/7zip/UI/Common/Update.cpp +1931 -0
  791. package/vendor/7zip/CPP/7zip/UI/Common/Update.h +221 -0
  792. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  793. package/vendor/7zip/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  794. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.cpp +1078 -0
  795. package/vendor/7zip/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  796. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.cpp +303 -0
  797. package/vendor/7zip/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  798. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.cpp +75 -0
  799. package/vendor/7zip/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  800. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  801. package/vendor/7zip/CPP/7zip/UI/Common/WorkDir.h +30 -0
  802. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.cpp +599 -0
  803. package/vendor/7zip/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  804. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  805. package/vendor/7zip/CPP/7zip/UI/Console/BenchCon.h +14 -0
  806. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsp +1052 -0
  807. package/vendor/7zip/CPP/7zip/UI/Console/Console.dsw +29 -0
  808. package/vendor/7zip/CPP/7zip/UI/Console/Console.mak +45 -0
  809. package/vendor/7zip/CPP/7zip/UI/Console/Console.manifest +16 -0
  810. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  811. package/vendor/7zip/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  812. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +954 -0
  813. package/vendor/7zip/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  814. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  815. package/vendor/7zip/CPP/7zip/UI/Console/HashCon.h +58 -0
  816. package/vendor/7zip/CPP/7zip/UI/Console/List.cpp +1417 -0
  817. package/vendor/7zip/CPP/7zip/UI/Console/List.h +42 -0
  818. package/vendor/7zip/CPP/7zip/UI/Console/Main.cpp +1663 -0
  819. package/vendor/7zip/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  820. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  821. package/vendor/7zip/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  822. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  823. package/vendor/7zip/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  824. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  825. package/vendor/7zip/CPP/7zip/UI/Console/StdAfx.h +11 -0
  826. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +1012 -0
  827. package/vendor/7zip/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  828. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  829. package/vendor/7zip/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  830. package/vendor/7zip/CPP/7zip/UI/Console/makefile +68 -0
  831. package/vendor/7zip/CPP/7zip/UI/Console/makefile.gcc +184 -0
  832. package/vendor/7zip/CPP/7zip/UI/Console/resource.rc +7 -0
  833. package/vendor/7zip/CPP/7zip/UI/Explorer/7-zip.dll.manifest +1 -0
  834. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.cpp +1837 -0
  835. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenu.h +173 -0
  836. package/vendor/7zip/CPP/7zip/UI/Explorer/ContextMenuFlags.h +27 -0
  837. package/vendor/7zip/CPP/7zip/UI/Explorer/DllExportsExplorer.cpp +268 -0
  838. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.def +9 -0
  839. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsp +620 -0
  840. package/vendor/7zip/CPP/7zip/UI/Explorer/Explorer.dsw +29 -0
  841. package/vendor/7zip/CPP/7zip/UI/Explorer/MenuLogo.bmp +0 -0
  842. package/vendor/7zip/CPP/7zip/UI/Explorer/MyExplorerCommand.h +217 -0
  843. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  844. package/vendor/7zip/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  845. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.cpp +225 -0
  846. package/vendor/7zip/CPP/7zip/UI/Explorer/RegistryContextMenu.h +13 -0
  847. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.cpp +3 -0
  848. package/vendor/7zip/CPP/7zip/UI/Explorer/StdAfx.h +6 -0
  849. package/vendor/7zip/CPP/7zip/UI/Explorer/makefile +76 -0
  850. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.h +15 -0
  851. package/vendor/7zip/CPP/7zip/UI/Explorer/resource.rc +10 -0
  852. package/vendor/7zip/CPP/7zip/UI/Explorer/resource2.rc +19 -0
  853. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.cpp +274 -0
  854. package/vendor/7zip/CPP/7zip/UI/Far/ExtractEngine.h +43 -0
  855. package/vendor/7zip/CPP/7zip/UI/Far/Far.cpp +588 -0
  856. package/vendor/7zip/CPP/7zip/UI/Far/Far.def +35 -0
  857. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsp +831 -0
  858. package/vendor/7zip/CPP/7zip/UI/Far/Far.dsw +29 -0
  859. package/vendor/7zip/CPP/7zip/UI/Far/FarPlugin.h +560 -0
  860. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.cpp +523 -0
  861. package/vendor/7zip/CPP/7zip/UI/Far/FarUtils.h +203 -0
  862. package/vendor/7zip/CPP/7zip/UI/Far/Messages.h +136 -0
  863. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.cpp +145 -0
  864. package/vendor/7zip/CPP/7zip/UI/Far/OverwriteDialogFar.h +37 -0
  865. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.cpp +937 -0
  866. package/vendor/7zip/CPP/7zip/UI/Far/Plugin.h +97 -0
  867. package/vendor/7zip/CPP/7zip/UI/Far/PluginCommon.cpp +50 -0
  868. package/vendor/7zip/CPP/7zip/UI/Far/PluginDelete.cpp +144 -0
  869. package/vendor/7zip/CPP/7zip/UI/Far/PluginRead.cpp +301 -0
  870. package/vendor/7zip/CPP/7zip/UI/Far/PluginWrite.cpp +840 -0
  871. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.cpp +305 -0
  872. package/vendor/7zip/CPP/7zip/UI/Far/ProgressBox.h +85 -0
  873. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.cpp +3 -0
  874. package/vendor/7zip/CPP/7zip/UI/Far/StdAfx.h +11 -0
  875. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.cpp +327 -0
  876. package/vendor/7zip/CPP/7zip/UI/Far/UpdateCallbackFar.h +58 -0
  877. package/vendor/7zip/CPP/7zip/UI/Far/makefile +105 -0
  878. package/vendor/7zip/CPP/7zip/UI/Far/resource.rc +3 -0
  879. package/vendor/7zip/CPP/7zip/UI/FileManager/7zFM.exe.manifest +23 -0
  880. package/vendor/7zip/CPP/7zip/UI/FileManager/7zipLogo.ico +0 -0
  881. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.cpp +81 -0
  882. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.h +19 -0
  883. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialog.rc +26 -0
  884. package/vendor/7zip/CPP/7zip/UI/FileManager/AboutDialogRes.h +8 -0
  885. package/vendor/7zip/CPP/7zip/UI/FileManager/Add.bmp +0 -0
  886. package/vendor/7zip/CPP/7zip/UI/FileManager/Add2.bmp +0 -0
  887. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.cpp +865 -0
  888. package/vendor/7zip/CPP/7zip/UI/FileManager/AltStreamsFolder.h +92 -0
  889. package/vendor/7zip/CPP/7zip/UI/FileManager/App.cpp +1004 -0
  890. package/vendor/7zip/CPP/7zip/UI/FileManager/App.h +314 -0
  891. package/vendor/7zip/CPP/7zip/UI/FileManager/AppState.h +95 -0
  892. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  893. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  894. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog.rc +25 -0
  895. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.cpp +1873 -0
  896. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.h +10 -0
  897. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2.rc +32 -0
  898. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialog2Res.h +9 -0
  899. package/vendor/7zip/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  900. package/vendor/7zip/CPP/7zip/UI/FileManager/ClassDefs.cpp +12 -0
  901. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  902. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  903. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialog.rc +16 -0
  904. package/vendor/7zip/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  905. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy.bmp +0 -0
  906. package/vendor/7zip/CPP/7zip/UI/FileManager/Copy2.bmp +0 -0
  907. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.cpp +103 -0
  908. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.h +31 -0
  909. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialog.rc +20 -0
  910. package/vendor/7zip/CPP/7zip/UI/FileManager/CopyDialogRes.h +8 -0
  911. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete.bmp +0 -0
  912. package/vendor/7zip/CPP/7zip/UI/FileManager/Delete2.bmp +0 -0
  913. package/vendor/7zip/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  914. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.cpp +57 -0
  915. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.h +25 -0
  916. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialog.rc +15 -0
  917. package/vendor/7zip/CPP/7zip/UI/FileManager/EditDialogRes.h +2 -0
  918. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.cpp +159 -0
  919. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.h +30 -0
  920. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage.rc +19 -0
  921. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPage2.rc +14 -0
  922. package/vendor/7zip/CPP/7zip/UI/FileManager/EditPageRes.h +15 -0
  923. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.cpp +109 -0
  924. package/vendor/7zip/CPP/7zip/UI/FileManager/EnumFormatEtc.h +10 -0
  925. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract.bmp +0 -0
  926. package/vendor/7zip/CPP/7zip/UI/FileManager/Extract2.bmp +0 -0
  927. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1284 -0
  928. package/vendor/7zip/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  929. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.cpp +1230 -0
  930. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsp +1699 -0
  931. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.dsw +29 -0
  932. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.ico +0 -0
  933. package/vendor/7zip/CPP/7zip/UI/FileManager/FM.mak +102 -0
  934. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.cpp +512 -0
  935. package/vendor/7zip/CPP/7zip/UI/FileManager/FSDrives.h +52 -0
  936. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.cpp +1179 -0
  937. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolder.h +220 -0
  938. package/vendor/7zip/CPP/7zip/UI/FileManager/FSFolderCopy.cpp +871 -0
  939. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.cpp +394 -0
  940. package/vendor/7zip/CPP/7zip/UI/FileManager/FileFolderPluginOpen.h +27 -0
  941. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp +78 -0
  942. package/vendor/7zip/CPP/7zip/UI/FileManager/FilePlugins.h +33 -0
  943. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.cpp +172 -0
  944. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.h +32 -0
  945. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage.rc +23 -0
  946. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPage2.rc +11 -0
  947. package/vendor/7zip/CPP/7zip/UI/FileManager/FoldersPageRes.h +12 -0
  948. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  949. package/vendor/7zip/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  950. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.cpp +78 -0
  951. package/vendor/7zip/CPP/7zip/UI/FileManager/HelpUtils.h +10 -0
  952. package/vendor/7zip/CPP/7zip/UI/FileManager/IFolder.h +187 -0
  953. package/vendor/7zip/CPP/7zip/UI/FileManager/Info.bmp +0 -0
  954. package/vendor/7zip/CPP/7zip/UI/FileManager/Info2.bmp +0 -0
  955. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.cpp +359 -0
  956. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.h +36 -0
  957. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPage.rc +40 -0
  958. package/vendor/7zip/CPP/7zip/UI/FileManager/LangPageRes.h +9 -0
  959. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.cpp +333 -0
  960. package/vendor/7zip/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  961. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.cpp +402 -0
  962. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.h +34 -0
  963. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialog.rc +38 -0
  964. package/vendor/7zip/CPP/7zip/UI/FileManager/LinkDialogRes.h +22 -0
  965. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.cpp +321 -0
  966. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.h +46 -0
  967. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialog.rc +14 -0
  968. package/vendor/7zip/CPP/7zip/UI/FileManager/ListViewDialogRes.h +2 -0
  969. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  970. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  971. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialog.rc +49 -0
  972. package/vendor/7zip/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  973. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.cpp +439 -0
  974. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.h +57 -0
  975. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage.rc +24 -0
  976. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPage2.rc +28 -0
  977. package/vendor/7zip/CPP/7zip/UI/FileManager/MenuPageRes.h +15 -0
  978. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.cpp +76 -0
  979. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.h +25 -0
  980. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialog.rc +14 -0
  981. package/vendor/7zip/CPP/7zip/UI/FileManager/MessagesDialogRes.h +3 -0
  982. package/vendor/7zip/CPP/7zip/UI/FileManager/Move.bmp +0 -0
  983. package/vendor/7zip/CPP/7zip/UI/FileManager/Move2.bmp +0 -0
  984. package/vendor/7zip/CPP/7zip/UI/FileManager/MyCom2.h +46 -0
  985. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.cpp +964 -0
  986. package/vendor/7zip/CPP/7zip/UI/FileManager/MyLoadMenu.h +40 -0
  987. package/vendor/7zip/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  988. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.cpp +276 -0
  989. package/vendor/7zip/CPP/7zip/UI/FileManager/NetFolder.h +36 -0
  990. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp +86 -0
  991. package/vendor/7zip/CPP/7zip/UI/FileManager/OpenCallback.h +69 -0
  992. package/vendor/7zip/CPP/7zip/UI/FileManager/OptionsDialog.cpp +89 -0
  993. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  994. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  995. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  996. package/vendor/7zip/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  997. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.cpp +1177 -0
  998. package/vendor/7zip/CPP/7zip/UI/FileManager/Panel.h +1020 -0
  999. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCopy.cpp +477 -0
  1000. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelCrc.cpp +422 -0
  1001. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelDrag.cpp +3006 -0
  1002. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelFolderChange.cpp +1122 -0
  1003. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItemOpen.cpp +1836 -0
  1004. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelItems.cpp +1476 -0
  1005. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelKey.cpp +357 -0
  1006. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelListNotify.cpp +838 -0
  1007. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelMenu.cpp +1160 -0
  1008. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelOperations.cpp +533 -0
  1009. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSelect.cpp +317 -0
  1010. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSort.cpp +288 -0
  1011. package/vendor/7zip/CPP/7zip/UI/FileManager/PanelSplitFile.cpp +562 -0
  1012. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  1013. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  1014. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  1015. package/vendor/7zip/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  1016. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginInterface.h +32 -0
  1017. package/vendor/7zip/CPP/7zip/UI/FileManager/PluginLoader.h +33 -0
  1018. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.cpp +3 -0
  1019. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgramLocation.h +6 -0
  1020. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  1021. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  1022. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  1023. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1484 -0
  1024. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  1025. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  1026. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  1027. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  1028. package/vendor/7zip/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  1029. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  1030. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  1031. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyName.rc +109 -0
  1032. package/vendor/7zip/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  1033. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.cpp +167 -0
  1034. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryAssociations.h +31 -0
  1035. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.cpp +145 -0
  1036. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryPlugins.h +29 -0
  1037. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.cpp +194 -0
  1038. package/vendor/7zip/CPP/7zip/UI/FileManager/RegistryUtils.h +50 -0
  1039. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.cpp +342 -0
  1040. package/vendor/7zip/CPP/7zip/UI/FileManager/RootFolder.h +24 -0
  1041. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.cpp +453 -0
  1042. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.h +37 -0
  1043. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage.rc +22 -0
  1044. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPage2.rc +37 -0
  1045. package/vendor/7zip/CPP/7zip/UI/FileManager/SettingsPageRes.h +23 -0
  1046. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.cpp +114 -0
  1047. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.h +28 -0
  1048. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialog.rc +16 -0
  1049. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitDialogRes.h +8 -0
  1050. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.cpp +96 -0
  1051. package/vendor/7zip/CPP/7zip/UI/FileManager/SplitUtils.h +15 -0
  1052. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.cpp +3 -0
  1053. package/vendor/7zip/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  1054. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.cpp +39 -0
  1055. package/vendor/7zip/CPP/7zip/UI/FileManager/StringUtils.h +11 -0
  1056. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.cpp +352 -0
  1057. package/vendor/7zip/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  1058. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.cpp +472 -0
  1059. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.h +126 -0
  1060. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPage.rc +43 -0
  1061. package/vendor/7zip/CPP/7zip/UI/FileManager/SystemPageRes.h +9 -0
  1062. package/vendor/7zip/CPP/7zip/UI/FileManager/Test.bmp +0 -0
  1063. package/vendor/7zip/CPP/7zip/UI/FileManager/Test2.bmp +0 -0
  1064. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.cpp +193 -0
  1065. package/vendor/7zip/CPP/7zip/UI/FileManager/TextPairs.h +32 -0
  1066. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.cpp +147 -0
  1067. package/vendor/7zip/CPP/7zip/UI/FileManager/UpdateCallback100.h +49 -0
  1068. package/vendor/7zip/CPP/7zip/UI/FileManager/VerCtrl.cpp +428 -0
  1069. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.cpp +315 -0
  1070. package/vendor/7zip/CPP/7zip/UI/FileManager/ViewSettings.h +115 -0
  1071. package/vendor/7zip/CPP/7zip/UI/FileManager/makefile +110 -0
  1072. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.h +199 -0
  1073. package/vendor/7zip/CPP/7zip/UI/FileManager/resource.rc +296 -0
  1074. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  1075. package/vendor/7zip/CPP/7zip/UI/FileManager/resourceGui.rc +30 -0
  1076. package/vendor/7zip/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  1077. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.cpp +1921 -0
  1078. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.h +15 -0
  1079. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialog.rc +288 -0
  1080. package/vendor/7zip/CPP/7zip/UI/GUI/BenchmarkDialogRes.h +79 -0
  1081. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.cpp +3821 -0
  1082. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.h +483 -0
  1083. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialog.rc +233 -0
  1084. package/vendor/7zip/CPP/7zip/UI/GUI/CompressDialogRes.h +125 -0
  1085. package/vendor/7zip/CPP/7zip/UI/GUI/CompressOptionsDialog.rc +79 -0
  1086. package/vendor/7zip/CPP/7zip/UI/GUI/Extract.rc +59 -0
  1087. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.cpp +420 -0
  1088. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  1089. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  1090. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  1091. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  1092. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  1093. package/vendor/7zip/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  1094. package/vendor/7zip/CPP/7zip/UI/GUI/FM.ico +0 -0
  1095. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.cpp +502 -0
  1096. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsp +1275 -0
  1097. package/vendor/7zip/CPP/7zip/UI/GUI/GUI.dsw +29 -0
  1098. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.cpp +341 -0
  1099. package/vendor/7zip/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  1100. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.cpp +3 -0
  1101. package/vendor/7zip/CPP/7zip/UI/GUI/StdAfx.h +6 -0
  1102. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.cpp +295 -0
  1103. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI.h +31 -0
  1104. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.cpp +130 -0
  1105. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateCallbackGUI2.h +53 -0
  1106. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.cpp +605 -0
  1107. package/vendor/7zip/CPP/7zip/UI/GUI/UpdateGUI.h +33 -0
  1108. package/vendor/7zip/CPP/7zip/UI/GUI/makefile +148 -0
  1109. package/vendor/7zip/CPP/7zip/UI/GUI/resource.rc +26 -0
  1110. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.h +2 -0
  1111. package/vendor/7zip/CPP/7zip/UI/GUI/resource2.rc +10 -0
  1112. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.h +10 -0
  1113. package/vendor/7zip/CPP/7zip/UI/GUI/resource3.rc +15 -0
  1114. package/vendor/7zip/CPP/7zip/UI/makefile +12 -0
  1115. package/vendor/7zip/CPP/7zip/cmpl_clang.mak +3 -0
  1116. package/vendor/7zip/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  1117. package/vendor/7zip/CPP/7zip/cmpl_clang_x64.mak +3 -0
  1118. package/vendor/7zip/CPP/7zip/cmpl_clang_x86.mak +3 -0
  1119. package/vendor/7zip/CPP/7zip/cmpl_gcc.mak +3 -0
  1120. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm.mak +3 -0
  1121. package/vendor/7zip/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  1122. package/vendor/7zip/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  1123. package/vendor/7zip/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  1124. package/vendor/7zip/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  1125. package/vendor/7zip/CPP/7zip/cmpl_mac_x64.mak +3 -0
  1126. package/vendor/7zip/CPP/7zip/makefile +10 -0
  1127. package/vendor/7zip/CPP/7zip/var_clang.mak +11 -0
  1128. package/vendor/7zip/CPP/7zip/var_clang_arm64.mak +19 -0
  1129. package/vendor/7zip/CPP/7zip/var_clang_x64.mak +11 -0
  1130. package/vendor/7zip/CPP/7zip/var_clang_x86.mak +11 -0
  1131. package/vendor/7zip/CPP/7zip/var_gcc.mak +12 -0
  1132. package/vendor/7zip/CPP/7zip/var_gcc_arm.mak +34 -0
  1133. package/vendor/7zip/CPP/7zip/var_gcc_arm64.mak +12 -0
  1134. package/vendor/7zip/CPP/7zip/var_gcc_x64.mak +11 -0
  1135. package/vendor/7zip/CPP/7zip/var_gcc_x86.mak +10 -0
  1136. package/vendor/7zip/CPP/7zip/var_mac_arm64.mak +13 -0
  1137. package/vendor/7zip/CPP/7zip/var_mac_x64.mak +13 -0
  1138. package/vendor/7zip/CPP/7zip/warn_clang.mak +3 -0
  1139. package/vendor/7zip/CPP/7zip/warn_clang_mac.mak +9 -0
  1140. package/vendor/7zip/CPP/7zip/warn_gcc.mak +55 -0
  1141. package/vendor/7zip/CPP/Build.mak +259 -0
  1142. package/vendor/7zip/CPP/Common/AutoPtr.h +46 -0
  1143. package/vendor/7zip/CPP/Common/CRC.cpp +7 -0
  1144. package/vendor/7zip/CPP/Common/C_FileIO.cpp +3 -0
  1145. package/vendor/7zip/CPP/Common/C_FileIO.h +6 -0
  1146. package/vendor/7zip/CPP/Common/CksumReg.cpp +55 -0
  1147. package/vendor/7zip/CPP/Common/ComTry.h +21 -0
  1148. package/vendor/7zip/CPP/Common/CommandLineParser.cpp +231 -0
  1149. package/vendor/7zip/CPP/Common/CommandLineParser.h +63 -0
  1150. package/vendor/7zip/CPP/Common/Common.h +28 -0
  1151. package/vendor/7zip/CPP/Common/Common0.h +342 -0
  1152. package/vendor/7zip/CPP/Common/CrcReg.cpp +77 -0
  1153. package/vendor/7zip/CPP/Common/Defs.h +16 -0
  1154. package/vendor/7zip/CPP/Common/DynLimBuf.cpp +93 -0
  1155. package/vendor/7zip/CPP/Common/DynLimBuf.h +41 -0
  1156. package/vendor/7zip/CPP/Common/DynamicBuffer.h +76 -0
  1157. package/vendor/7zip/CPP/Common/IntToString.cpp +215 -0
  1158. package/vendor/7zip/CPP/Common/IntToString.h +54 -0
  1159. package/vendor/7zip/CPP/Common/Lang.cpp +173 -0
  1160. package/vendor/7zip/CPP/Common/Lang.h +30 -0
  1161. package/vendor/7zip/CPP/Common/ListFileUtils.cpp +150 -0
  1162. package/vendor/7zip/CPP/Common/ListFileUtils.h +18 -0
  1163. package/vendor/7zip/CPP/Common/LzFindPrepare.cpp +7 -0
  1164. package/vendor/7zip/CPP/Common/Md5Reg.cpp +44 -0
  1165. package/vendor/7zip/CPP/Common/MyBuffer.h +343 -0
  1166. package/vendor/7zip/CPP/Common/MyBuffer2.h +185 -0
  1167. package/vendor/7zip/CPP/Common/MyCom.h +693 -0
  1168. package/vendor/7zip/CPP/Common/MyException.h +14 -0
  1169. package/vendor/7zip/CPP/Common/MyGuidDef.h +63 -0
  1170. package/vendor/7zip/CPP/Common/MyInitGuid.h +57 -0
  1171. package/vendor/7zip/CPP/Common/MyLinux.h +75 -0
  1172. package/vendor/7zip/CPP/Common/MyMap.cpp +140 -0
  1173. package/vendor/7zip/CPP/Common/MyMap.h +28 -0
  1174. package/vendor/7zip/CPP/Common/MyString.cpp +1842 -0
  1175. package/vendor/7zip/CPP/Common/MyString.h +1079 -0
  1176. package/vendor/7zip/CPP/Common/MyTypes.h +38 -0
  1177. package/vendor/7zip/CPP/Common/MyUnknown.h +8 -0
  1178. package/vendor/7zip/CPP/Common/MyVector.cpp +3 -0
  1179. package/vendor/7zip/CPP/Common/MyVector.h +772 -0
  1180. package/vendor/7zip/CPP/Common/MyWindows.cpp +292 -0
  1181. package/vendor/7zip/CPP/Common/MyWindows.h +325 -0
  1182. package/vendor/7zip/CPP/Common/MyXml.cpp +349 -0
  1183. package/vendor/7zip/CPP/Common/MyXml.h +45 -0
  1184. package/vendor/7zip/CPP/Common/NewHandler.cpp +340 -0
  1185. package/vendor/7zip/CPP/Common/NewHandler.h +121 -0
  1186. package/vendor/7zip/CPP/Common/Random.cpp +28 -0
  1187. package/vendor/7zip/CPP/Common/Random.h +14 -0
  1188. package/vendor/7zip/CPP/Common/Sha1Prepare.cpp +7 -0
  1189. package/vendor/7zip/CPP/Common/Sha1Reg.cpp +67 -0
  1190. package/vendor/7zip/CPP/Common/Sha256Prepare.cpp +7 -0
  1191. package/vendor/7zip/CPP/Common/Sha256Reg.cpp +67 -0
  1192. package/vendor/7zip/CPP/Common/Sha3Reg.cpp +76 -0
  1193. package/vendor/7zip/CPP/Common/Sha512Prepare.cpp +7 -0
  1194. package/vendor/7zip/CPP/Common/Sha512Reg.cpp +83 -0
  1195. package/vendor/7zip/CPP/Common/StdAfx.h +8 -0
  1196. package/vendor/7zip/CPP/Common/StdInStream.cpp +98 -0
  1197. package/vendor/7zip/CPP/Common/StdInStream.h +46 -0
  1198. package/vendor/7zip/CPP/Common/StdOutStream.cpp +271 -0
  1199. package/vendor/7zip/CPP/Common/StdOutStream.h +87 -0
  1200. package/vendor/7zip/CPP/Common/StringConvert.cpp +762 -0
  1201. package/vendor/7zip/CPP/Common/StringConvert.h +110 -0
  1202. package/vendor/7zip/CPP/Common/StringToInt.cpp +154 -0
  1203. package/vendor/7zip/CPP/Common/StringToInt.h +38 -0
  1204. package/vendor/7zip/CPP/Common/TextConfig.cpp +123 -0
  1205. package/vendor/7zip/CPP/Common/TextConfig.h +19 -0
  1206. package/vendor/7zip/CPP/Common/UTFConvert.cpp +863 -0
  1207. package/vendor/7zip/CPP/Common/UTFConvert.h +384 -0
  1208. package/vendor/7zip/CPP/Common/Wildcard.cpp +789 -0
  1209. package/vendor/7zip/CPP/Common/Wildcard.h +231 -0
  1210. package/vendor/7zip/CPP/Common/Xxh64Reg.cpp +97 -0
  1211. package/vendor/7zip/CPP/Common/XzCrc64Init.cpp +7 -0
  1212. package/vendor/7zip/CPP/Common/XzCrc64Reg.cpp +39 -0
  1213. package/vendor/7zip/CPP/Windows/COM.cpp +41 -0
  1214. package/vendor/7zip/CPP/Windows/COM.h +86 -0
  1215. package/vendor/7zip/CPP/Windows/Clipboard.cpp +130 -0
  1216. package/vendor/7zip/CPP/Windows/Clipboard.h +28 -0
  1217. package/vendor/7zip/CPP/Windows/CommonDialog.cpp +269 -0
  1218. package/vendor/7zip/CPP/Windows/CommonDialog.h +43 -0
  1219. package/vendor/7zip/CPP/Windows/Console.cpp +10 -0
  1220. package/vendor/7zip/CPP/Windows/Console.h +52 -0
  1221. package/vendor/7zip/CPP/Windows/Control/ComboBox.cpp +75 -0
  1222. package/vendor/7zip/CPP/Windows/Control/ComboBox.h +79 -0
  1223. package/vendor/7zip/CPP/Windows/Control/CommandBar.h +52 -0
  1224. package/vendor/7zip/CPP/Windows/Control/Dialog.cpp +446 -0
  1225. package/vendor/7zip/CPP/Windows/Control/Dialog.h +213 -0
  1226. package/vendor/7zip/CPP/Windows/Control/Edit.h +19 -0
  1227. package/vendor/7zip/CPP/Windows/Control/ImageList.cpp +10 -0
  1228. package/vendor/7zip/CPP/Windows/Control/ImageList.h +87 -0
  1229. package/vendor/7zip/CPP/Windows/Control/ListView.cpp +162 -0
  1230. package/vendor/7zip/CPP/Windows/Control/ListView.h +156 -0
  1231. package/vendor/7zip/CPP/Windows/Control/ProgressBar.h +35 -0
  1232. package/vendor/7zip/CPP/Windows/Control/PropertyPage.cpp +165 -0
  1233. package/vendor/7zip/CPP/Windows/Control/PropertyPage.h +50 -0
  1234. package/vendor/7zip/CPP/Windows/Control/ReBar.h +34 -0
  1235. package/vendor/7zip/CPP/Windows/Control/Static.h +28 -0
  1236. package/vendor/7zip/CPP/Windows/Control/StatusBar.h +42 -0
  1237. package/vendor/7zip/CPP/Windows/Control/StdAfx.h +11 -0
  1238. package/vendor/7zip/CPP/Windows/Control/ToolBar.h +43 -0
  1239. package/vendor/7zip/CPP/Windows/Control/Trackbar.h +27 -0
  1240. package/vendor/7zip/CPP/Windows/Control/Window2.cpp +202 -0
  1241. package/vendor/7zip/CPP/Windows/Control/Window2.h +53 -0
  1242. package/vendor/7zip/CPP/Windows/DLL.cpp +178 -0
  1243. package/vendor/7zip/CPP/Windows/DLL.h +103 -0
  1244. package/vendor/7zip/CPP/Windows/ErrorMsg.cpp +133 -0
  1245. package/vendor/7zip/CPP/Windows/ErrorMsg.h +16 -0
  1246. package/vendor/7zip/CPP/Windows/FileDir.cpp +1388 -0
  1247. package/vendor/7zip/CPP/Windows/FileDir.h +173 -0
  1248. package/vendor/7zip/CPP/Windows/FileFind.cpp +1458 -0
  1249. package/vendor/7zip/CPP/Windows/FileFind.h +345 -0
  1250. package/vendor/7zip/CPP/Windows/FileIO.cpp +1188 -0
  1251. package/vendor/7zip/CPP/Windows/FileIO.h +508 -0
  1252. package/vendor/7zip/CPP/Windows/FileLink.cpp +697 -0
  1253. package/vendor/7zip/CPP/Windows/FileMapping.cpp +12 -0
  1254. package/vendor/7zip/CPP/Windows/FileMapping.h +66 -0
  1255. package/vendor/7zip/CPP/Windows/FileName.cpp +911 -0
  1256. package/vendor/7zip/CPP/Windows/FileName.h +142 -0
  1257. package/vendor/7zip/CPP/Windows/FileSystem.cpp +187 -0
  1258. package/vendor/7zip/CPP/Windows/FileSystem.h +31 -0
  1259. package/vendor/7zip/CPP/Windows/Handle.h +39 -0
  1260. package/vendor/7zip/CPP/Windows/MemoryGlobal.cpp +36 -0
  1261. package/vendor/7zip/CPP/Windows/MemoryGlobal.h +55 -0
  1262. package/vendor/7zip/CPP/Windows/MemoryLock.cpp +127 -0
  1263. package/vendor/7zip/CPP/Windows/MemoryLock.h +40 -0
  1264. package/vendor/7zip/CPP/Windows/Menu.cpp +265 -0
  1265. package/vendor/7zip/CPP/Windows/Menu.h +170 -0
  1266. package/vendor/7zip/CPP/Windows/NationalTime.cpp +37 -0
  1267. package/vendor/7zip/CPP/Windows/NationalTime.h +20 -0
  1268. package/vendor/7zip/CPP/Windows/Net.cpp +398 -0
  1269. package/vendor/7zip/CPP/Windows/Net.h +87 -0
  1270. package/vendor/7zip/CPP/Windows/NtCheck.h +58 -0
  1271. package/vendor/7zip/CPP/Windows/ProcessMessages.cpp +22 -0
  1272. package/vendor/7zip/CPP/Windows/ProcessMessages.h +12 -0
  1273. package/vendor/7zip/CPP/Windows/ProcessUtils.cpp +102 -0
  1274. package/vendor/7zip/CPP/Windows/ProcessUtils.h +138 -0
  1275. package/vendor/7zip/CPP/Windows/PropVariant.cpp +393 -0
  1276. package/vendor/7zip/CPP/Windows/PropVariant.h +173 -0
  1277. package/vendor/7zip/CPP/Windows/PropVariantConv.cpp +274 -0
  1278. package/vendor/7zip/CPP/Windows/PropVariantConv.h +47 -0
  1279. package/vendor/7zip/CPP/Windows/PropVariantUtils.cpp +161 -0
  1280. package/vendor/7zip/CPP/Windows/PropVariantUtils.h +34 -0
  1281. package/vendor/7zip/CPP/Windows/Registry.cpp +474 -0
  1282. package/vendor/7zip/CPP/Windows/Registry.h +96 -0
  1283. package/vendor/7zip/CPP/Windows/ResourceString.cpp +103 -0
  1284. package/vendor/7zip/CPP/Windows/ResourceString.h +17 -0
  1285. package/vendor/7zip/CPP/Windows/SecurityUtils.cpp +186 -0
  1286. package/vendor/7zip/CPP/Windows/SecurityUtils.h +154 -0
  1287. package/vendor/7zip/CPP/Windows/Shell.cpp +839 -0
  1288. package/vendor/7zip/CPP/Windows/Shell.h +129 -0
  1289. package/vendor/7zip/CPP/Windows/StdAfx.h +11 -0
  1290. package/vendor/7zip/CPP/Windows/Synchronization.cpp +87 -0
  1291. package/vendor/7zip/CPP/Windows/Synchronization.h +386 -0
  1292. package/vendor/7zip/CPP/Windows/System.cpp +423 -0
  1293. package/vendor/7zip/CPP/Windows/System.h +209 -0
  1294. package/vendor/7zip/CPP/Windows/SystemInfo.cpp +1312 -0
  1295. package/vendor/7zip/CPP/Windows/SystemInfo.h +19 -0
  1296. package/vendor/7zip/CPP/Windows/Thread.h +46 -0
  1297. package/vendor/7zip/CPP/Windows/TimeUtils.cpp +467 -0
  1298. package/vendor/7zip/CPP/Windows/TimeUtils.h +154 -0
  1299. package/vendor/7zip/CPP/Windows/WinDefs.h +17 -0
  1300. package/vendor/7zip/CPP/Windows/Window.cpp +179 -0
  1301. package/vendor/7zip/CPP/Windows/Window.h +363 -0
  1302. package/vendor/7zip/DOC/7zC.txt +187 -0
  1303. package/vendor/7zip/DOC/7zFormat.txt +469 -0
  1304. package/vendor/7zip/DOC/7zip.hhp +84 -0
  1305. package/vendor/7zip/DOC/7zip.wxs +403 -0
  1306. package/vendor/7zip/DOC/License.txt +151 -0
  1307. package/vendor/7zip/DOC/Methods.txt +177 -0
  1308. package/vendor/7zip/DOC/copying.txt +502 -0
  1309. package/vendor/7zip/DOC/lzma.txt +345 -0
  1310. package/vendor/7zip/DOC/readme.txt +299 -0
  1311. package/vendor/7zip/DOC/src-history.txt +884 -0
  1312. package/vendor/7zip/DOC/unRarLicense.txt +41 -0
  1313. package/vendor/7zip/README.md +2 -0
@@ -0,0 +1,2860 @@
1
+ // ExtHandler.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ // #define SHOW_DEBUG_INFO
6
+
7
+ // #include <stdio.h>
8
+ // #define PRF2(x) x
9
+
10
+ #define PRF2(x)
11
+
12
+ #ifdef SHOW_DEBUG_INFO
13
+ #include <stdio.h>
14
+ #define PRF(x) x
15
+ #else
16
+ #define PRF(x)
17
+ #endif
18
+
19
+ #include "../../../C/Alloc.h"
20
+ #include "../../../C/CpuArch.h"
21
+
22
+ #include "../../Common/ComTry.h"
23
+ #include "../../Common/IntToString.h"
24
+ #include "../../Common/MyLinux.h"
25
+ #include "../../Common/StringConvert.h"
26
+ #include "../../Common/UTFConvert.h"
27
+
28
+ #include "../../Windows/PropVariantUtils.h"
29
+ #include "../../Windows/TimeUtils.h"
30
+
31
+ #include "../Common/ProgressUtils.h"
32
+ #include "../Common/RegisterArc.h"
33
+ #include "../Common/StreamObjects.h"
34
+ #include "../Common/StreamUtils.h"
35
+
36
+ #include "../Compress/CopyCoder.h"
37
+
38
+ using namespace NWindows;
39
+
40
+ UInt32 LzhCrc16Update(UInt32 crc, const void *data, size_t size);
41
+
42
+ namespace NArchive {
43
+ namespace NExt {
44
+
45
+ #define Get16(p) GetUi16(p)
46
+ #define Get32(p) GetUi32(p)
47
+ #define Get64(p) GetUi64(p)
48
+
49
+ #define LE_16(offs, dest) dest = Get16(p + (offs));
50
+ #define LE_32(offs, dest) dest = Get32(p + (offs));
51
+ #define LE_64(offs, dest) dest = Get64(p + (offs));
52
+
53
+ #define HI_16(offs, dest) dest |= (((UInt32)Get16(p + (offs))) << 16);
54
+ #define HI_32(offs, dest) dest |= (((UInt64)Get32(p + (offs))) << 32);
55
+
56
+ /*
57
+ static UInt32 g_Crc32CTable[256];
58
+
59
+ static struct CInitCrc32C
60
+ {
61
+ CInitCrc32C()
62
+ {
63
+ for (unsigned i = 0; i < 256; i++)
64
+ {
65
+ UInt32 r = i;
66
+ unsigned j;
67
+ for (j = 0; j < 8; j++)
68
+ r = (r >> 1) ^ (0x82F63B78 & ~((r & 1) - 1));
69
+ g_Crc32CTable[i] = r;
70
+ }
71
+ }
72
+ } g_InitCrc32C;
73
+
74
+ #define CRC32C_INIT_VAL 0xFFFFFFFF
75
+ #define CRC32C_GET_DIGEST(crc) ((crc) ^ CRC_INIT_VAL)
76
+ #define CRC32C_UPDATE_BYTE(crc, b) (g_Crc32CTable[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8))
77
+
78
+ static UInt32 Crc32C_Update(UInt32 crc, Byte const *data, size_t size)
79
+ {
80
+ for (size_t i = 0; i < size; i++)
81
+ crc = CRC32C_UPDATE_BYTE(crc, data[i]);
82
+ return crc;
83
+ }
84
+
85
+ static UInt32 Crc32C_Calc(Byte const *data, size_t size)
86
+ {
87
+ return Crc32C_Update(CRC32C_INIT_VAL, data, size);
88
+ }
89
+ */
90
+
91
+
92
+ #define CRC16_INIT_VAL 0xFFFF
93
+
94
+ #define Crc16Update(crc, data, size) LzhCrc16Update(crc, data, size)
95
+
96
+ static UInt32 Crc16Calc(Byte const *data, size_t size)
97
+ {
98
+ return Crc16Update(CRC16_INIT_VAL, data, size);
99
+ }
100
+
101
+
102
+ #define EXT4_GOOD_OLD_INODE_SIZE 128
103
+ #define EXT_NODE_SIZE_MIN 128
104
+
105
+
106
+ // inodes numbers
107
+
108
+ // #define k_INODE_BAD 1 // Bad blocks
109
+ #define k_INODE_ROOT 2 // Root dir
110
+ // #define k_INODE_USR_QUOTA 3 // User quota
111
+ // #define k_INODE_GRP_QUOTA 4 // Group quota
112
+ // #define k_INODE_BOOT_LOADER 5 // Boot loader
113
+ // #define k_INODE_UNDEL_DIR 6 // Undelete dir
114
+ #define k_INODE_RESIZE 7 // Reserved group descriptors
115
+ // #define k_INODE_JOURNAL 8 // Journal
116
+
117
+ // First non-reserved inode for old ext4 filesystems
118
+ #define k_INODE_GOOD_OLD_FIRST 11
119
+
120
+ static const char * const k_SysInode_Names[] =
121
+ {
122
+ "0"
123
+ , "Bad"
124
+ , "Root"
125
+ , "UserQuota"
126
+ , "GroupQuota"
127
+ , "BootLoader"
128
+ , "Undelete"
129
+ , "Resize"
130
+ , "Journal"
131
+ , "Exclude"
132
+ , "Replica"
133
+ };
134
+
135
+ static const char * const kHostOS[] =
136
+ {
137
+ "Linux"
138
+ , "Hurd"
139
+ , "Masix"
140
+ , "FreeBSD"
141
+ , "Lites"
142
+ };
143
+
144
+ static const char * const g_FeatureCompat_Flags[] =
145
+ {
146
+ "DIR_PREALLOC"
147
+ , "IMAGIC_INODES"
148
+ , "HAS_JOURNAL"
149
+ , "EXT_ATTR"
150
+ , "RESIZE_INODE"
151
+ , "DIR_INDEX"
152
+ , "LAZY_BG" // not in Linux
153
+ , NULL // { 7, "EXCLUDE_INODE" // not used
154
+ , NULL // { 8, "EXCLUDE_BITMAP" // not in kernel
155
+ , "SPARSE_SUPER2"
156
+ };
157
+
158
+
159
+ #define EXT4_FEATURE_INCOMPAT_FILETYPE (1 << 1)
160
+ #define EXT4_FEATURE_INCOMPAT_64BIT (1 << 7)
161
+
162
+ static const char * const g_FeatureIncompat_Flags[] =
163
+ {
164
+ "COMPRESSION"
165
+ , "FILETYPE"
166
+ , "RECOVER" /* Needs recovery */
167
+ , "JOURNAL_DEV" /* Journal device */
168
+ , "META_BG"
169
+ , NULL
170
+ , "EXTENTS" /* extents support */
171
+ , "64BIT"
172
+ , "MMP"
173
+ , "FLEX_BG"
174
+ , "EA_INODE" /* EA in inode */
175
+ , NULL
176
+ , "DIRDATA" /* data in dirent */
177
+ , "BG_USE_META_CSUM" /* use crc32c for bg */
178
+ , "LARGEDIR" /* >2GB or 3-lvl htree */
179
+ , "INLINE_DATA" /* data in inode */
180
+ , "ENCRYPT" // 16
181
+ };
182
+
183
+
184
+ static const UInt32 RO_COMPAT_GDT_CSUM = 1 << 4;
185
+ static const UInt32 RO_COMPAT_METADATA_CSUM = 1 << 10;
186
+
187
+ static const char * const g_FeatureRoCompat_Flags[] =
188
+ {
189
+ "SPARSE_SUPER"
190
+ , "LARGE_FILE"
191
+ , "BTREE_DIR"
192
+ , "HUGE_FILE"
193
+ , "GDT_CSUM"
194
+ , "DIR_NLINK"
195
+ , "EXTRA_ISIZE"
196
+ , "HAS_SNAPSHOT"
197
+ , "QUOTA"
198
+ , "BIGALLOC"
199
+ , "METADATA_CSUM"
200
+ , "REPLICA"
201
+ , "READONLY" // 12
202
+ };
203
+
204
+
205
+
206
+ static const UInt32 k_NodeFlags_HUGE = (UInt32)1 << 18;
207
+ static const UInt32 k_NodeFlags_EXTENTS = (UInt32)1 << 19;
208
+
209
+
210
+ static const char * const g_NodeFlags[] =
211
+ {
212
+ "SECRM"
213
+ , "UNRM"
214
+ , "COMPR"
215
+ , "SYNC"
216
+ , "IMMUTABLE"
217
+ , "APPEND"
218
+ , "NODUMP"
219
+ , "NOATIME"
220
+ , "DIRTY"
221
+ , "COMPRBLK"
222
+ , "NOCOMPR"
223
+ , "ENCRYPT"
224
+ , "INDEX"
225
+ , "IMAGIC"
226
+ , "JOURNAL_DATA"
227
+ , "NOTAIL"
228
+ , "DIRSYNC"
229
+ , "TOPDIR"
230
+ , "HUGE_FILE"
231
+ , "EXTENTS"
232
+ , NULL
233
+ , "EA_INODE"
234
+ , "EOFBLOCKS"
235
+ , NULL
236
+ , NULL
237
+ , NULL
238
+ , NULL
239
+ , NULL
240
+ , "INLINE_DATA" // 28
241
+ };
242
+
243
+
244
+ enum
245
+ {
246
+ k_Type_UNKNOWN,
247
+ k_Type_REG_FILE,
248
+ k_Type_DIR,
249
+ k_Type_CHRDEV,
250
+ k_Type_BLKDEV,
251
+ k_Type_FIFO,
252
+ k_Type_SOCK,
253
+ k_Type_SYMLINK
254
+ };
255
+
256
+ static const UInt16 k_TypeToMode[] =
257
+ {
258
+ 0,
259
+ MY_LIN_S_IFREG,
260
+ MY_LIN_S_IFDIR,
261
+ MY_LIN_S_IFCHR,
262
+ MY_LIN_S_IFBLK,
263
+ MY_LIN_S_IFIFO,
264
+ MY_LIN_S_IFSOCK,
265
+ MY_LIN_S_IFLNK
266
+ };
267
+
268
+
269
+ #define EXT4_GOOD_OLD_REV 0 // old (original) format
270
+ // #define EXT4_DYNAMIC_REV 1 // V2 format with dynamic inode sizes
271
+
272
+ struct CHeader
273
+ {
274
+ unsigned BlockBits;
275
+ unsigned ClusterBits;
276
+
277
+ UInt32 NumInodes;
278
+ UInt64 NumBlocks;
279
+ // UInt64 NumBlocksSuper;
280
+ UInt64 NumFreeBlocks;
281
+ UInt32 NumFreeInodes;
282
+ // UInt32 FirstDataBlock;
283
+
284
+ UInt32 BlocksPerGroup;
285
+ UInt32 ClustersPerGroup;
286
+ UInt32 InodesPerGroup;
287
+
288
+ UInt32 MountTime;
289
+ UInt32 WriteTime;
290
+
291
+ // UInt16 NumMounts;
292
+ // UInt16 NumMountsMax;
293
+
294
+ // UInt16 State;
295
+ // UInt16 Errors;
296
+ // UInt16 MinorRevLevel;
297
+
298
+ UInt32 LastCheckTime;
299
+ // UInt32 CheckInterval;
300
+ UInt32 CreatorOs;
301
+ UInt32 RevLevel;
302
+
303
+ // UInt16 DefResUid;
304
+ // UInt16 DefResGid;
305
+
306
+ UInt32 FirstInode;
307
+ UInt16 InodeSize;
308
+ UInt16 BlockGroupNr;
309
+ UInt32 FeatureCompat;
310
+ UInt32 FeatureIncompat;
311
+ UInt32 FeatureRoCompat;
312
+ Byte Uuid[16];
313
+ char VolName[16];
314
+ char LastMount[64];
315
+ // UInt32 BitmapAlgo;
316
+
317
+ UInt32 JournalInode;
318
+ UInt16 GdSize; // = 64 if 64-bit();
319
+ UInt32 CTime;
320
+ UInt16 MinExtraISize;
321
+ // UInt16 WantExtraISize;
322
+ // UInt32 Flags;
323
+ // Byte LogGroupsPerFlex;
324
+ // Byte ChecksumType;
325
+
326
+ UInt64 WrittenKB;
327
+
328
+ bool IsOldRev() const { return RevLevel == EXT4_GOOD_OLD_REV; }
329
+
330
+ UInt64 GetNumGroups() const { return (NumBlocks + BlocksPerGroup - 1) / BlocksPerGroup; }
331
+ UInt64 GetNumGroups2() const { return ((UInt64)NumInodes + InodesPerGroup - 1) / InodesPerGroup; }
332
+
333
+ bool IsThereFileType() const { return (FeatureIncompat & EXT4_FEATURE_INCOMPAT_FILETYPE) != 0; }
334
+ bool Is64Bit() const { return (FeatureIncompat & EXT4_FEATURE_INCOMPAT_64BIT) != 0; }
335
+ bool UseGdtChecksum() const { return (FeatureRoCompat & RO_COMPAT_GDT_CSUM) != 0; }
336
+ bool UseMetadataChecksum() const { return (FeatureRoCompat & RO_COMPAT_METADATA_CSUM) != 0; }
337
+
338
+ UInt64 GetPhySize() const { return NumBlocks << BlockBits; }
339
+
340
+ bool Parse(const Byte *p);
341
+ };
342
+
343
+
344
+ static int inline GetLog(UInt32 num)
345
+ {
346
+ for (unsigned i = 0; i < 32; i++)
347
+ if (((UInt32)1 << i) == num)
348
+ return (int)i;
349
+ return -1;
350
+ }
351
+
352
+ static bool inline IsEmptyData(const Byte *data, unsigned size)
353
+ {
354
+ for (unsigned i = 0; i < size; i++)
355
+ if (data[i] != 0)
356
+ return false;
357
+ return true;
358
+ }
359
+
360
+
361
+ bool CHeader::Parse(const Byte *p)
362
+ {
363
+ if (GetUi16(p + 0x38) != 0xEF53)
364
+ return false;
365
+
366
+ LE_32 (0x18, BlockBits)
367
+ LE_32 (0x1C, ClusterBits)
368
+
369
+ if (ClusterBits != 0 && BlockBits != ClusterBits)
370
+ return false;
371
+
372
+ if (BlockBits > 16 - 10)
373
+ return false;
374
+ BlockBits += 10;
375
+
376
+ LE_32 (0x00, NumInodes)
377
+ LE_32 (0x04, NumBlocks)
378
+ // LE_32 (0x08, NumBlocksSuper);
379
+ LE_32 (0x0C, NumFreeBlocks)
380
+ LE_32 (0x10, NumFreeInodes)
381
+
382
+ if (NumInodes < 2 || NumInodes <= NumFreeInodes)
383
+ return false;
384
+
385
+ UInt32 FirstDataBlock;
386
+ LE_32 (0x14, FirstDataBlock)
387
+ if (FirstDataBlock != (unsigned)(BlockBits == 10 ? 1 : 0))
388
+ return false;
389
+
390
+ LE_32 (0x20, BlocksPerGroup)
391
+ LE_32 (0x24, ClustersPerGroup)
392
+
393
+ if (BlocksPerGroup != ClustersPerGroup)
394
+ return false;
395
+ if (BlocksPerGroup == 0)
396
+ return false;
397
+ if (BlocksPerGroup != ((UInt32)1 << (BlockBits + 3)))
398
+ {
399
+ // it's allowed in ext2
400
+ // return false;
401
+ }
402
+
403
+ LE_32 (0x28, InodesPerGroup)
404
+
405
+ if (InodesPerGroup < 1 || InodesPerGroup > NumInodes)
406
+ return false;
407
+
408
+ LE_32 (0x2C, MountTime)
409
+ LE_32 (0x30, WriteTime)
410
+
411
+ // LE_16 (0x34, NumMounts);
412
+ // LE_16 (0x36, NumMountsMax);
413
+
414
+ // LE_16 (0x3A, State);
415
+ // LE_16 (0x3C, Errors);
416
+ // LE_16 (0x3E, MinorRevLevel);
417
+
418
+ LE_32 (0x40, LastCheckTime)
419
+ // LE_32 (0x44, CheckInterval);
420
+ LE_32 (0x48, CreatorOs)
421
+ LE_32 (0x4C, RevLevel)
422
+
423
+ // LE_16 (0x50, DefResUid);
424
+ // LE_16 (0x52, DefResGid);
425
+
426
+ FirstInode = k_INODE_GOOD_OLD_FIRST;
427
+ InodeSize = EXT4_GOOD_OLD_INODE_SIZE;
428
+
429
+ if (!IsOldRev())
430
+ {
431
+ LE_32 (0x54, FirstInode)
432
+ LE_16 (0x58, InodeSize)
433
+ if (FirstInode < k_INODE_GOOD_OLD_FIRST)
434
+ return false;
435
+ if (InodeSize > ((UInt32)1 << BlockBits)
436
+ || InodeSize < EXT_NODE_SIZE_MIN
437
+ || GetLog(InodeSize) < 0)
438
+ return false;
439
+ }
440
+
441
+ LE_16 (0x5A, BlockGroupNr)
442
+ LE_32 (0x5C, FeatureCompat)
443
+ LE_32 (0x60, FeatureIncompat)
444
+ LE_32 (0x64, FeatureRoCompat)
445
+
446
+ memcpy(Uuid, p + 0x68, sizeof(Uuid));
447
+ memcpy(VolName, p + 0x78, sizeof(VolName));
448
+ memcpy(LastMount, p + 0x88, sizeof(LastMount));
449
+
450
+ // LE_32 (0xC8, BitmapAlgo);
451
+
452
+ LE_32 (0xE0, JournalInode)
453
+
454
+ LE_16 (0xFE, GdSize)
455
+
456
+ LE_32 (0x108, CTime)
457
+
458
+ if (Is64Bit())
459
+ {
460
+ HI_32(0x150, NumBlocks)
461
+ // HI_32(0x154, NumBlocksSuper);
462
+ HI_32(0x158, NumFreeBlocks)
463
+ }
464
+
465
+ if (NumBlocks >= (UInt64)1 << (63 - BlockBits))
466
+ return false;
467
+
468
+
469
+ LE_16(0x15C, MinExtraISize)
470
+ // LE_16(0x15E, WantExtraISize);
471
+ // LE_32(0x160, Flags);
472
+ // LE_16(0x164, RaidStride);
473
+ // LE_16(0x166, MmpInterval);
474
+ // LE_64(0x168, MmpBlock);
475
+
476
+ // LogGroupsPerFlex = p[0x174];
477
+ // ChecksumType = p[0x175];
478
+
479
+ LE_64 (0x178, WrittenKB)
480
+
481
+ // LE_32(0x194, ErrorCount);
482
+ // LE_32(0x198, ErrorTime);
483
+ // LE_32(0x19C, ErrorINode);
484
+ // LE_32(0x1A0, ErrorBlock);
485
+
486
+ if (NumBlocks < 1)
487
+ return false;
488
+ if (NumFreeBlocks > NumBlocks)
489
+ return false;
490
+
491
+ if (GetNumGroups() != GetNumGroups2())
492
+ return false;
493
+
494
+ return true;
495
+ }
496
+
497
+
498
+ struct CGroupDescriptor
499
+ {
500
+ UInt64 BlockBitmap;
501
+ UInt64 InodeBitmap;
502
+ UInt64 InodeTable;
503
+ UInt32 NumFreeBlocks;
504
+ UInt32 NumFreeInodes;
505
+ UInt32 DirCount;
506
+
507
+ UInt16 Flags;
508
+
509
+ UInt64 ExcludeBitmap;
510
+ UInt32 BlockBitmap_Checksum;
511
+ UInt32 InodeBitmap_Checksum;
512
+ UInt32 UnusedCount;
513
+ UInt16 Checksum;
514
+
515
+ void Parse(const Byte *p, unsigned size);
516
+ };
517
+
518
+ void CGroupDescriptor::Parse(const Byte *p, unsigned size)
519
+ {
520
+ LE_32 (0x00, BlockBitmap)
521
+ LE_32 (0x04, InodeBitmap)
522
+ LE_32 (0x08, InodeTable)
523
+ LE_16 (0x0C, NumFreeBlocks)
524
+ LE_16 (0x0E, NumFreeInodes)
525
+ LE_16 (0x10, DirCount)
526
+ LE_16 (0x12, Flags)
527
+ LE_32 (0x14, ExcludeBitmap)
528
+ LE_16 (0x18, BlockBitmap_Checksum)
529
+ LE_16 (0x1A, InodeBitmap_Checksum)
530
+ LE_16 (0x1C, UnusedCount)
531
+ LE_16 (0x1E, Checksum)
532
+
533
+ if (size >= 64)
534
+ {
535
+ p += 0x20;
536
+ HI_32 (0x00, BlockBitmap)
537
+ HI_32 (0x04, InodeBitmap)
538
+ HI_32 (0x08, InodeTable)
539
+ HI_16 (0x0C, NumFreeBlocks)
540
+ HI_16 (0x0E, NumFreeInodes)
541
+ HI_16 (0x10, DirCount)
542
+ HI_16 (0x12, UnusedCount) // instead of Flags
543
+ HI_32 (0x14, ExcludeBitmap)
544
+ HI_16 (0x18, BlockBitmap_Checksum)
545
+ HI_16 (0x1A, InodeBitmap_Checksum)
546
+ // HI_16 (0x1C, Reserved);
547
+ }
548
+ }
549
+
550
+
551
+ static const unsigned kNodeBlockFieldSize = 60;
552
+
553
+ struct CExtentTreeHeader
554
+ {
555
+ UInt16 NumEntries;
556
+ UInt16 MaxEntries;
557
+ UInt16 Depth;
558
+ // UInt32 Generation;
559
+
560
+ bool Parse(const Byte *p)
561
+ {
562
+ LE_16 (0x02, NumEntries)
563
+ LE_16 (0x04, MaxEntries)
564
+ LE_16 (0x06, Depth)
565
+ // LE_32 (0x08, Generation);
566
+ return Get16(p) == 0xF30A; // magic
567
+ }
568
+ };
569
+
570
+ struct CExtentIndexNode
571
+ {
572
+ UInt32 VirtBlock;
573
+ UInt64 PhyLeaf;
574
+
575
+ void Parse(const Byte *p)
576
+ {
577
+ LE_32 (0x00, VirtBlock)
578
+ LE_32 (0x04, PhyLeaf)
579
+ PhyLeaf |= (((UInt64)Get16(p + 8)) << 32);
580
+ // unused 16-bit field (at offset 0x0A) can be not zero in some cases. Why?
581
+ }
582
+ };
583
+
584
+ struct CExtent
585
+ {
586
+ UInt32 VirtBlock;
587
+ UInt16 Len;
588
+ bool IsInited;
589
+ UInt64 PhyStart;
590
+
591
+ UInt32 GetVirtEnd() const { return VirtBlock + Len; }
592
+ bool IsLenOK() const { return VirtBlock + Len >= VirtBlock; }
593
+
594
+ void Parse(const Byte *p)
595
+ {
596
+ LE_32 (0x00, VirtBlock)
597
+ LE_16 (0x04, Len)
598
+ IsInited = true;
599
+ if (Len > (UInt32)0x8000)
600
+ {
601
+ IsInited = false;
602
+ Len = (UInt16)(Len - (UInt32)0x8000);
603
+ }
604
+ LE_32 (0x08, PhyStart)
605
+ UInt16 hi;
606
+ LE_16 (0x06, hi)
607
+ PhyStart |= ((UInt64)hi << 32);
608
+ }
609
+ };
610
+
611
+
612
+
613
+ struct CExtTime
614
+ {
615
+ UInt32 Val;
616
+ UInt32 Extra;
617
+ };
618
+
619
+ struct CNode
620
+ {
621
+ Int32 ParentNode; // in _refs[], -1 if not dir
622
+ int ItemIndex; // in _items[] , (set as >=0 only for if (IsDir())
623
+ int SymLinkIndex; // in _symLinks[]
624
+ int DirIndex; // in _dirs[]
625
+
626
+ UInt16 Mode;
627
+ UInt32 Uid; // fixed 21.02
628
+ UInt32 Gid; // fixed 21.02
629
+ // UInt16 Checksum;
630
+
631
+ UInt32 NumLinksCalced;
632
+
633
+ UInt64 FileSize;
634
+ CExtTime MTime;
635
+ CExtTime ATime;
636
+ CExtTime CTime;
637
+ CExtTime ChangeTime;
638
+ // CExtTime DTime;
639
+
640
+ UInt64 NumBlocks;
641
+ UInt32 NumLinks;
642
+ UInt32 Flags;
643
+
644
+ Byte Block[kNodeBlockFieldSize];
645
+
646
+ void Construct()
647
+ {
648
+ ParentNode = -1;
649
+ ItemIndex = -1;
650
+ SymLinkIndex = -1;
651
+ DirIndex = -1;
652
+ NumLinksCalced = 0;
653
+ }
654
+
655
+ bool IsFlags_HUGE() const { return (Flags & k_NodeFlags_HUGE) != 0; }
656
+ bool IsFlags_EXTENTS() const { return (Flags & k_NodeFlags_EXTENTS) != 0; }
657
+
658
+ bool IsDir() const { return MY_LIN_S_ISDIR(Mode); }
659
+ bool IsRegular() const { return MY_LIN_S_ISREG(Mode); }
660
+ bool IsLink() const { return MY_LIN_S_ISLNK(Mode); }
661
+
662
+ bool Parse(const Byte *p, const CHeader &_h);
663
+ };
664
+
665
+
666
+ bool CNode::Parse(const Byte *p, const CHeader &_h)
667
+ {
668
+ MTime.Extra = 0;
669
+ ATime.Extra = 0;
670
+ CTime.Extra = 0;
671
+ CTime.Val = 0;
672
+ ChangeTime.Extra = 0;
673
+ // DTime.Extra = 0;
674
+
675
+ LE_16 (0x00, Mode)
676
+ LE_16 (0x02, Uid)
677
+ LE_32 (0x04, FileSize)
678
+ LE_32 (0x08, ATime.Val)
679
+ LE_32 (0x0C, ChangeTime.Val)
680
+ LE_32 (0x10, MTime.Val)
681
+ // LE_32 (0x14, DTime.Val);
682
+ LE_16 (0x18, Gid)
683
+ LE_16 (0x1A, NumLinks)
684
+
685
+ LE_32 (0x1C, NumBlocks)
686
+ LE_32 (0x20, Flags)
687
+ // LE_32 (0x24, Union osd1);
688
+
689
+ memcpy(Block, p + 0x28, kNodeBlockFieldSize);
690
+
691
+ // LE_32 (0x64, Generation); // File version (for NFS)
692
+ // LE_32 (0x68, ACL);
693
+
694
+ {
695
+ UInt32 highSize;
696
+ LE_32 (0x6C, highSize) // In ext2/3 this field was named i_dir_acl
697
+
698
+ if (IsRegular()) // do we need that check ?
699
+ FileSize |= ((UInt64)highSize << 32);
700
+ }
701
+
702
+ // UInt32 fragmentAddress;
703
+ // LE_32 (0x70, fragmentAddress);
704
+
705
+ // osd2
706
+ {
707
+ // Linux;
708
+ // ext2:
709
+ // Byte FragmentNumber = p[0x74];
710
+ // Byte FragmentSize = p[0x74 + 1];
711
+
712
+ // ext4:
713
+ UInt32 numBlocksHigh;
714
+ LE_16 (0x74, numBlocksHigh)
715
+ NumBlocks |= (UInt64)numBlocksHigh << 32;
716
+
717
+ HI_16 (0x74 + 4, Uid)
718
+ HI_16 (0x74 + 6, Gid)
719
+ /*
720
+ UInt32 checksum;
721
+ LE_16 (0x74 + 8, checksum);
722
+ checksum = checksum;
723
+ */
724
+ }
725
+
726
+ // 0x74: Byte Union osd2[12];
727
+
728
+ if (_h.InodeSize > 128)
729
+ {
730
+ // InodeSize is power of 2, so the following check is not required:
731
+ // if (_h.InodeSize < 128 + 2) return false;
732
+ UInt16 extra_isize;
733
+ LE_16 (0x80, extra_isize)
734
+ if (128 + extra_isize > _h.InodeSize)
735
+ return false;
736
+ if (extra_isize >= 0x1C)
737
+ {
738
+ // UInt16 checksumUpper;
739
+ // LE_16 (0x82, checksumUpper);
740
+ LE_32 (0x84, ChangeTime.Extra)
741
+ LE_32 (0x88, MTime.Extra)
742
+ LE_32 (0x8C, ATime.Extra)
743
+ LE_32 (0x90, CTime.Val)
744
+ LE_32 (0x94, CTime.Extra)
745
+ // LE_32 (0x98, VersionHi)
746
+ }
747
+ }
748
+
749
+ PRF(printf("size = %5d", (unsigned)FileSize));
750
+
751
+ return true;
752
+ }
753
+
754
+
755
+ struct CItem
756
+ {
757
+ unsigned Node; // in _refs[]
758
+ int ParentNode; // in _refs[]
759
+ int SymLinkItemIndex; // in _items[], if the Node contains SymLink to existing dir
760
+ Byte Type;
761
+
762
+ AString Name;
763
+
764
+ CItem():
765
+ Node(0),
766
+ ParentNode(-1),
767
+ SymLinkItemIndex(-1),
768
+ Type(k_Type_UNKNOWN)
769
+ {}
770
+
771
+ void Clear()
772
+ {
773
+ Node = 0;
774
+ ParentNode = -1;
775
+ SymLinkItemIndex = -1;
776
+ Type = k_Type_UNKNOWN;
777
+ Name.Empty();
778
+ }
779
+
780
+ bool IsDir() const { return Type == k_Type_DIR; }
781
+ // bool IsNotDir() const { return Type != k_Type_DIR && Type != k_Type_UNKNOWN; }
782
+ };
783
+
784
+
785
+
786
+ static const unsigned kNumTreeLevelsMax = 6; // must be >= 3
787
+
788
+
789
+ Z7_CLASS_IMP_CHandler_IInArchive_2(
790
+ IArchiveGetRawProps,
791
+ IInArchiveGetStream
792
+ )
793
+ CObjectVector<CItem> _items;
794
+ CIntVector _refs; // iNode -> (index in _nodes). if (_refs[iNode] < 0), that node is not filled
795
+ CRecordVector<CNode> _nodes;
796
+ CObjectVector<CUIntVector> _dirs; // each CUIntVector contains indexes in _items[] only for dir items;
797
+ AStringVector _symLinks;
798
+ AStringVector _auxItems;
799
+ int _auxSysIndex;
800
+ int _auxUnknownIndex;
801
+
802
+ CMyComPtr<IInStream> _stream;
803
+ UInt64 _phySize;
804
+ bool _isArc;
805
+ bool _headersError;
806
+ bool _headersWarning;
807
+ bool _linksError;
808
+
809
+ bool _isUTF;
810
+
811
+ CHeader _h;
812
+
813
+ IArchiveOpenCallback *_openCallback;
814
+ UInt64 _totalRead;
815
+ UInt64 _totalReadPrev;
816
+
817
+ CByteBuffer _tempBufs[kNumTreeLevelsMax];
818
+
819
+
820
+ HRESULT CheckProgress2()
821
+ {
822
+ const UInt64 numFiles = _items.Size();
823
+ return _openCallback->SetCompleted(&numFiles, &_totalRead);
824
+ }
825
+
826
+ HRESULT CheckProgress()
827
+ {
828
+ HRESULT res = S_OK;
829
+ if (_openCallback)
830
+ {
831
+ if (_totalRead - _totalReadPrev >= ((UInt32)1 << 20))
832
+ {
833
+ _totalReadPrev = _totalRead;
834
+ res = CheckProgress2();
835
+ }
836
+ }
837
+ return res;
838
+ }
839
+
840
+
841
+ int GetParentAux(const CItem &item) const
842
+ {
843
+ if (item.Node < _h.FirstInode && _auxSysIndex >= 0)
844
+ return _auxSysIndex;
845
+ return _auxUnknownIndex;
846
+ }
847
+
848
+ HRESULT SeekAndRead(IInStream *inStream, UInt64 block, Byte *data, size_t size);
849
+ HRESULT ParseDir(const Byte *data, size_t size, unsigned iNodeDir);
850
+ int FindTargetItem_for_SymLink(unsigned dirNode, const AString &path) const;
851
+
852
+ HRESULT FillFileBlocks2(UInt32 block, unsigned level, unsigned numBlocks, CRecordVector<UInt32> &blocks);
853
+ HRESULT FillFileBlocks(const Byte *p, unsigned numBlocks, CRecordVector<UInt32> &blocks);
854
+ HRESULT FillExtents(const Byte *p, size_t size, CRecordVector<CExtent> &extents, int parentDepth);
855
+
856
+ HRESULT GetStream_Node(unsigned nodeIndex, ISequentialInStream **stream);
857
+ HRESULT ExtractNode(unsigned nodeIndex, CByteBuffer &data);
858
+
859
+ void ClearRefs();
860
+ HRESULT Open2(IInStream *inStream);
861
+
862
+ void GetPath(unsigned index, AString &s) const;
863
+ bool GetPackSize(unsigned index, UInt64 &res) const;
864
+ };
865
+
866
+
867
+
868
+ HRESULT CHandler::ParseDir(const Byte *p, size_t size, unsigned iNodeDir)
869
+ {
870
+ bool isThereSelfLink = false;
871
+
872
+ PRF(printf("\n\n========= node = %5d size = %5d", (unsigned)iNodeDir, (unsigned)size));
873
+
874
+ CNode &nodeDir = _nodes[_refs[iNodeDir]];
875
+ nodeDir.DirIndex = (int)_dirs.Size();
876
+ CUIntVector &dir = _dirs.AddNew();
877
+ int parentNode = -1;
878
+
879
+ CItem item;
880
+
881
+ for (;;)
882
+ {
883
+ if (size == 0)
884
+ break;
885
+ if (size < 8)
886
+ return S_FALSE;
887
+ UInt32 iNode;
888
+ LE_32 (0x00, iNode)
889
+ unsigned recLen;
890
+ LE_16 (0x04, recLen)
891
+ const unsigned nameLen = p[6];
892
+ const Byte type = p[7];
893
+
894
+ if (recLen > size)
895
+ return S_FALSE;
896
+ if (nameLen + 8 > recLen)
897
+ return S_FALSE;
898
+
899
+ if (iNode >= _refs.Size())
900
+ return S_FALSE;
901
+
902
+ item.Clear();
903
+
904
+ if (_h.IsThereFileType())
905
+ item.Type = type;
906
+ else if (type != 0)
907
+ return S_FALSE;
908
+
909
+ item.ParentNode = (int)iNodeDir;
910
+ item.Node = iNode;
911
+ item.Name.SetFrom_CalcLen((const char *)(p + 8), nameLen);
912
+
913
+ p += recLen;
914
+ size -= recLen;
915
+
916
+ if (item.Name.Len() != nameLen)
917
+ return S_FALSE;
918
+
919
+ if (_isUTF)
920
+ {
921
+ // 21.07 : we force UTF8
922
+ // _isUTF = CheckUTF8_AString(item.Name);
923
+ }
924
+
925
+ if (iNode == 0)
926
+ {
927
+ /*
928
+ ext3 deleted??
929
+ if (item.Name.Len() != 0)
930
+ return S_FALSE;
931
+ */
932
+
933
+ PRF(printf("\n EMPTY %6d %d %s", (unsigned)recLen, (unsigned)type, (const char *)item.Name));
934
+ if (type == 0xDE)
935
+ {
936
+ // checksum
937
+ }
938
+ continue;
939
+ }
940
+
941
+ const int nodeIndex = _refs[iNode];
942
+ if (nodeIndex < 0)
943
+ return S_FALSE;
944
+ CNode &node = _nodes[nodeIndex];
945
+
946
+ if (_h.IsThereFileType() && type != 0)
947
+ {
948
+ if (type >= Z7_ARRAY_SIZE(k_TypeToMode))
949
+ return S_FALSE;
950
+ if (k_TypeToMode[type] != (node.Mode & MY_LIN_S_IFMT))
951
+ return S_FALSE;
952
+ }
953
+
954
+ node.NumLinksCalced++;
955
+
956
+ PRF(printf("\n%s %6d %s", item.IsDir() ? "DIR " : " ", (unsigned)item.Node, (const char *)item.Name));
957
+
958
+ if (item.Name[0] == '.')
959
+ {
960
+ if (item.Name[1] == 0)
961
+ {
962
+ if (isThereSelfLink)
963
+ return S_FALSE;
964
+ isThereSelfLink = true;
965
+ if (iNode != iNodeDir)
966
+ return S_FALSE;
967
+ continue;
968
+ }
969
+
970
+ if (item.Name[1] == '.' && item.Name[2] == 0)
971
+ {
972
+ if (parentNode >= 0)
973
+ return S_FALSE;
974
+ if (!node.IsDir())
975
+ return S_FALSE;
976
+ if (iNode == iNodeDir && iNode != k_INODE_ROOT)
977
+ return S_FALSE;
978
+
979
+ parentNode = (int)iNode;
980
+
981
+ if (nodeDir.ParentNode < 0)
982
+ nodeDir.ParentNode = (int)iNode;
983
+ else if ((unsigned)nodeDir.ParentNode != iNode)
984
+ return S_FALSE;
985
+
986
+ continue;
987
+ }
988
+ }
989
+
990
+ if (iNode == iNodeDir)
991
+ return S_FALSE;
992
+
993
+ if (parentNode < 0)
994
+ return S_FALSE;
995
+
996
+ if (node.IsDir())
997
+ {
998
+ if (node.ParentNode < 0)
999
+ node.ParentNode = (int)iNodeDir;
1000
+ else if ((unsigned)node.ParentNode != iNodeDir)
1001
+ return S_FALSE;
1002
+ const unsigned itemIndex = _items.Size();
1003
+ dir.Add(itemIndex);
1004
+ node.ItemIndex = (int)itemIndex;
1005
+ }
1006
+
1007
+ _items.Add(item);
1008
+ }
1009
+
1010
+ if (parentNode < 0 || !isThereSelfLink)
1011
+ return S_FALSE;
1012
+
1013
+ return S_OK;
1014
+ }
1015
+
1016
+
1017
+ static int CompareItemsNames(const unsigned *p1, const unsigned *p2, void *param)
1018
+ {
1019
+ const CObjectVector<CItem> &items = *(const CObjectVector<CItem> *)param;
1020
+ return strcmp(items[*p1].Name, items[*p2].Name);
1021
+ }
1022
+
1023
+
1024
+ int CHandler::FindTargetItem_for_SymLink(unsigned iNode, const AString &path) const
1025
+ {
1026
+ unsigned pos = 0;
1027
+
1028
+ if (path.IsEmpty())
1029
+ return -1;
1030
+
1031
+ if (path[0] == '/')
1032
+ {
1033
+ iNode = k_INODE_ROOT;
1034
+ if (iNode >= _refs.Size())
1035
+ return -1;
1036
+ pos = 1;
1037
+ }
1038
+
1039
+ AString s;
1040
+
1041
+ while (pos != path.Len())
1042
+ {
1043
+ const CNode &node = _nodes[_refs[iNode]];
1044
+ const int slash = path.Find('/', pos);
1045
+
1046
+ if (slash < 0)
1047
+ {
1048
+ s = path.Ptr(pos);
1049
+ pos = path.Len();
1050
+ }
1051
+ else
1052
+ {
1053
+ s.SetFrom(path.Ptr(pos), (unsigned)slash - pos);
1054
+ pos = (unsigned)slash + 1;
1055
+ }
1056
+
1057
+ if (s[0] == '.')
1058
+ {
1059
+ if (s[1] == 0)
1060
+ continue;
1061
+ else if (s[1] == '.' && s[2] == 0)
1062
+ {
1063
+ if (node.ParentNode < 0)
1064
+ return -1;
1065
+ if (iNode == k_INODE_ROOT)
1066
+ return -1;
1067
+ iNode = (unsigned)node.ParentNode;
1068
+ continue;
1069
+ }
1070
+ }
1071
+
1072
+ if (node.DirIndex < 0)
1073
+ return -1;
1074
+
1075
+ const CUIntVector &dir = _dirs[node.DirIndex];
1076
+
1077
+ /*
1078
+ for (unsigned i = 0;; i++)
1079
+ {
1080
+ if (i >= dir.Size())
1081
+ return -1;
1082
+ const CItem &item = _items[dir[i]];
1083
+ if (item.Name == s)
1084
+ {
1085
+ iNode = item.Node;
1086
+ break;
1087
+ }
1088
+ }
1089
+ */
1090
+
1091
+ unsigned left = 0, right = dir.Size();
1092
+ for (;;)
1093
+ {
1094
+ if (left == right)
1095
+ return -1;
1096
+ const unsigned mid = (unsigned)(((size_t)left + (size_t)right) / 2);
1097
+ const CItem &item = _items[dir[mid]];
1098
+ const int comp = strcmp(s, item.Name);
1099
+ if (comp == 0)
1100
+ {
1101
+ iNode = item.Node;
1102
+ break;
1103
+ }
1104
+ if (comp < 0)
1105
+ right = mid;
1106
+ else
1107
+ left = mid + 1;
1108
+ }
1109
+ }
1110
+
1111
+ return _nodes[_refs[iNode]].ItemIndex;
1112
+ }
1113
+
1114
+
1115
+ HRESULT CHandler::SeekAndRead(IInStream *inStream, UInt64 block, Byte *data, size_t size)
1116
+ {
1117
+ if (block == 0 || block >= _h.NumBlocks)
1118
+ return S_FALSE;
1119
+ if (((size + ((size_t)1 << _h.BlockBits) - 1) >> _h.BlockBits) > _h.NumBlocks - block)
1120
+ return S_FALSE;
1121
+ RINOK(InStream_SeekSet(inStream, (UInt64)block << _h.BlockBits))
1122
+ _totalRead += size;
1123
+ return ReadStream_FALSE(inStream, data, size);
1124
+ }
1125
+
1126
+
1127
+ static const unsigned kHeaderSize = 2 * 1024;
1128
+ static const unsigned kHeaderDataOffset = 1024;
1129
+
1130
+ HRESULT CHandler::Open2(IInStream *inStream)
1131
+ {
1132
+ {
1133
+ Byte buf[kHeaderSize];
1134
+ RINOK(ReadStream_FALSE(inStream, buf, kHeaderSize))
1135
+ if (!_h.Parse(buf + kHeaderDataOffset))
1136
+ return S_FALSE;
1137
+ if (_h.BlockGroupNr != 0)
1138
+ return S_FALSE; // it's just copy of super block
1139
+ }
1140
+
1141
+ {
1142
+ // ---------- Read groups and nodes ----------
1143
+
1144
+ unsigned numGroups;
1145
+ {
1146
+ const UInt64 numGroups64 = _h.GetNumGroups();
1147
+ if (numGroups64 > (UInt32)1 << 31)
1148
+ return S_FALSE;
1149
+ numGroups = (unsigned)numGroups64;
1150
+ }
1151
+
1152
+ unsigned gdBits = 5;
1153
+ if (_h.Is64Bit())
1154
+ {
1155
+ if (_h.GdSize != 64)
1156
+ return S_FALSE;
1157
+ gdBits = 6;
1158
+ }
1159
+
1160
+ _isArc = true;
1161
+ _phySize = _h.GetPhySize();
1162
+
1163
+ if (_openCallback)
1164
+ {
1165
+ RINOK(_openCallback->SetTotal(NULL, &_phySize))
1166
+ }
1167
+
1168
+ UInt64 fileSize = 0;
1169
+ RINOK(InStream_GetSize_SeekToEnd(inStream, fileSize))
1170
+
1171
+ CRecordVector<CGroupDescriptor> groups;
1172
+
1173
+ {
1174
+ // ---------- Read groups ----------
1175
+
1176
+ const size_t gdBufSize = (size_t)numGroups << gdBits;
1177
+ if ((gdBufSize >> gdBits) != numGroups)
1178
+ return S_FALSE;
1179
+ CByteBuffer gdBuf;
1180
+ gdBuf.Alloc(gdBufSize);
1181
+ RINOK(SeekAndRead(inStream, (_h.BlockBits <= 10 ? 2 : 1), gdBuf, gdBufSize))
1182
+
1183
+ const unsigned gd_Size = (unsigned)1 << gdBits;
1184
+ const Byte *p = gdBuf;
1185
+ for (unsigned i = 0; i < numGroups; i++, p += gd_Size)
1186
+ {
1187
+ CGroupDescriptor gd;
1188
+ gd.Parse(p, gd_Size);
1189
+ if (_h.UseMetadataChecksum())
1190
+ {
1191
+ // use CRC32c
1192
+ }
1193
+ else if (_h.UseGdtChecksum())
1194
+ {
1195
+ UInt32 crc = Crc16Calc(_h.Uuid, sizeof(_h.Uuid));
1196
+ Byte i_le[4];
1197
+ SetUi32(i_le, i)
1198
+ crc = Crc16Update(crc, i_le, 4);
1199
+ crc = Crc16Update(crc, p, 32 - 2);
1200
+ if (gd_Size != 32)
1201
+ crc = Crc16Update(crc, p + 32, gd_Size - 32);
1202
+ if (crc != gd.Checksum)
1203
+ return S_FALSE;
1204
+ }
1205
+
1206
+ groups.Add(gd);
1207
+ }
1208
+ }
1209
+
1210
+ {
1211
+ // ---------- Read nodes ----------
1212
+
1213
+ if (_h.NumInodes < _h.NumFreeInodes)
1214
+ return S_FALSE;
1215
+
1216
+ UInt32 numNodes = _h.InodesPerGroup;
1217
+ if (numNodes > _h.NumInodes)
1218
+ numNodes = _h.NumInodes;
1219
+ const size_t nodesDataSize = (size_t)numNodes * _h.InodeSize;
1220
+
1221
+ if (nodesDataSize / _h.InodeSize != numNodes)
1222
+ return S_FALSE;
1223
+
1224
+ // that code to reduce false detecting cases
1225
+ if (nodesDataSize > fileSize)
1226
+ {
1227
+ if (numNodes > (1 << 24))
1228
+ return S_FALSE;
1229
+ }
1230
+
1231
+ const size_t blockSize = (size_t)1 << _h.BlockBits;
1232
+ if (numNodes > blockSize * 8)
1233
+ return S_FALSE;
1234
+ const UInt32 numReserveInodes = _h.NumInodes - _h.NumFreeInodes + 1;
1235
+ // numReserveInodes = _h.NumInodes + 1;
1236
+ if (numReserveInodes != 0)
1237
+ {
1238
+ _nodes.Reserve(numReserveInodes);
1239
+ _refs.Reserve(numReserveInodes);
1240
+ }
1241
+
1242
+ CByteBuffer nodesData;
1243
+ nodesData.Alloc(nodesDataSize);
1244
+
1245
+ CByteBuffer nodesMap;
1246
+ nodesMap.Alloc(blockSize);
1247
+
1248
+ unsigned globalNodeIndex = 0;
1249
+ // unsigned numEmpty = 0;
1250
+ unsigned numEmpty_in_Maps = 0;
1251
+
1252
+ FOR_VECTOR (gi, groups)
1253
+ {
1254
+ if (globalNodeIndex >= _h.NumInodes)
1255
+ break;
1256
+
1257
+ const CGroupDescriptor &gd = groups[gi];
1258
+
1259
+ PRF(printf("\n\ng%6d block = %6x\n", gi, (unsigned)gd.InodeTable));
1260
+
1261
+ RINOK(SeekAndRead(inStream, gd.InodeBitmap, nodesMap, blockSize))
1262
+ RINOK(SeekAndRead(inStream, gd.InodeTable, nodesData, nodesDataSize))
1263
+
1264
+ unsigned numEmpty_in_Map = 0;
1265
+
1266
+ for (size_t n = 0; n < numNodes && globalNodeIndex < _h.NumInodes; n++, globalNodeIndex++)
1267
+ {
1268
+ if ((nodesMap[n >> 3] & ((unsigned)1 << (n & 7))) == 0)
1269
+ {
1270
+ numEmpty_in_Map++;
1271
+ continue;
1272
+ }
1273
+
1274
+ const Byte *p = nodesData + (size_t)n * _h.InodeSize;
1275
+ if (IsEmptyData(p, _h.InodeSize))
1276
+ {
1277
+ if (globalNodeIndex + 1 >= _h.FirstInode)
1278
+ {
1279
+ _headersError = true;
1280
+ // return S_FALSE;
1281
+ }
1282
+ continue;
1283
+ }
1284
+
1285
+ CNode node;
1286
+ node.Construct();
1287
+
1288
+ PRF(printf("\nnode = %5d ", (unsigned)n));
1289
+
1290
+ if (!node.Parse(p, _h))
1291
+ return S_FALSE;
1292
+
1293
+ // PRF(printf("\n %6d", (unsigned)n));
1294
+ /*
1295
+ SetUi32(p + 0x7C, 0)
1296
+ SetUi32(p + 0x82, 0)
1297
+
1298
+ UInt32 crc = Crc32C_Calc(_h.Uuid, sizeof(_h.Uuid));
1299
+ Byte i_le[4];
1300
+ SetUi32(i_le, n);
1301
+ crc = Crc32C_Update(crc, i_le, 4);
1302
+ crc = Crc32C_Update(crc, p, _h.InodeSize);
1303
+ if (crc != node.Checksum) return S_FALSE;
1304
+ */
1305
+
1306
+ while (_refs.Size() < globalNodeIndex + 1)
1307
+ {
1308
+ // numEmpty++;
1309
+ _refs.Add(-1);
1310
+ }
1311
+
1312
+ _refs.Add((int)_nodes.Add(node));
1313
+ }
1314
+
1315
+
1316
+ numEmpty_in_Maps += numEmpty_in_Map;
1317
+
1318
+ if (numEmpty_in_Map != gd.NumFreeInodes)
1319
+ {
1320
+ _headersWarning = true;
1321
+ // return S_FALSE;
1322
+ }
1323
+ }
1324
+
1325
+ if (numEmpty_in_Maps != _h.NumFreeInodes)
1326
+ {
1327
+ // some ext2 examples has incorrect value in _h.NumFreeInodes.
1328
+ // so we disable check;
1329
+ _headersWarning = true;
1330
+ }
1331
+
1332
+ if (_refs.Size() <= k_INODE_ROOT)
1333
+ return S_FALSE;
1334
+
1335
+ // printf("\n numReserveInodes = %6d, _refs.Size() = %d, numEmpty = %7d\n", numReserveInodes, _refs.Size(), (unsigned)numEmpty);
1336
+ }
1337
+ }
1338
+
1339
+ _stream = inStream; // we need stream for dir nodes
1340
+
1341
+ {
1342
+ // ---------- Read Dirs ----------
1343
+
1344
+ CByteBuffer dataBuf;
1345
+
1346
+ FOR_VECTOR (i, _refs)
1347
+ {
1348
+ const int nodeIndex = _refs[i];
1349
+ {
1350
+ if (nodeIndex < 0)
1351
+ continue;
1352
+ const CNode &node = _nodes[nodeIndex];
1353
+ if (!node.IsDir())
1354
+ continue;
1355
+ }
1356
+ RINOK(ExtractNode((unsigned)nodeIndex, dataBuf))
1357
+ if (dataBuf.Size() == 0)
1358
+ {
1359
+ // _headersError = true;
1360
+ return S_FALSE;
1361
+ }
1362
+ else
1363
+ {
1364
+ RINOK(ParseDir(dataBuf, dataBuf.Size(), i))
1365
+ }
1366
+ RINOK(CheckProgress())
1367
+ }
1368
+
1369
+ const int ref = _refs[k_INODE_ROOT];
1370
+ if (ref < 0 || _nodes[ref].ParentNode != k_INODE_ROOT)
1371
+ return S_FALSE;
1372
+ }
1373
+
1374
+ {
1375
+ // ---------- Check NumLinks and unreferenced dir nodes ----------
1376
+
1377
+ FOR_VECTOR (i, _refs)
1378
+ {
1379
+ int nodeIndex = _refs[i];
1380
+ if (nodeIndex < 0)
1381
+ continue;
1382
+ const CNode &node = _nodes[nodeIndex];
1383
+
1384
+ if (node.NumLinks != node.NumLinksCalced)
1385
+ {
1386
+ if (node.NumLinks != 1 || node.NumLinksCalced != 0
1387
+ // ) && i >= _h.FirstInode
1388
+ )
1389
+ {
1390
+ _linksError = true;
1391
+ // return S_FALSE;
1392
+ }
1393
+ }
1394
+
1395
+ if (!node.IsDir())
1396
+ continue;
1397
+
1398
+ if (node.ParentNode < 0)
1399
+ {
1400
+ if (i >= _h.FirstInode)
1401
+ return S_FALSE;
1402
+ continue;
1403
+ }
1404
+ }
1405
+ }
1406
+
1407
+ {
1408
+ // ---------- Check that there is no loops in parents list ----------
1409
+
1410
+ unsigned numNodes = _refs.Size();
1411
+ CIntArr UsedByNode(numNodes);
1412
+ {
1413
+ {
1414
+ for (unsigned i = 0; i < numNodes; i++)
1415
+ UsedByNode[i] = -1;
1416
+ }
1417
+ }
1418
+
1419
+ FOR_VECTOR (i, _refs)
1420
+ {
1421
+ {
1422
+ int nodeIndex = _refs[i];
1423
+ if (nodeIndex < 0)
1424
+ continue;
1425
+ const CNode &node = _nodes[nodeIndex];
1426
+ if (node.ParentNode < 0 // not dir
1427
+ || i == k_INODE_ROOT)
1428
+ continue;
1429
+ }
1430
+
1431
+ unsigned c = i;
1432
+
1433
+ for (;;)
1434
+ {
1435
+ const int nodeIndex = _refs[c];
1436
+ if (nodeIndex < 0)
1437
+ return S_FALSE;
1438
+ CNode &node = _nodes[nodeIndex];
1439
+
1440
+ if (UsedByNode[c] != -1)
1441
+ {
1442
+ if ((unsigned)UsedByNode[c] == i)
1443
+ return S_FALSE;
1444
+ break;
1445
+ }
1446
+
1447
+ UsedByNode[c] = (int)i;
1448
+ if (node.ParentNode < 0 || node.ParentNode == k_INODE_ROOT)
1449
+ break;
1450
+ if ((unsigned)node.ParentNode == i)
1451
+ return S_FALSE;
1452
+ c = (unsigned)node.ParentNode;
1453
+ }
1454
+ }
1455
+ }
1456
+
1457
+ {
1458
+ // ---------- Fill SymLinks data ----------
1459
+
1460
+ AString s;
1461
+ CByteBuffer data;
1462
+
1463
+ unsigned i;
1464
+ for (i = 0; i < _refs.Size(); i++)
1465
+ {
1466
+ const int nodeIndex = _refs[i];
1467
+ if (nodeIndex < 0)
1468
+ continue;
1469
+ CNode &node = _nodes[nodeIndex];
1470
+ if (!node.IsLink())
1471
+ continue;
1472
+ if (node.FileSize > ((UInt32)1 << 14))
1473
+ continue;
1474
+ if (ExtractNode((unsigned)nodeIndex, data) == S_OK && data.Size() != 0)
1475
+ {
1476
+ s.SetFrom_CalcLen((const char *)(const Byte *)data, (unsigned)data.Size());
1477
+ if (s.Len() == data.Size())
1478
+ node.SymLinkIndex = (int)_symLinks.Add(s);
1479
+ RINOK(CheckProgress())
1480
+ }
1481
+ }
1482
+
1483
+ for (i = 0; i < _dirs.Size(); i++)
1484
+ {
1485
+ _dirs[i].Sort(CompareItemsNames, (void *)&_items);
1486
+ }
1487
+
1488
+ unsigned prev = 0;
1489
+ unsigned complex = 0;
1490
+
1491
+ for (i = 0; i < _items.Size(); i++)
1492
+ {
1493
+ CItem &item = _items[i];
1494
+ const int sym = _nodes[_refs[item.Node]].SymLinkIndex;
1495
+ if (sym >= 0 && item.ParentNode >= 0)
1496
+ {
1497
+ item.SymLinkItemIndex = FindTargetItem_for_SymLink((unsigned)item.ParentNode, _symLinks[sym]);
1498
+ if (_openCallback)
1499
+ {
1500
+ complex++;
1501
+ if (complex - prev >= (1 << 10))
1502
+ {
1503
+ prev = complex;
1504
+ RINOK(CheckProgress2())
1505
+ }
1506
+ }
1507
+ }
1508
+ }
1509
+ }
1510
+
1511
+ {
1512
+ // ---------- Add items and aux folders for unreferenced files ----------
1513
+
1514
+ bool useSys = false;
1515
+ bool useUnknown = false;
1516
+
1517
+ FOR_VECTOR (i, _refs)
1518
+ {
1519
+ const int nodeIndex = _refs[i];
1520
+ if (nodeIndex < 0)
1521
+ continue;
1522
+ const CNode &node = _nodes[nodeIndex];
1523
+
1524
+ if (node.NumLinksCalced == 0 /* || i > 100 && i < 150 */) // for debug
1525
+ {
1526
+ CItem item;
1527
+ item.Node = i;
1528
+
1529
+ // we don't know how to work with k_INODE_RESIZE node (strange FileSize and Block values).
1530
+ // so we ignore it;
1531
+
1532
+ if (i == k_INODE_RESIZE)
1533
+ continue;
1534
+
1535
+ if (node.FileSize == 0)
1536
+ continue;
1537
+
1538
+ if (i < _h.FirstInode)
1539
+ {
1540
+ if (item.Node < Z7_ARRAY_SIZE(k_SysInode_Names))
1541
+ item.Name = k_SysInode_Names[item.Node];
1542
+ useSys = true;
1543
+ }
1544
+ else
1545
+ useUnknown = true;
1546
+
1547
+ if (item.Name.IsEmpty())
1548
+ item.Name.Add_UInt32(item.Node);
1549
+
1550
+ _items.Add(item);
1551
+ }
1552
+ }
1553
+
1554
+ if (useSys)
1555
+ _auxSysIndex = (int)_auxItems.Add((AString)"[SYS]");
1556
+ if (useUnknown)
1557
+ _auxUnknownIndex = (int)_auxItems.Add((AString)"[UNKNOWN]");
1558
+ }
1559
+
1560
+ return S_OK;
1561
+ }
1562
+
1563
+
1564
+ Z7_COM7F_IMF(CHandler::Open(IInStream *stream, const UInt64 *, IArchiveOpenCallback *callback))
1565
+ {
1566
+ COM_TRY_BEGIN
1567
+ {
1568
+ Close();
1569
+ HRESULT res;
1570
+ try
1571
+ {
1572
+ _openCallback = callback;
1573
+ res = Open2(stream);
1574
+ }
1575
+ catch(...)
1576
+ {
1577
+ ClearRefs();
1578
+ throw;
1579
+ }
1580
+
1581
+ if (res != S_OK)
1582
+ {
1583
+ ClearRefs();
1584
+ return res;
1585
+ }
1586
+ _stream = stream;
1587
+ }
1588
+ return S_OK;
1589
+ COM_TRY_END
1590
+ }
1591
+
1592
+
1593
+ void CHandler::ClearRefs()
1594
+ {
1595
+ _stream.Release();
1596
+ _items.Clear();
1597
+ _nodes.Clear();
1598
+ _refs.Clear();
1599
+ _auxItems.Clear();
1600
+ _symLinks.Clear();
1601
+ _dirs.Clear();
1602
+ _auxSysIndex = -1;
1603
+ _auxUnknownIndex = -1;
1604
+ }
1605
+
1606
+
1607
+ Z7_COM7F_IMF(CHandler::Close())
1608
+ {
1609
+ _totalRead = 0;
1610
+ _totalReadPrev = 0;
1611
+ _phySize = 0;
1612
+ _isArc = false;
1613
+ _headersError = false;
1614
+ _headersWarning = false;
1615
+ _linksError = false;
1616
+ _isUTF = true;
1617
+
1618
+ ClearRefs();
1619
+ return S_OK;
1620
+ }
1621
+
1622
+
1623
+ static void ChangeSeparatorsInName(char *s, unsigned num)
1624
+ {
1625
+ for (unsigned i = 0; i < num; i++)
1626
+ {
1627
+ char c = s[i];
1628
+ if (c == CHAR_PATH_SEPARATOR || c == '/')
1629
+ s[i] = '_';
1630
+ }
1631
+ }
1632
+
1633
+
1634
+ void CHandler::GetPath(unsigned index, AString &s) const
1635
+ {
1636
+ s.Empty();
1637
+
1638
+ if (index >= _items.Size())
1639
+ {
1640
+ s = _auxItems[index - _items.Size()];
1641
+ return;
1642
+ }
1643
+
1644
+ for (;;)
1645
+ {
1646
+ const CItem &item = _items[index];
1647
+ if (!s.IsEmpty())
1648
+ s.InsertAtFront(CHAR_PATH_SEPARATOR);
1649
+ s.Insert(0, item.Name);
1650
+ // 18.06
1651
+ ChangeSeparatorsInName(s.GetBuf(), item.Name.Len());
1652
+
1653
+ if (item.ParentNode == k_INODE_ROOT)
1654
+ return;
1655
+
1656
+ if (item.ParentNode < 0)
1657
+ {
1658
+ int aux = GetParentAux(item);
1659
+ if (aux < 0)
1660
+ break;
1661
+ s.InsertAtFront(CHAR_PATH_SEPARATOR);
1662
+ s.Insert(0, _auxItems[aux]);
1663
+ return;
1664
+ }
1665
+
1666
+ const CNode &node = _nodes[_refs[item.ParentNode]];
1667
+ if (node.ItemIndex < 0)
1668
+ return;
1669
+ index = (unsigned)node.ItemIndex;
1670
+
1671
+ if (s.Len() > ((UInt32)1 << 16))
1672
+ {
1673
+ s.Insert(0, "[LONG]" STRING_PATH_SEPARATOR);
1674
+ return;
1675
+ }
1676
+ }
1677
+ }
1678
+
1679
+
1680
+ bool CHandler::GetPackSize(unsigned index, UInt64 &totalPack) const
1681
+ {
1682
+ if (index >= _items.Size())
1683
+ {
1684
+ totalPack = 0;
1685
+ return false;
1686
+ }
1687
+
1688
+ const CItem &item = _items[index];
1689
+ const CNode &node = _nodes[_refs[item.Node]];
1690
+
1691
+ // if (!node.IsFlags_EXTENTS())
1692
+ {
1693
+ totalPack = (UInt64)node.NumBlocks << (node.IsFlags_HUGE() ? _h.BlockBits : 9);
1694
+ return true;
1695
+ }
1696
+
1697
+ /*
1698
+ CExtentTreeHeader eth;
1699
+ if (!eth.Parse(node.Block))
1700
+ return false;
1701
+ if (eth.NumEntries > 3)
1702
+ return false;
1703
+ if (!eth.Depth == 0)
1704
+ return false;
1705
+
1706
+ UInt64 numBlocks = 0;
1707
+ {
1708
+ for (unsigned i = 0; i < eth.NumEntries; i++)
1709
+ {
1710
+ CExtent e;
1711
+ e.Parse(node.Block + 12 + i * 12);
1712
+ // const CExtent &e = node.leafs[i];
1713
+ if (e.IsInited)
1714
+ numBlocks += e.Len;
1715
+ }
1716
+ }
1717
+
1718
+ totalPack = numBlocks << _h.BlockBits;
1719
+ return true;
1720
+ */
1721
+ }
1722
+
1723
+
1724
+ Z7_COM7F_IMF(CHandler::GetNumberOfItems(UInt32 *numItems))
1725
+ {
1726
+ *numItems = _items.Size() + _auxItems.Size();
1727
+ return S_OK;
1728
+ }
1729
+
1730
+ enum
1731
+ {
1732
+ kpidMountTime = kpidUserDefined,
1733
+ kpidLastCheckTime,
1734
+ kpidRevision,
1735
+ kpidINodeSize,
1736
+ kpidLastMount,
1737
+ kpidFeatureIncompat,
1738
+ kpidFeatureRoCompat,
1739
+ kpidWrittenKB
1740
+
1741
+ // kpidGroupSize,
1742
+
1743
+ // kpidChangeTime = kpidUserDefined + 256,
1744
+ // kpidDTime
1745
+ };
1746
+
1747
+ static const UInt32 kProps[] =
1748
+ {
1749
+ kpidPath,
1750
+ kpidIsDir,
1751
+ kpidSize,
1752
+ kpidPackSize,
1753
+ kpidPosixAttrib,
1754
+ kpidMTime,
1755
+ kpidCTime,
1756
+ kpidATime,
1757
+ // kpidChangeTime,
1758
+ // kpidDTime,
1759
+ kpidINode,
1760
+ kpidLinks,
1761
+ kpidSymLink,
1762
+ kpidCharacts,
1763
+ kpidUserId,
1764
+ kpidGroupId
1765
+ };
1766
+
1767
+
1768
+ static const CStatProp kArcProps[] =
1769
+ {
1770
+ { NULL, kpidHeadersSize, VT_BSTR },
1771
+ // { NULL, kpidFileSystem, VT_BSTR },
1772
+ // kpidMethod,
1773
+ { NULL, kpidClusterSize, VT_UI4 },
1774
+ // { "Group Size", kpidGroupSize, VT_UI8 },
1775
+ { NULL, kpidFreeSpace, VT_UI8 },
1776
+
1777
+ { NULL, kpidMTime, VT_FILETIME },
1778
+ { NULL, kpidCTime, VT_FILETIME },
1779
+ { "Mount Time", kpidMountTime, VT_FILETIME },
1780
+ { "Last Check Time", kpidLastCheckTime, VT_FILETIME },
1781
+
1782
+ { NULL, kpidHostOS, VT_BSTR},
1783
+ { "Revision", kpidRevision, VT_UI4},
1784
+ { "inode Size", kpidINodeSize, VT_UI4},
1785
+ { NULL, kpidCodePage, VT_BSTR},
1786
+ { NULL, kpidVolumeName, VT_BSTR},
1787
+ { "Last Mounted", kpidLastMount, VT_BSTR},
1788
+ { NULL, kpidId, VT_BSTR},
1789
+ { NULL, kpidCharacts, VT_BSTR },
1790
+ { "Incompatible Features", kpidFeatureIncompat, VT_BSTR },
1791
+ { "Readonly-compatible Features", kpidFeatureRoCompat, VT_BSTR },
1792
+ { "Written KiB", kpidWrittenKB, VT_UI8 }
1793
+ };
1794
+
1795
+ IMP_IInArchive_Props
1796
+ IMP_IInArchive_ArcProps_WITH_NAME
1797
+
1798
+ static void StringToProp(bool isUTF, const char *s, unsigned size, NCOM::CPropVariant &prop)
1799
+ {
1800
+ UString u;
1801
+ AString a;
1802
+ a.SetFrom_CalcLen(s, size);
1803
+ if (!isUTF || !ConvertUTF8ToUnicode(a, u))
1804
+ MultiByteToUnicodeString2(u, a);
1805
+ prop = u;
1806
+ }
1807
+
1808
+ static void UnixTimeToProp(UInt32 val, NCOM::CPropVariant &prop)
1809
+ {
1810
+ if (val != 0)
1811
+ PropVariant_SetFrom_UnixTime(prop, val);
1812
+ }
1813
+
1814
+ Z7_COM7F_IMF(CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value))
1815
+ {
1816
+ COM_TRY_BEGIN
1817
+
1818
+ NCOM::CPropVariant prop;
1819
+
1820
+ switch (propID)
1821
+ {
1822
+ /*
1823
+ case kpidFileSystem:
1824
+ {
1825
+ AString res = "Ext4";
1826
+ prop = res;
1827
+ break;
1828
+ }
1829
+ */
1830
+
1831
+ case kpidIsTree: prop = true; break;
1832
+ // case kpidIsAux: prop = true; break;
1833
+ case kpidINode: prop = true; break;
1834
+
1835
+ case kpidClusterSize: prop = (UInt32)1 << _h.BlockBits; break;
1836
+ // case kpidGroupSize: prop = (UInt64)_h.BlocksPerGroup << _h.BlockBits; break;
1837
+
1838
+ case kpidFreeSpace: prop = (UInt64)_h.NumFreeBlocks << _h.BlockBits; break;
1839
+
1840
+ case kpidCTime: UnixTimeToProp(_h.CTime, prop); break;
1841
+ case kpidMTime: UnixTimeToProp(_h.WriteTime, prop); break;
1842
+ case kpidMountTime: UnixTimeToProp(_h.MountTime, prop); break;
1843
+ case kpidLastCheckTime: UnixTimeToProp(_h.LastCheckTime, prop); break;
1844
+
1845
+ case kpidHostOS:
1846
+ {
1847
+ TYPE_TO_PROP(kHostOS, _h.CreatorOs, prop);
1848
+ break;
1849
+ }
1850
+
1851
+ case kpidRevision: prop = _h.RevLevel; break;
1852
+
1853
+ case kpidINodeSize: prop = (UInt32)_h.InodeSize; break;
1854
+
1855
+ case kpidId:
1856
+ {
1857
+ if (!IsEmptyData(_h.Uuid, sizeof(_h.Uuid)))
1858
+ {
1859
+ char s[sizeof(_h.Uuid) * 2 + 2];
1860
+ ConvertDataToHex_Lower(s, _h.Uuid, sizeof(_h.Uuid));
1861
+ prop = s;
1862
+ }
1863
+ break;
1864
+ }
1865
+
1866
+ case kpidCodePage: if (_isUTF) prop = "UTF-8"; break;
1867
+
1868
+ case kpidShortComment:
1869
+ case kpidVolumeName:
1870
+ StringToProp(_isUTF, _h.VolName, sizeof(_h.VolName), prop); break;
1871
+
1872
+ case kpidLastMount: StringToProp(_isUTF, _h.LastMount, sizeof(_h.LastMount), prop); break;
1873
+
1874
+ case kpidCharacts: FLAGS_TO_PROP(g_FeatureCompat_Flags, _h.FeatureCompat, prop); break;
1875
+ case kpidFeatureIncompat: FLAGS_TO_PROP(g_FeatureIncompat_Flags, _h.FeatureIncompat, prop); break;
1876
+ case kpidFeatureRoCompat: FLAGS_TO_PROP(g_FeatureRoCompat_Flags, _h.FeatureRoCompat, prop); break;
1877
+ case kpidWrittenKB: if (_h.WrittenKB != 0) prop = _h.WrittenKB; break;
1878
+
1879
+ case kpidPhySize: prop = _phySize; break;
1880
+
1881
+ case kpidErrorFlags:
1882
+ {
1883
+ UInt32 v = 0;
1884
+ if (!_isArc) v |= kpv_ErrorFlags_IsNotArc;
1885
+ if (_linksError) v |= kpv_ErrorFlags_HeadersError;
1886
+ if (_headersError) v |= kpv_ErrorFlags_HeadersError;
1887
+ if (!_stream && v == 0 && _isArc)
1888
+ v = kpv_ErrorFlags_HeadersError;
1889
+ if (v != 0)
1890
+ prop = v;
1891
+ break;
1892
+ }
1893
+
1894
+ case kpidWarningFlags:
1895
+ {
1896
+ UInt32 v = 0;
1897
+ if (_headersWarning) v |= kpv_ErrorFlags_HeadersError;
1898
+ if (v != 0)
1899
+ prop = v;
1900
+ break;
1901
+ }
1902
+ }
1903
+
1904
+ prop.Detach(value);
1905
+ return S_OK;
1906
+
1907
+ COM_TRY_END
1908
+ }
1909
+
1910
+
1911
+ /*
1912
+ static const Byte kRawProps[] =
1913
+ {
1914
+ // kpidSha1,
1915
+ };
1916
+ */
1917
+
1918
+ Z7_COM7F_IMF(CHandler::GetNumRawProps(UInt32 *numProps))
1919
+ {
1920
+ // *numProps = Z7_ARRAY_SIZE(kRawProps);
1921
+ *numProps = 0;
1922
+ return S_OK;
1923
+ }
1924
+
1925
+ Z7_COM7F_IMF(CHandler::GetRawPropInfo(UInt32 /* index */, BSTR *name, PROPID *propID))
1926
+ {
1927
+ // *propID = kRawProps[index];
1928
+ *propID = 0;
1929
+ *name = NULL;
1930
+ return S_OK;
1931
+ }
1932
+
1933
+ Z7_COM7F_IMF(CHandler::GetParent(UInt32 index, UInt32 *parent, UInt32 *parentType))
1934
+ {
1935
+ *parentType = NParentType::kDir;
1936
+ *parent = (UInt32)(Int32)-1;
1937
+
1938
+ if (index >= _items.Size())
1939
+ return S_OK;
1940
+
1941
+ const CItem &item = _items[index];
1942
+
1943
+ if (item.ParentNode < 0)
1944
+ {
1945
+ const int aux = GetParentAux(item);
1946
+ if (aux >= 0)
1947
+ *parent = _items.Size() + (unsigned)aux;
1948
+ }
1949
+ else
1950
+ {
1951
+ const int itemIndex = _nodes[_refs[item.ParentNode]].ItemIndex;
1952
+ if (itemIndex >= 0)
1953
+ *parent = (unsigned)itemIndex;
1954
+ }
1955
+
1956
+ return S_OK;
1957
+ }
1958
+
1959
+
1960
+ Z7_COM7F_IMF(CHandler::GetRawProp(UInt32 index, PROPID propID, const void **data, UInt32 *dataSize, UInt32 *propType))
1961
+ {
1962
+ *data = NULL;
1963
+ *dataSize = 0;
1964
+ *propType = 0;
1965
+
1966
+ if (propID == kpidName && _isUTF)
1967
+ {
1968
+ if (index < _items.Size())
1969
+ {
1970
+ const AString &s = _items[index].Name;
1971
+ if (!s.IsEmpty())
1972
+ {
1973
+ *data = (void *)(const char *)s;
1974
+ *dataSize = (UInt32)s.Len() + 1;
1975
+ *propType = NPropDataType::kUtf8z;
1976
+ }
1977
+ return S_OK;
1978
+ }
1979
+ else
1980
+ {
1981
+ const AString &s = _auxItems[index - _items.Size()];
1982
+ {
1983
+ *data = (void *)(const char *)s;
1984
+ *dataSize = (UInt32)s.Len() + 1;
1985
+ *propType = NPropDataType::kUtf8z;
1986
+ }
1987
+ return S_OK;
1988
+ }
1989
+ }
1990
+
1991
+ return S_OK;
1992
+ }
1993
+
1994
+
1995
+ static void ExtTimeToProp(const CExtTime &t, NCOM::CPropVariant &prop)
1996
+ {
1997
+ if (t.Val == 0 && t.Extra == 0)
1998
+ return;
1999
+
2000
+ FILETIME ft;
2001
+ unsigned low100ns = 0;
2002
+ // if (t.Extra != 0)
2003
+ {
2004
+ // 1901-2446 :
2005
+ Int64 v = (Int64)(Int32)t.Val;
2006
+ v += (UInt64)(t.Extra & 3) << 32; // 2 low bits are offset for main timestamp
2007
+ UInt64 ft64 = NTime::UnixTime64_To_FileTime64(v);
2008
+ const UInt32 ns = (t.Extra >> 2);
2009
+ if (ns < 1000000000)
2010
+ {
2011
+ ft64 += ns / 100;
2012
+ low100ns = (unsigned)(ns % 100);
2013
+ }
2014
+ ft.dwLowDateTime = (DWORD)ft64;
2015
+ ft.dwHighDateTime = (DWORD)(ft64 >> 32);
2016
+ }
2017
+ /*
2018
+ else
2019
+ {
2020
+ // 1901-2038 : that code is good for ext4 and compatibility with Extra
2021
+ NTime::UnixTime64ToFileTime((Int32)t.Val, ft); // for
2022
+
2023
+ // 1970-2106 : that code is good if timestamp is used as unsigned 32-bit
2024
+ // are there such systems?
2025
+ // NTime::UnixTimeToFileTime(t.Val, ft); // for
2026
+ }
2027
+ */
2028
+ prop.SetAsTimeFrom_FT_Prec_Ns100(ft, k_PropVar_TimePrec_1ns, low100ns);
2029
+ }
2030
+
2031
+
2032
+ Z7_COM7F_IMF(CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value))
2033
+ {
2034
+ COM_TRY_BEGIN
2035
+ NCOM::CPropVariant prop;
2036
+
2037
+ if (index >= _items.Size())
2038
+ {
2039
+ switch (propID)
2040
+ {
2041
+ case kpidPath:
2042
+ case kpidName:
2043
+ {
2044
+ prop = _auxItems[index - _items.Size()];
2045
+ break;
2046
+ }
2047
+ case kpidIsDir: prop = true; break;
2048
+ // case kpidIsAux: prop = true; break;
2049
+ }
2050
+ }
2051
+ else
2052
+ {
2053
+
2054
+ const CItem &item = _items[index];
2055
+ const CNode &node = _nodes[_refs[item.Node]];
2056
+ bool isDir = node.IsDir();
2057
+
2058
+ switch (propID)
2059
+ {
2060
+ case kpidPath:
2061
+ {
2062
+ UString u;
2063
+ {
2064
+ AString s;
2065
+ GetPath(index, s);
2066
+ if (!_isUTF || !ConvertUTF8ToUnicode(s, u))
2067
+ MultiByteToUnicodeString2(u, s);
2068
+ }
2069
+ prop = u;
2070
+ break;
2071
+ }
2072
+
2073
+ case kpidName:
2074
+ {
2075
+ {
2076
+ UString u;
2077
+ {
2078
+ if (!_isUTF || !ConvertUTF8ToUnicode(item.Name, u))
2079
+ MultiByteToUnicodeString2(u, item.Name);
2080
+ }
2081
+ prop = u;
2082
+ }
2083
+ break;
2084
+ }
2085
+
2086
+ case kpidIsDir:
2087
+ {
2088
+ bool isDir2 = isDir;
2089
+ if (item.SymLinkItemIndex >= 0)
2090
+ isDir2 = _nodes[_refs[_items[item.SymLinkItemIndex].Node]].IsDir();
2091
+ prop = isDir2;
2092
+ break;
2093
+ }
2094
+
2095
+ case kpidSize: if (!isDir) prop = node.FileSize; break;
2096
+
2097
+ case kpidPackSize:
2098
+ if (!isDir)
2099
+ {
2100
+ UInt64 size;
2101
+ if (GetPackSize(index, size))
2102
+ prop = size;
2103
+ }
2104
+ break;
2105
+
2106
+ case kpidPosixAttrib:
2107
+ {
2108
+ /*
2109
+ if (node.Type != 0 && node.Type < Z7_ARRAY_SIZE(k_TypeToMode))
2110
+ prop = (UInt32)(node.Mode & 0xFFF) | k_TypeToMode[node.Type];
2111
+ */
2112
+ prop = (UInt32)(node.Mode);
2113
+ break;
2114
+ }
2115
+
2116
+ case kpidMTime: ExtTimeToProp(node.MTime, prop); break;
2117
+ case kpidCTime: ExtTimeToProp(node.CTime, prop); break;
2118
+ case kpidATime: ExtTimeToProp(node.ATime, prop); break;
2119
+ // case kpidDTime: ExtTimeToProp(node.DTime, prop); break;
2120
+ case kpidChangeTime: ExtTimeToProp(node.ChangeTime, prop); break;
2121
+ case kpidUserId: prop = (UInt32)node.Uid; break;
2122
+ case kpidGroupId: prop = (UInt32)node.Gid; break;
2123
+ case kpidLinks: prop = node.NumLinks; break;
2124
+ case kpidINode: prop = (UInt32)item.Node; break;
2125
+ case kpidStreamId: if (!isDir) prop = (UInt32)item.Node; break;
2126
+ case kpidCharacts: FLAGS_TO_PROP(g_NodeFlags, (UInt32)node.Flags, prop); break;
2127
+
2128
+ case kpidSymLink:
2129
+ {
2130
+ if (node.SymLinkIndex >= 0)
2131
+ {
2132
+ UString u;
2133
+ {
2134
+ const AString &s = _symLinks[node.SymLinkIndex];
2135
+ if (!_isUTF || !ConvertUTF8ToUnicode(s, u))
2136
+ MultiByteToUnicodeString2(u, s);
2137
+ }
2138
+ prop = u;
2139
+ }
2140
+ break;
2141
+ }
2142
+ }
2143
+
2144
+ }
2145
+
2146
+ prop.Detach(value);
2147
+ return S_OK;
2148
+ COM_TRY_END
2149
+ }
2150
+
2151
+
2152
+ Z7_CLASS_IMP_IInStream(CClusterInStream2
2153
+ )
2154
+ UInt64 _virtPos;
2155
+ UInt64 _physPos;
2156
+ UInt32 _curRem;
2157
+ public:
2158
+ unsigned BlockBits;
2159
+ UInt64 Size;
2160
+ CMyComPtr<IInStream> Stream;
2161
+ CRecordVector<UInt32> Vector;
2162
+
2163
+ HRESULT SeekToPhys() { return InStream_SeekSet(Stream, _physPos); }
2164
+
2165
+ HRESULT InitAndSeek()
2166
+ {
2167
+ _curRem = 0;
2168
+ _virtPos = 0;
2169
+ _physPos = 0;
2170
+ if (Vector.Size())
2171
+ {
2172
+ _physPos = (UInt64)Vector[0] << BlockBits;
2173
+ return SeekToPhys();
2174
+ }
2175
+ return S_OK;
2176
+ }
2177
+ };
2178
+
2179
+
2180
+ Z7_COM7F_IMF(CClusterInStream2::Read(void *data, UInt32 size, UInt32 *processedSize))
2181
+ {
2182
+ if (processedSize)
2183
+ *processedSize = 0;
2184
+ if (_virtPos >= Size)
2185
+ return S_OK;
2186
+ {
2187
+ UInt64 rem = Size - _virtPos;
2188
+ if (size > rem)
2189
+ size = (UInt32)rem;
2190
+ }
2191
+ if (size == 0)
2192
+ return S_OK;
2193
+
2194
+ if (_curRem == 0)
2195
+ {
2196
+ const UInt32 blockSize = (UInt32)1 << BlockBits;
2197
+ const UInt32 virtBlock = (UInt32)(_virtPos >> BlockBits);
2198
+ const UInt32 offsetInBlock = (UInt32)_virtPos & (blockSize - 1);
2199
+ const UInt32 phyBlock = Vector[virtBlock];
2200
+
2201
+ if (phyBlock == 0)
2202
+ {
2203
+ UInt32 cur = blockSize - offsetInBlock;
2204
+ if (cur > size)
2205
+ cur = size;
2206
+ memset(data, 0, cur);
2207
+ _virtPos += cur;
2208
+ if (processedSize)
2209
+ *processedSize = cur;
2210
+ return S_OK;
2211
+ }
2212
+
2213
+ UInt64 newPos = ((UInt64)phyBlock << BlockBits) + offsetInBlock;
2214
+ if (newPos != _physPos)
2215
+ {
2216
+ _physPos = newPos;
2217
+ RINOK(SeekToPhys())
2218
+ }
2219
+
2220
+ _curRem = blockSize - offsetInBlock;
2221
+
2222
+ for (unsigned i = 1; i < 64 && (virtBlock + i) < (UInt32)Vector.Size() && phyBlock + i == Vector[virtBlock + i]; i++)
2223
+ _curRem += (UInt32)1 << BlockBits;
2224
+ }
2225
+
2226
+ if (size > _curRem)
2227
+ size = _curRem;
2228
+ HRESULT res = Stream->Read(data, size, &size);
2229
+ if (processedSize)
2230
+ *processedSize = size;
2231
+ _physPos += size;
2232
+ _virtPos += size;
2233
+ _curRem -= size;
2234
+ return res;
2235
+ }
2236
+
2237
+ Z7_COM7F_IMF(CClusterInStream2::Seek(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition))
2238
+ {
2239
+ switch (seekOrigin)
2240
+ {
2241
+ case STREAM_SEEK_SET: break;
2242
+ case STREAM_SEEK_CUR: offset += _virtPos; break;
2243
+ case STREAM_SEEK_END: offset += Size; break;
2244
+ default: return STG_E_INVALIDFUNCTION;
2245
+ }
2246
+ if (offset < 0)
2247
+ return HRESULT_WIN32_ERROR_NEGATIVE_SEEK;
2248
+ if (_virtPos != (UInt64)offset)
2249
+ _curRem = 0;
2250
+ _virtPos = (UInt64)offset;
2251
+ if (newPosition)
2252
+ *newPosition = (UInt64)offset;
2253
+ return S_OK;
2254
+ }
2255
+
2256
+
2257
+ Z7_CLASS_IMP_IInStream(
2258
+ CExtInStream
2259
+ )
2260
+ UInt64 _virtPos;
2261
+ UInt64 _phyPos;
2262
+ public:
2263
+ unsigned BlockBits;
2264
+ UInt64 Size;
2265
+ CMyComPtr<IInStream> Stream;
2266
+ CRecordVector<CExtent> Extents;
2267
+
2268
+ HRESULT StartSeek()
2269
+ {
2270
+ _virtPos = 0;
2271
+ _phyPos = 0;
2272
+ return InStream_SeekSet(Stream, _phyPos);
2273
+ }
2274
+ };
2275
+
2276
+ Z7_COM7F_IMF(CExtInStream::Read(void *data, UInt32 size, UInt32 *processedSize))
2277
+ {
2278
+ if (processedSize)
2279
+ *processedSize = 0;
2280
+ if (_virtPos >= Size)
2281
+ return S_OK;
2282
+ {
2283
+ UInt64 rem = Size - _virtPos;
2284
+ if (size > rem)
2285
+ size = (UInt32)rem;
2286
+ }
2287
+ if (size == 0)
2288
+ return S_OK;
2289
+
2290
+ UInt32 blockIndex = (UInt32)(_virtPos >> BlockBits);
2291
+
2292
+ unsigned left = 0, right = Extents.Size();
2293
+ for (;;)
2294
+ {
2295
+ unsigned mid = (left + right) / 2;
2296
+ if (mid == left)
2297
+ break;
2298
+ if (blockIndex < Extents[mid].VirtBlock)
2299
+ right = mid;
2300
+ else
2301
+ left = mid;
2302
+ }
2303
+
2304
+ {
2305
+ const CExtent &extent = Extents[left];
2306
+ if (blockIndex < extent.VirtBlock)
2307
+ return E_FAIL;
2308
+ UInt32 bo = blockIndex - extent.VirtBlock;
2309
+ if (bo >= extent.Len)
2310
+ return E_FAIL;
2311
+
2312
+ UInt32 offset = ((UInt32)_virtPos & (((UInt32)1 << BlockBits) - 1));
2313
+ UInt32 remBlocks = extent.Len - bo;
2314
+ UInt64 remBytes = ((UInt64)remBlocks << BlockBits);
2315
+ remBytes -= offset;
2316
+
2317
+ if (size > remBytes)
2318
+ size = (UInt32)remBytes;
2319
+
2320
+ if (!extent.IsInited)
2321
+ {
2322
+ memset(data, 0, size);
2323
+ _virtPos += size;
2324
+ if (processedSize)
2325
+ *processedSize = size;
2326
+ return S_OK;
2327
+ }
2328
+
2329
+ const UInt64 phyBlock = extent.PhyStart + bo;
2330
+ const UInt64 phy = (phyBlock << BlockBits) + offset;
2331
+
2332
+ if (phy != _phyPos)
2333
+ {
2334
+ RINOK(InStream_SeekSet(Stream, phy))
2335
+ _phyPos = phy;
2336
+ }
2337
+
2338
+ UInt32 realProcessSize = 0;
2339
+
2340
+ const HRESULT res = Stream->Read(data, size, &realProcessSize);
2341
+
2342
+ _phyPos += realProcessSize;
2343
+ _virtPos += realProcessSize;
2344
+ if (processedSize)
2345
+ *processedSize = realProcessSize;
2346
+ return res;
2347
+ }
2348
+ }
2349
+
2350
+
2351
+ Z7_COM7F_IMF(CExtInStream::Seek(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition))
2352
+ {
2353
+ switch (seekOrigin)
2354
+ {
2355
+ case STREAM_SEEK_SET: break;
2356
+ case STREAM_SEEK_CUR: offset += _virtPos; break;
2357
+ case STREAM_SEEK_END: offset += Size; break;
2358
+ default: return STG_E_INVALIDFUNCTION;
2359
+ }
2360
+ if (offset < 0)
2361
+ return HRESULT_WIN32_ERROR_NEGATIVE_SEEK;
2362
+ _virtPos = (UInt64)offset;
2363
+ if (newPosition)
2364
+ *newPosition = (UInt64)offset;
2365
+ return S_OK;
2366
+ }
2367
+
2368
+
2369
+
2370
+ HRESULT CHandler::FillFileBlocks2(UInt32 block, unsigned level, unsigned numBlocks, CRecordVector<UInt32> &blocks)
2371
+ {
2372
+ const size_t blockSize = (size_t)1 << _h.BlockBits;
2373
+ CByteBuffer &tempBuf = _tempBufs[level];
2374
+ tempBuf.Alloc(blockSize);
2375
+
2376
+ PRF2(printf("\n level = %d, block = %7d", level, (unsigned)block));
2377
+
2378
+ RINOK(SeekAndRead(_stream, block, tempBuf, blockSize))
2379
+
2380
+ const Byte *p = tempBuf;
2381
+ size_t num = (size_t)1 << (_h.BlockBits - 2);
2382
+
2383
+ for (size_t i = 0; i < num; i++)
2384
+ {
2385
+ if (blocks.Size() == numBlocks)
2386
+ break;
2387
+ UInt32 val = GetUi32(p + 4 * i);
2388
+ if (val >= _h.NumBlocks)
2389
+ return S_FALSE;
2390
+
2391
+ if (level != 0)
2392
+ {
2393
+ if (val == 0)
2394
+ {
2395
+ /*
2396
+ size_t num = (size_t)1 << ((_h.BlockBits - 2) * (level));
2397
+ PRF2(printf("\n num empty = %3d", (unsigned)num));
2398
+ for (size_t k = 0; k < num; k++)
2399
+ {
2400
+ blocks.Add(0);
2401
+ if (blocks.Size() == numBlocks)
2402
+ return S_OK;
2403
+ }
2404
+ continue;
2405
+ */
2406
+ return S_FALSE;
2407
+ }
2408
+
2409
+ RINOK(FillFileBlocks2(val, level - 1, numBlocks, blocks))
2410
+ continue;
2411
+ }
2412
+
2413
+ PRF2(printf("\n i = %3d, blocks.Size() = %6d, block = %5d ", i, blocks.Size(), (unsigned)val));
2414
+
2415
+ PRF(printf("\n i = %3d, start = %5d ", (unsigned)i, (unsigned)val));
2416
+
2417
+ blocks.Add(val);
2418
+ }
2419
+
2420
+ return S_OK;
2421
+ }
2422
+
2423
+
2424
+ static const unsigned kNumDirectNodeBlocks = 12;
2425
+
2426
+ HRESULT CHandler::FillFileBlocks(const Byte *p, unsigned numBlocks, CRecordVector<UInt32> &blocks)
2427
+ {
2428
+ // ext2 supports zero blocks (blockIndex == 0).
2429
+
2430
+ blocks.ClearAndReserve(numBlocks);
2431
+
2432
+ for (unsigned i = 0; i < kNumDirectNodeBlocks; i++)
2433
+ {
2434
+ if (i == numBlocks)
2435
+ return S_OK;
2436
+ UInt32 val = GetUi32(p + 4 * i);
2437
+ if (val >= _h.NumBlocks)
2438
+ return S_FALSE;
2439
+ blocks.Add(val);
2440
+ }
2441
+
2442
+ for (unsigned level = 0; level < 3; level++)
2443
+ {
2444
+ if (blocks.Size() == numBlocks)
2445
+ break;
2446
+ UInt32 val = GetUi32(p + 4 * (kNumDirectNodeBlocks + level));
2447
+ if (val >= _h.NumBlocks)
2448
+ return S_FALSE;
2449
+
2450
+ if (val == 0)
2451
+ {
2452
+ /*
2453
+ size_t num = (size_t)1 << ((_h.BlockBits - 2) * (level + 1));
2454
+ for (size_t k = 0; k < num; k++)
2455
+ {
2456
+ blocks.Add(0);
2457
+ if (blocks.Size() == numBlocks)
2458
+ return S_OK;
2459
+ }
2460
+ continue;
2461
+ */
2462
+ return S_FALSE;
2463
+ }
2464
+
2465
+ RINOK(FillFileBlocks2(val, level, numBlocks, blocks))
2466
+ }
2467
+
2468
+ return S_OK;
2469
+ }
2470
+
2471
+
2472
+ static void AddSkipExtents(CRecordVector<CExtent> &extents, UInt32 virtBlock, UInt32 numBlocks)
2473
+ {
2474
+ while (numBlocks != 0)
2475
+ {
2476
+ UInt32 len = numBlocks;
2477
+ const UInt32 kLenMax = (UInt32)1 << 15;
2478
+ if (len > kLenMax)
2479
+ len = kLenMax;
2480
+ CExtent e;
2481
+ e.VirtBlock = virtBlock;
2482
+ e.Len = (UInt16)len;
2483
+ e.IsInited = false;
2484
+ e.PhyStart = 0;
2485
+ extents.Add(e);
2486
+ virtBlock += len;
2487
+ numBlocks -= len;
2488
+ }
2489
+ }
2490
+
2491
+ static bool UpdateExtents(CRecordVector<CExtent> &extents, UInt32 block)
2492
+ {
2493
+ if (extents.IsEmpty())
2494
+ {
2495
+ if (block == 0)
2496
+ return true;
2497
+ AddSkipExtents(extents, 0, block);
2498
+ return true;
2499
+ }
2500
+
2501
+ const CExtent &prev = extents.Back();
2502
+ if (block < prev.VirtBlock)
2503
+ return false;
2504
+ UInt32 prevEnd = prev.GetVirtEnd();
2505
+ if (block == prevEnd)
2506
+ return true;
2507
+ AddSkipExtents(extents, prevEnd, block - prevEnd);
2508
+ return true;
2509
+ }
2510
+
2511
+
2512
+ HRESULT CHandler::FillExtents(const Byte *p, size_t size, CRecordVector<CExtent> &extents, int parentDepth)
2513
+ {
2514
+ CExtentTreeHeader eth;
2515
+ if (!eth.Parse(p))
2516
+ return S_FALSE;
2517
+
2518
+ if (parentDepth >= 0 && eth.Depth != parentDepth - 1) // (eth.Depth >= parentDepth)
2519
+ return S_FALSE;
2520
+
2521
+ if (12 + 12 * (size_t)eth.NumEntries > size)
2522
+ return S_FALSE;
2523
+
2524
+ if (eth.Depth >= kNumTreeLevelsMax)
2525
+ return S_FALSE;
2526
+
2527
+ if (eth.Depth == 0)
2528
+ {
2529
+ for (unsigned i = 0; i < eth.NumEntries; i++)
2530
+ {
2531
+ CExtent e;
2532
+ e.Parse(p + 12 + i * 12);
2533
+ if (e.PhyStart == 0
2534
+ || e.PhyStart > _h.NumBlocks
2535
+ || e.PhyStart + e.Len > _h.NumBlocks
2536
+ || !e.IsLenOK())
2537
+ return S_FALSE;
2538
+ if (!UpdateExtents(extents, e.VirtBlock))
2539
+ return S_FALSE;
2540
+ extents.Add(e);
2541
+ }
2542
+
2543
+ return S_OK;
2544
+ }
2545
+
2546
+ const size_t blockSize = (size_t)1 << _h.BlockBits;
2547
+ CByteBuffer &tempBuf = _tempBufs[eth.Depth];
2548
+ tempBuf.Alloc(blockSize);
2549
+
2550
+ for (unsigned i = 0; i < eth.NumEntries; i++)
2551
+ {
2552
+ CExtentIndexNode e;
2553
+ e.Parse(p + 12 + i * 12);
2554
+
2555
+ if (e.PhyLeaf == 0 || e.PhyLeaf >= _h.NumBlocks)
2556
+ return S_FALSE;
2557
+
2558
+ if (!UpdateExtents(extents, e.VirtBlock))
2559
+ return S_FALSE;
2560
+
2561
+ RINOK(SeekAndRead(_stream, e.PhyLeaf, tempBuf, blockSize))
2562
+ RINOK(FillExtents(tempBuf, blockSize, extents, eth.Depth))
2563
+ }
2564
+
2565
+ return S_OK;
2566
+ }
2567
+
2568
+
2569
+ HRESULT CHandler::GetStream_Node(unsigned nodeIndex, ISequentialInStream **stream)
2570
+ {
2571
+ COM_TRY_BEGIN
2572
+
2573
+ *stream = NULL;
2574
+
2575
+ const CNode &node = _nodes[nodeIndex];
2576
+
2577
+ if (!node.IsFlags_EXTENTS())
2578
+ {
2579
+ // maybe sparse file can have (node.NumBlocks == 0) ?
2580
+
2581
+ /* The following code doesn't work correctly for some CentOS images,
2582
+ where there are nodes with inline data and (node.NumBlocks != 0).
2583
+ If you know better way to detect inline data, please notify 7-Zip developers. */
2584
+
2585
+ if (node.NumBlocks == 0 && node.FileSize < kNodeBlockFieldSize)
2586
+ {
2587
+ Create_BufInStream_WithNewBuffer(node.Block, (size_t)node.FileSize, stream);
2588
+ return S_OK;
2589
+ }
2590
+ }
2591
+
2592
+ if (node.FileSize >= ((UInt64)1 << 63))
2593
+ return S_FALSE;
2594
+
2595
+ CMyComPtr<IInStream> streamTemp;
2596
+
2597
+ const UInt64 numBlocks64 = (node.FileSize + (UInt64)(((UInt32)1 << _h.BlockBits) - 1)) >> _h.BlockBits;
2598
+
2599
+ if (node.IsFlags_EXTENTS())
2600
+ {
2601
+ if ((UInt32)numBlocks64 != numBlocks64)
2602
+ return S_FALSE;
2603
+
2604
+ CExtInStream *streamSpec = new CExtInStream;
2605
+ streamTemp = streamSpec;
2606
+
2607
+ streamSpec->BlockBits = _h.BlockBits;
2608
+ streamSpec->Size = node.FileSize;
2609
+ streamSpec->Stream = _stream;
2610
+
2611
+ RINOK(FillExtents(node.Block, kNodeBlockFieldSize, streamSpec->Extents, -1))
2612
+
2613
+ UInt32 end = 0;
2614
+ if (!streamSpec->Extents.IsEmpty())
2615
+ end = streamSpec->Extents.Back().GetVirtEnd();
2616
+ if (end < numBlocks64)
2617
+ {
2618
+ AddSkipExtents(streamSpec->Extents, end, (UInt32)(numBlocks64 - end));
2619
+ // return S_FALSE;
2620
+ }
2621
+
2622
+ RINOK(streamSpec->StartSeek())
2623
+ }
2624
+ else
2625
+ {
2626
+ {
2627
+ UInt64 numBlocks2 = numBlocks64;
2628
+
2629
+ if (numBlocks64 > kNumDirectNodeBlocks)
2630
+ {
2631
+ UInt64 rem = numBlocks64 - kNumDirectNodeBlocks;
2632
+ const unsigned refBits = (_h.BlockBits - 2);
2633
+ const size_t numRefsInBlocks = (size_t)1 << refBits;
2634
+ numBlocks2++;
2635
+ if (rem > numRefsInBlocks)
2636
+ {
2637
+ numBlocks2++;
2638
+ const UInt64 numL2 = (rem - 1) >> refBits;
2639
+ numBlocks2 += numL2;
2640
+ if (numL2 > numRefsInBlocks)
2641
+ {
2642
+ numBlocks2++;
2643
+ numBlocks2 += (numL2 - 1) >> refBits;
2644
+ }
2645
+ }
2646
+ }
2647
+
2648
+ const unsigned specBits = (node.IsFlags_HUGE() ? 0 : _h.BlockBits - 9);
2649
+ const UInt32 specMask = ((UInt32)1 << specBits) - 1;
2650
+ if ((node.NumBlocks & specMask) != 0)
2651
+ return S_FALSE;
2652
+ const UInt64 numBlocks64_from_header = node.NumBlocks >> specBits;
2653
+ if (numBlocks64_from_header < numBlocks2)
2654
+ {
2655
+ // why (numBlocks64_from_header > numBlocks2) in some cases?
2656
+ // return S_FALSE;
2657
+ }
2658
+ }
2659
+
2660
+ unsigned numBlocks = (unsigned)numBlocks64;
2661
+ if (numBlocks != numBlocks64)
2662
+ return S_FALSE;
2663
+
2664
+ CClusterInStream2 *streamSpec = new CClusterInStream2;
2665
+ streamTemp = streamSpec;
2666
+
2667
+ streamSpec->BlockBits = _h.BlockBits;
2668
+ streamSpec->Size = node.FileSize;
2669
+ streamSpec->Stream = _stream;
2670
+
2671
+ RINOK(FillFileBlocks(node.Block, numBlocks, streamSpec->Vector))
2672
+ streamSpec->InitAndSeek();
2673
+ }
2674
+
2675
+ *stream = streamTemp.Detach();
2676
+
2677
+ return S_OK;
2678
+
2679
+ COM_TRY_END
2680
+ }
2681
+
2682
+
2683
+ HRESULT CHandler::ExtractNode(unsigned nodeIndex, CByteBuffer &data)
2684
+ {
2685
+ data.Free();
2686
+ const CNode &node = _nodes[nodeIndex];
2687
+ size_t size = (size_t)node.FileSize;
2688
+ if (size != node.FileSize)
2689
+ return S_FALSE;
2690
+ CMyComPtr<ISequentialInStream> inSeqStream;
2691
+ RINOK(GetStream_Node(nodeIndex, &inSeqStream))
2692
+ if (!inSeqStream)
2693
+ return S_FALSE;
2694
+ data.Alloc(size);
2695
+ _totalRead += size;
2696
+ return ReadStream_FALSE(inSeqStream, data, size);
2697
+ }
2698
+
2699
+
2700
+ Z7_COM7F_IMF(CHandler::Extract(const UInt32 *indices, UInt32 numItems,
2701
+ Int32 testMode, IArchiveExtractCallback *extractCallback))
2702
+ {
2703
+ COM_TRY_BEGIN
2704
+ const bool allFilesMode = (numItems == (UInt32)(Int32)-1);
2705
+ if (allFilesMode)
2706
+ numItems = _items.Size() + _auxItems.Size();
2707
+ if (numItems == 0)
2708
+ return S_OK;
2709
+
2710
+ UInt64 totalSize = 0;
2711
+ UInt32 i;
2712
+
2713
+ for (i = 0; i < numItems; i++)
2714
+ {
2715
+ const UInt32 index = allFilesMode ? i : indices[i];
2716
+ if (index >= _items.Size())
2717
+ continue;
2718
+ const CItem &item = _items[index];
2719
+ const CNode &node = _nodes[_refs[item.Node]];
2720
+ if (!node.IsDir())
2721
+ totalSize += node.FileSize;
2722
+ }
2723
+
2724
+ RINOK(extractCallback->SetTotal(totalSize))
2725
+
2726
+ UInt64 totalPackSize;
2727
+ totalSize = totalPackSize = 0;
2728
+
2729
+ CMyComPtr2_Create<ICompressProgressInfo, CLocalProgress> lps;
2730
+ lps->Init(extractCallback, false);
2731
+ CMyComPtr2_Create<ICompressCoder, NCompress::CCopyCoder> copyCoder;
2732
+
2733
+ for (i = 0;; i++)
2734
+ {
2735
+ lps->InSize = totalPackSize;
2736
+ lps->OutSize = totalSize;
2737
+ RINOK(lps->SetCur())
2738
+ if (i >= numItems)
2739
+ break;
2740
+
2741
+ int opRes;
2742
+ {
2743
+ CMyComPtr<ISequentialOutStream> outStream;
2744
+ const Int32 askMode = testMode ?
2745
+ NExtract::NAskMode::kTest :
2746
+ NExtract::NAskMode::kExtract;
2747
+
2748
+ const UInt32 index = allFilesMode ? i : indices[i];
2749
+
2750
+ RINOK(extractCallback->GetStream(index, &outStream, askMode))
2751
+
2752
+ if (index >= _items.Size())
2753
+ {
2754
+ RINOK(extractCallback->PrepareOperation(askMode))
2755
+ RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK))
2756
+ continue;
2757
+ }
2758
+
2759
+ const CItem &item = _items[index];
2760
+ const CNode &node = _nodes[_refs[item.Node]];
2761
+
2762
+ if (node.IsDir())
2763
+ {
2764
+ RINOK(extractCallback->PrepareOperation(askMode))
2765
+ RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK))
2766
+ continue;
2767
+ }
2768
+
2769
+ UInt64 unpackSize = node.FileSize;
2770
+ totalSize += unpackSize;
2771
+ UInt64 packSize;
2772
+ if (GetPackSize(index, packSize))
2773
+ totalPackSize += packSize;
2774
+
2775
+ if (!testMode && !outStream)
2776
+ continue;
2777
+ RINOK(extractCallback->PrepareOperation(askMode))
2778
+
2779
+ opRes = NExtract::NOperationResult::kDataError;
2780
+ {
2781
+ CMyComPtr<ISequentialInStream> inSeqStream;
2782
+ HRESULT hres = GetStream(index, &inSeqStream);
2783
+ if (hres == S_FALSE || !inSeqStream)
2784
+ {
2785
+ if (hres == E_OUTOFMEMORY)
2786
+ return hres;
2787
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
2788
+ }
2789
+ else
2790
+ {
2791
+ RINOK(hres)
2792
+ {
2793
+ hres = copyCoder.Interface()->Code(inSeqStream, outStream, NULL, NULL, lps);
2794
+ if (hres == S_OK)
2795
+ {
2796
+ if (copyCoder->TotalSize == unpackSize)
2797
+ opRes = NExtract::NOperationResult::kOK;
2798
+ }
2799
+ else if (hres == E_NOTIMPL)
2800
+ {
2801
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
2802
+ }
2803
+ else if (hres != S_FALSE)
2804
+ {
2805
+ RINOK(hres)
2806
+ }
2807
+ }
2808
+ }
2809
+ }
2810
+ }
2811
+ RINOK(extractCallback->SetOperationResult(opRes))
2812
+ }
2813
+
2814
+ return S_OK;
2815
+ COM_TRY_END
2816
+ }
2817
+
2818
+
2819
+ Z7_COM7F_IMF(CHandler::GetStream(UInt32 index, ISequentialInStream **stream))
2820
+ {
2821
+ *stream = NULL;
2822
+ if (index >= _items.Size())
2823
+ return S_FALSE;
2824
+ return GetStream_Node((unsigned)_refs[_items[index].Node], stream);
2825
+ }
2826
+
2827
+
2828
+ API_FUNC_IsArc IsArc_Ext_PhySize(const Byte *p, size_t size, UInt64 *phySize);
2829
+ API_FUNC_IsArc IsArc_Ext_PhySize(const Byte *p, size_t size, UInt64 *phySize)
2830
+ {
2831
+ if (phySize)
2832
+ *phySize = 0;
2833
+ if (size < kHeaderSize)
2834
+ return k_IsArc_Res_NEED_MORE;
2835
+ CHeader h;
2836
+ if (!h.Parse(p + kHeaderDataOffset))
2837
+ return k_IsArc_Res_NO;
2838
+ if (phySize)
2839
+ *phySize = h.GetPhySize();
2840
+ return k_IsArc_Res_YES;
2841
+ }
2842
+
2843
+
2844
+ API_FUNC_IsArc IsArc_Ext(const Byte *p, size_t size);
2845
+ API_FUNC_IsArc IsArc_Ext(const Byte *p, size_t size)
2846
+ {
2847
+ return IsArc_Ext_PhySize(p, size, NULL);
2848
+ }
2849
+
2850
+
2851
+ static const Byte k_Signature[] = { 0x53, 0xEF };
2852
+
2853
+ REGISTER_ARC_I(
2854
+ "Ext", "ext ext2 ext3 ext4 img", NULL, 0xC7,
2855
+ k_Signature,
2856
+ 0x438,
2857
+ 0,
2858
+ IsArc_Ext)
2859
+
2860
+ }}