react-native-update 10.34.2 → 10.34.4

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 (746) hide show
  1. package/.gitmodules +4 -4
  2. package/harmony/pushy/src/main/cpp/HDiffPatch/CHANGELOG.md +153 -0
  3. package/harmony/pushy/src/main/cpp/HDiffPatch/LICENSE +48 -0
  4. package/harmony/pushy/src/main/cpp/HDiffPatch/Makefile +157 -0
  5. package/harmony/pushy/src/main/cpp/HDiffPatch/README.md +307 -0
  6. package/harmony/pushy/src/main/cpp/HDiffPatch/_atosize.h +83 -0
  7. package/harmony/pushy/src/main/cpp/HDiffPatch/_clock_for_demo.h +47 -0
  8. package/harmony/pushy/src/main/cpp/HDiffPatch/_dir_ignore.h +191 -0
  9. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +37 -0
  10. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +7 -0
  11. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +1 -0
  12. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +1 -0
  13. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +18 -0
  14. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +20 -0
  15. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +28 -0
  16. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +8 -0
  17. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +8 -0
  18. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffZ.cbp +219 -0
  19. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HPatchZ.cbp +156 -0
  20. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/unitTest.cbp +65 -0
  21. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffPatch.sln +105 -0
  22. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj +237 -0
  23. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +3 -0
  24. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj +318 -0
  25. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +3 -0
  26. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj +182 -0
  27. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj.user +3 -0
  28. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +30 -0
  29. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  30. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +408 -0
  31. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +573 -0
  32. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +396 -0
  33. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +268 -0
  34. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +361 -0
  35. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +301 -0
  36. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +411 -0
  37. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +504 -0
  38. package/harmony/pushy/src/main/cpp/HDiffPatch/checksum_plugin_demo.h +344 -0
  39. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.cpp +166 -0
  40. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.h +59 -0
  41. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_plugin_demo.h +1152 -0
  42. package/harmony/pushy/src/main/cpp/HDiffPatch/decompress_plugin_demo.h +995 -0
  43. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +797 -0
  44. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +65 -0
  45. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +200 -0
  46. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +178 -0
  47. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +357 -0
  48. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +87 -0
  49. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +151 -0
  50. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +770 -0
  51. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +236 -0
  52. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +47 -0
  53. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +112 -0
  54. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +53 -0
  55. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +61 -0
  56. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +331 -0
  57. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +144 -0
  58. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +176 -0
  59. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +84 -0
  60. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +146 -0
  61. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +61 -0
  62. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +152 -0
  63. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +76 -0
  64. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.c +524 -0
  65. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.h +259 -0
  66. package/harmony/pushy/src/main/cpp/HDiffPatch/hdiffz.cpp +1570 -0
  67. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatch_dir_listener.h +290 -0
  68. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatchz.c +1221 -0
  69. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +1025 -0
  70. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.h +116 -0
  71. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +72 -0
  72. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +213 -0
  73. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +63 -0
  74. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +170 -0
  75. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +86 -0
  76. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +89 -0
  77. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +13 -0
  78. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +398 -0
  79. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +194 -0
  80. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +13 -0
  81. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +204 -0
  82. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +207 -0
  83. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +815 -0
  84. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +586 -0
  85. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +381 -0
  86. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +352 -0
  87. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +137 -0
  88. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +137 -0
  89. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +70 -0
  90. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +628 -0
  91. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +87 -0
  92. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +363 -0
  93. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +139 -0
  94. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +68 -0
  95. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +115 -0
  96. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +342 -0
  97. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +94 -0
  98. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +52 -0
  99. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.c +2292 -0
  100. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.h +215 -0
  101. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +165 -0
  102. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +251 -0
  103. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.cpp +174 -0
  104. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.h +73 -0
  105. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.cpp +367 -0
  106. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.h +92 -0
  107. package/harmony/pushy/src/main/cpp/HDiffPatch/test/_private_searchBestParams.cpp +301 -0
  108. package/harmony/pushy/src/main/cpp/HDiffPatch/test/hpatchz_test.cpp +292 -0
  109. package/harmony/pushy/src/main/cpp/HDiffPatch/test/testHashClash.cpp +436 -0
  110. package/harmony/pushy/src/main/cpp/HDiffPatch/test/unit_test.cpp +417 -0
  111. package/harmony/pushy/src/main/cpp/lzma/Asm/arm/7zCrcOpt.asm +100 -0
  112. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zAsm.asm +147 -0
  113. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zCrcOpt.asm +147 -0
  114. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/AesOpt.asm +237 -0
  115. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/LzmaDecOpt.asm +1258 -0
  116. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/XzCrc64Opt.asm +205 -0
  117. package/harmony/pushy/src/main/cpp/lzma/C/7z.h +202 -0
  118. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.c +80 -0
  119. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.h +19 -0
  120. package/harmony/pushy/src/main/cpp/lzma/C/7zArcIn.c +1771 -0
  121. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf.c +36 -0
  122. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf.h +35 -0
  123. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf2.c +52 -0
  124. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.c +128 -0
  125. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.h +25 -0
  126. package/harmony/pushy/src/main/cpp/lzma/C/7zCrcOpt.c +115 -0
  127. package/harmony/pushy/src/main/cpp/lzma/C/7zDec.c +591 -0
  128. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.c +286 -0
  129. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.h +83 -0
  130. package/harmony/pushy/src/main/cpp/lzma/C/7zStream.c +176 -0
  131. package/harmony/pushy/src/main/cpp/lzma/C/7zTypes.h +375 -0
  132. package/harmony/pushy/src/main/cpp/lzma/C/7zVersion.h +27 -0
  133. package/harmony/pushy/src/main/cpp/lzma/C/7zVersion.rc +55 -0
  134. package/harmony/pushy/src/main/cpp/lzma/C/Aes.c +306 -0
  135. package/harmony/pushy/src/main/cpp/lzma/C/Aes.h +38 -0
  136. package/harmony/pushy/src/main/cpp/lzma/C/AesOpt.c +184 -0
  137. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.c +455 -0
  138. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.h +51 -0
  139. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.c +257 -0
  140. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.h +146 -0
  141. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2Enc.c +311 -0
  142. package/harmony/pushy/src/main/cpp/lzma/C/Bra.c +230 -0
  143. package/harmony/pushy/src/main/cpp/lzma/C/Bra.h +64 -0
  144. package/harmony/pushy/src/main/cpp/lzma/C/Bra86.c +82 -0
  145. package/harmony/pushy/src/main/cpp/lzma/C/BraIA64.c +53 -0
  146. package/harmony/pushy/src/main/cpp/lzma/C/Compiler.h +33 -0
  147. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.c +218 -0
  148. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.h +336 -0
  149. package/harmony/pushy/src/main/cpp/lzma/C/Delta.c +64 -0
  150. package/harmony/pushy/src/main/cpp/lzma/C/Delta.h +19 -0
  151. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.c +108 -0
  152. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.h +20 -0
  153. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.c +1127 -0
  154. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.h +121 -0
  155. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.c +853 -0
  156. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.h +101 -0
  157. package/harmony/pushy/src/main/cpp/lzma/C/LzHash.h +57 -0
  158. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.c +488 -0
  159. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.h +120 -0
  160. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.c +1082 -0
  161. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.h +79 -0
  162. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.c +803 -0
  163. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.h +55 -0
  164. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86.h +111 -0
  165. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Dec.c +54 -0
  166. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Enc.c +106 -0
  167. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.c +1185 -0
  168. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.h +234 -0
  169. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.c +2976 -0
  170. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.h +76 -0
  171. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.c +40 -0
  172. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.h +131 -0
  173. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.c +601 -0
  174. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.h +141 -0
  175. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.c +1138 -0
  176. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.h +201 -0
  177. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd.h +85 -0
  178. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.c +712 -0
  179. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.h +142 -0
  180. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Dec.c +191 -0
  181. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Enc.c +187 -0
  182. package/harmony/pushy/src/main/cpp/lzma/C/Precomp.h +10 -0
  183. package/harmony/pushy/src/main/cpp/lzma/C/RotateDefs.h +30 -0
  184. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.c +248 -0
  185. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.h +26 -0
  186. package/harmony/pushy/src/main/cpp/lzma/C/Sort.c +141 -0
  187. package/harmony/pushy/src/main/cpp/lzma/C/Sort.h +18 -0
  188. package/harmony/pushy/src/main/cpp/lzma/C/Threads.c +95 -0
  189. package/harmony/pushy/src/main/cpp/lzma/C/Threads.h +70 -0
  190. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.c +396 -0
  191. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.h +31 -0
  192. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7z.dsp +241 -0
  193. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7z.dsw +29 -0
  194. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7zMain.c +686 -0
  195. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/Precomp.c +4 -0
  196. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/Precomp.h +10 -0
  197. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile +40 -0
  198. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile.gcc +75 -0
  199. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.c +258 -0
  200. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsp +168 -0
  201. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsw +29 -0
  202. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile +28 -0
  203. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile.gcc +44 -0
  204. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.def +4 -0
  205. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsp +178 -0
  206. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  207. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLibExports.c +14 -0
  208. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/makefile +34 -0
  209. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/resource.rc +3 -0
  210. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.c +4 -0
  211. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.h +10 -0
  212. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.c +640 -0
  213. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  214. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  215. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile +37 -0
  216. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile_con +38 -0
  217. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/resource.rc +5 -0
  218. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/setup.ico +0 -0
  219. package/harmony/pushy/src/main/cpp/lzma/C/Xz.c +90 -0
  220. package/harmony/pushy/src/main/cpp/lzma/C/Xz.h +460 -0
  221. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.c +86 -0
  222. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.h +26 -0
  223. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64Opt.c +69 -0
  224. package/harmony/pushy/src/main/cpp/lzma/C/XzDec.c +2766 -0
  225. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.c +1329 -0
  226. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.h +60 -0
  227. package/harmony/pushy/src/main/cpp/lzma/C/XzIn.c +319 -0
  228. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/7zip.mak +240 -0
  229. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Aes.mak +7 -0
  230. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  231. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +76 -0
  232. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +569 -0
  233. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.h +70 -0
  234. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +678 -0
  235. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.h +92 -0
  236. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +423 -0
  237. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +139 -0
  238. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +61 -0
  239. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +763 -0
  240. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.h +181 -0
  241. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +942 -0
  242. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  243. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.h +148 -0
  244. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.cpp +1666 -0
  245. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.h +445 -0
  246. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zItem.h +202 -0
  247. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.cpp +901 -0
  248. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.h +335 -0
  249. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +174 -0
  250. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.h +22 -0
  251. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +21 -0
  252. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +22 -0
  253. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +35 -0
  254. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +2500 -0
  255. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.h +139 -0
  256. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  257. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.h +8 -0
  258. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive.def +12 -0
  259. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive2.def +19 -0
  260. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/ArchiveExports.cpp +151 -0
  261. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +1125 -0
  262. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  263. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  264. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +25 -0
  265. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +232 -0
  266. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.h +110 -0
  267. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +46 -0
  268. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +67 -0
  269. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +88 -0
  270. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +28 -0
  271. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +191 -0
  272. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.h +89 -0
  273. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  274. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +37 -0
  275. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  276. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  277. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/StdAfx.h +8 -0
  278. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/DllExports2.cpp +122 -0
  279. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/IArchive.h +608 -0
  280. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  281. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/LzmaHandler.cpp +629 -0
  282. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/SplitHandler.cpp +359 -0
  283. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/StdAfx.h +8 -0
  284. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.cpp +1308 -0
  285. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.h +11 -0
  286. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Asm.mak +9 -0
  287. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +1910 -0
  288. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  289. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  290. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +8 -0
  291. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/makefile +154 -0
  292. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  293. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  294. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +8 -0
  295. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +96 -0
  296. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  297. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  298. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +8 -0
  299. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/makefile +116 -0
  300. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  301. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +799 -0
  302. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +477 -0
  303. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  304. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  305. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +8 -0
  306. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile +59 -0
  307. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +195 -0
  308. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  309. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +715 -0
  310. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  311. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +912 -0
  312. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  313. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +482 -0
  314. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  315. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +8 -0
  316. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/makefile +134 -0
  317. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +5 -0
  318. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  319. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +86 -0
  320. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +137 -0
  321. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  322. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +803 -0
  323. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  324. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +364 -0
  325. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  326. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +13 -0
  327. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/makefile +117 -0
  328. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  329. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  330. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  331. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  332. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +988 -0
  333. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  334. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +241 -0
  335. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  336. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +14 -0
  337. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/makefile +153 -0
  338. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  339. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +50 -0
  340. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.cpp +250 -0
  341. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.h +120 -0
  342. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.cpp +536 -0
  343. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.h +192 -0
  344. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  345. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  346. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.cpp +475 -0
  347. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.h +166 -0
  348. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.cpp +435 -0
  349. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.h +205 -0
  350. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.cpp +163 -0
  351. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.h +92 -0
  352. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +127 -0
  353. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.h +48 -0
  354. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.cpp +367 -0
  355. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.h +252 -0
  356. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.cpp +3 -0
  357. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.h +6 -0
  358. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodId.cpp +3 -0
  359. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodId.h +10 -0
  360. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.cpp +509 -0
  361. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.h +264 -0
  362. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.cpp +39 -0
  363. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.h +26 -0
  364. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.cpp +111 -0
  365. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.h +66 -0
  366. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  367. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.h +35 -0
  368. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/PropId.cpp +108 -0
  369. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterArc.h +78 -0
  370. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterCodec.h +106 -0
  371. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StdAfx.h +8 -0
  372. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.cpp +156 -0
  373. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.h +60 -0
  374. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.cpp +285 -0
  375. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.h +157 -0
  376. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.cpp +56 -0
  377. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.h +13 -0
  378. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  379. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.h +26 -0
  380. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.cpp +48 -0
  381. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.h +24 -0
  382. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +666 -0
  383. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.h +120 -0
  384. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  385. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  386. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.h +31 -0
  387. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  388. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.cpp +23 -0
  389. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.h +35 -0
  390. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchRegister.cpp +41 -0
  391. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/ByteSwap.cpp +92 -0
  392. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CodecExports.cpp +344 -0
  393. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.cpp +120 -0
  394. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.h +49 -0
  395. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  396. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/DeltaFilter.cpp +128 -0
  397. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +265 -0
  398. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.h +96 -0
  399. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +122 -0
  400. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.h +42 -0
  401. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  402. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +343 -0
  403. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  404. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +182 -0
  405. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.h +46 -0
  406. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  407. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +170 -0
  408. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.h +86 -0
  409. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +152 -0
  410. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.h +58 -0
  411. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  412. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/StdAfx.h +8 -0
  413. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.cpp +150 -0
  414. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.h +92 -0
  415. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.cpp +245 -0
  416. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.h +46 -0
  417. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc.mak +8 -0
  418. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc64.mak +8 -0
  419. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.cpp +280 -0
  420. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.h +118 -0
  421. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  422. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.cpp +112 -0
  423. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.h +57 -0
  424. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
  425. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.cpp +233 -0
  426. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.h +40 -0
  427. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/StdAfx.h +8 -0
  428. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/GuiCommon.rc +84 -0
  429. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Guid.txt +220 -0
  430. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/ICoder.h +399 -0
  431. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IDecl.h +28 -0
  432. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IPassword.h +23 -0
  433. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IProgress.h +19 -0
  434. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IStream.h +127 -0
  435. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/LzmaDec.mak +5 -0
  436. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/MyVersion.h +2 -0
  437. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/MyVersionInfo.rc +2 -0
  438. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/PropID.h +127 -0
  439. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/SubBuild.mak +3 -0
  440. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +993 -0
  441. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +235 -0
  442. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  443. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  444. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.h +8 -0
  445. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/makefile +28 -0
  446. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/resource.rc +3 -0
  447. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1295 -0
  448. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +136 -0
  449. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +1715 -0
  450. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +403 -0
  451. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +155 -0
  452. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.h +10 -0
  453. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +161 -0
  454. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +112 -0
  455. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.cpp +3618 -0
  456. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.h +77 -0
  457. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  458. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.h +11 -0
  459. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DirItem.h +190 -0
  460. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +1096 -0
  461. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.h +42 -0
  462. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExitCode.h +27 -0
  463. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.cpp +482 -0
  464. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.h +94 -0
  465. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractMode.h +34 -0
  466. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +280 -0
  467. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  468. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.cpp +347 -0
  469. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.h +110 -0
  470. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +114 -0
  471. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +1074 -0
  472. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.h +424 -0
  473. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +3553 -0
  474. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.h +436 -0
  475. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +668 -0
  476. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  477. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Property.h +14 -0
  478. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.cpp +80 -0
  479. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.h +10 -0
  480. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  481. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.h +10 -0
  482. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/StdAfx.h +8 -0
  483. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.cpp +19 -0
  484. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.h +16 -0
  485. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.cpp +1704 -0
  486. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.h +200 -0
  487. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  488. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  489. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +771 -0
  490. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.h +162 -0
  491. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +233 -0
  492. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  493. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +70 -0
  494. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.h +55 -0
  495. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.cpp +94 -0
  496. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.h +26 -0
  497. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ZipRegistry.h +130 -0
  498. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  499. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.h +14 -0
  500. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.mak +43 -0
  501. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.manifest +13 -0
  502. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +69 -0
  503. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.h +33 -0
  504. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +825 -0
  505. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +164 -0
  506. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.cpp +367 -0
  507. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.h +48 -0
  508. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.cpp +1359 -0
  509. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.h +27 -0
  510. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Main.cpp +1154 -0
  511. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/MainAr.cpp +175 -0
  512. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  513. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +66 -0
  514. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +183 -0
  515. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.h +62 -0
  516. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  517. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.h +8 -0
  518. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +702 -0
  519. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +124 -0
  520. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +110 -0
  521. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  522. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/makefile +64 -0
  523. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/resource.rc +7 -0
  524. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +37 -0
  525. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  526. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1025 -0
  527. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +21 -0
  528. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  529. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  530. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  531. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  532. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  533. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1037 -0
  534. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +328 -0
  535. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  536. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  537. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/LangUtils.h +40 -0
  538. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +76 -0
  539. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +122 -0
  540. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +69 -0
  541. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +91 -0
  542. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +17 -0
  543. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  544. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  545. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +14 -0
  546. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  547. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +196 -0
  548. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +170 -0
  549. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  550. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1337 -0
  551. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +351 -0
  552. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  553. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +48 -0
  554. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +80 -0
  555. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  556. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  557. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  558. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +95 -0
  559. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +255 -0
  560. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +62 -0
  561. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resource.h +177 -0
  562. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resourceGui.h +15 -0
  563. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/Extract.rc +59 -0
  564. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +418 -0
  565. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  566. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  567. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  568. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +280 -0
  569. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +38 -0
  570. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  571. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  572. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/resource2.h +2 -0
  573. package/harmony/pushy/src/main/cpp/lzma/CPP/Build.mak +156 -0
  574. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/AutoPtr.h +35 -0
  575. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CRC.cpp +7 -0
  576. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.cpp +92 -0
  577. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.h +53 -0
  578. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ComTry.h +21 -0
  579. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.cpp +197 -0
  580. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.h +63 -0
  581. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Common.h +43 -0
  582. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CrcReg.cpp +98 -0
  583. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Defs.h +15 -0
  584. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/DynamicBuffer.h +64 -0
  585. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.cpp +193 -0
  586. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.h +28 -0
  587. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Lang.h +23 -0
  588. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.cpp +132 -0
  589. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.h +18 -0
  590. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer.h +259 -0
  591. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer2.h +100 -0
  592. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyCom.h +277 -0
  593. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyException.h +14 -0
  594. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyGuidDef.h +54 -0
  595. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyInitGuid.h +45 -0
  596. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyLinux.h +42 -0
  597. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.cpp +1659 -0
  598. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.h +868 -0
  599. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyTypes.h +35 -0
  600. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyUnknown.h +17 -0
  601. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyVector.cpp +3 -0
  602. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyVector.h +634 -0
  603. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.cpp +145 -0
  604. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.h +231 -0
  605. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.cpp +163 -0
  606. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.h +88 -0
  607. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Sha256Reg.cpp +40 -0
  608. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdAfx.h +8 -0
  609. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.cpp +89 -0
  610. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.h +38 -0
  611. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.cpp +163 -0
  612. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.h +71 -0
  613. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.cpp +319 -0
  614. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.h +88 -0
  615. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.cpp +144 -0
  616. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.h +21 -0
  617. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.cpp +124 -0
  618. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.h +19 -0
  619. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.cpp +288 -0
  620. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.h +12 -0
  621. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.cpp +676 -0
  622. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.h +149 -0
  623. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/XzCrc64Init.cpp +7 -0
  624. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/XzCrc64Reg.cpp +42 -0
  625. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/COM.h +70 -0
  626. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.cpp +185 -0
  627. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.h +23 -0
  628. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.cpp +66 -0
  629. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.h +65 -0
  630. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/CommandBar.h +52 -0
  631. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.cpp +251 -0
  632. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.h +170 -0
  633. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Edit.h +19 -0
  634. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ImageList.cpp +10 -0
  635. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ImageList.h +87 -0
  636. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.cpp +155 -0
  637. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.h +146 -0
  638. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ProgressBar.h +35 -0
  639. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.cpp +143 -0
  640. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.h +50 -0
  641. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ReBar.h +34 -0
  642. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Static.h +28 -0
  643. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StatusBar.h +42 -0
  644. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StdAfx.h +8 -0
  645. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ToolBar.h +43 -0
  646. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Trackbar.h +27 -0
  647. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.cpp +200 -0
  648. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.h +51 -0
  649. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.cpp +109 -0
  650. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.h +58 -0
  651. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Defs.h +17 -0
  652. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.cpp +66 -0
  653. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.h +15 -0
  654. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.cpp +714 -0
  655. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.h +117 -0
  656. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.cpp +749 -0
  657. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.h +161 -0
  658. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.cpp +432 -0
  659. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.h +212 -0
  660. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileLink.cpp +440 -0
  661. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileMapping.cpp +12 -0
  662. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileMapping.h +66 -0
  663. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.cpp +839 -0
  664. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.h +115 -0
  665. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.cpp +131 -0
  666. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.h +27 -0
  667. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Handle.h +37 -0
  668. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.cpp +112 -0
  669. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.h +40 -0
  670. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/NtCheck.h +46 -0
  671. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.cpp +347 -0
  672. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.h +114 -0
  673. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.cpp +138 -0
  674. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.h +37 -0
  675. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.cpp +390 -0
  676. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.h +84 -0
  677. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.cpp +103 -0
  678. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.h +16 -0
  679. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.cpp +181 -0
  680. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.h +167 -0
  681. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.cpp +358 -0
  682. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.h +94 -0
  683. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/StdAfx.h +8 -0
  684. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.cpp +10 -0
  685. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.h +164 -0
  686. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.cpp +142 -0
  687. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.h +40 -0
  688. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Thread.h +38 -0
  689. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.cpp +213 -0
  690. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.h +32 -0
  691. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.cpp +179 -0
  692. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.h +284 -0
  693. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/CRC.cs +55 -0
  694. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/CommandLineParser.cs +274 -0
  695. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/InBuffer.cs +72 -0
  696. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/OutBuffer.cs +47 -0
  697. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +24 -0
  698. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +367 -0
  699. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +132 -0
  700. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +110 -0
  701. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +76 -0
  702. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +398 -0
  703. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +1480 -0
  704. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +364 -0
  705. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +90 -0
  706. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +20 -0
  707. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +340 -0
  708. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +29 -0
  709. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +70 -0
  710. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +42 -0
  711. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +234 -0
  712. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +117 -0
  713. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +157 -0
  714. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/ICoder.cs +157 -0
  715. package/harmony/pushy/src/main/cpp/lzma/DOC/7zC.txt +187 -0
  716. package/harmony/pushy/src/main/cpp/lzma/DOC/7zFormat.txt +469 -0
  717. package/harmony/pushy/src/main/cpp/lzma/DOC/Methods.txt +173 -0
  718. package/harmony/pushy/src/main/cpp/lzma/DOC/installer.txt +166 -0
  719. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-history.txt +446 -0
  720. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-sdk.txt +357 -0
  721. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-specification.txt +1176 -0
  722. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma.txt +328 -0
  723. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/CRC.java +52 -0
  724. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/BinTree.java +382 -0
  725. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/InWindow.java +131 -0
  726. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +85 -0
  727. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Base.java +88 -0
  728. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +329 -0
  729. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +1416 -0
  730. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +55 -0
  731. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +99 -0
  732. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +88 -0
  733. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +151 -0
  734. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/ICodeProgress.java +6 -0
  735. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/LzmaAlone.java +253 -0
  736. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/LzmaBench.java +392 -0
  737. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2.sfx +0 -0
  738. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2con.sfx +0 -0
  739. package/harmony/pushy/src/main/cpp/lzma/bin/7zSD.sfx +0 -0
  740. package/harmony/pushy/src/main/cpp/lzma/bin/7zdec.exe +0 -0
  741. package/harmony/pushy/src/main/cpp/lzma/bin/7zr.exe +0 -0
  742. package/harmony/pushy/src/main/cpp/lzma/bin/installer/config.txt +5 -0
  743. package/harmony/pushy/src/main/cpp/lzma/bin/installer/cr.bat +5 -0
  744. package/harmony/pushy/src/main/cpp/lzma/bin/lzma.exe +0 -0
  745. package/harmony/pushy/src/main/cpp/lzma/bin/x64/7zr.exe +0 -0
  746. package/package.json +1 -1
@@ -0,0 +1,2766 @@
1
+ /* XzDec.c -- Xz Decode
2
+ 2019-02-02 : Igor Pavlov : Public domain */
3
+
4
+ #include "Precomp.h"
5
+
6
+ // #include <stdio.h>
7
+
8
+ // #define XZ_DUMP
9
+
10
+ /* #define XZ_DUMP */
11
+
12
+ #ifdef XZ_DUMP
13
+ #include <stdio.h>
14
+ #endif
15
+
16
+ // #define SHOW_DEBUG_INFO
17
+
18
+ #ifdef SHOW_DEBUG_INFO
19
+ #include <stdio.h>
20
+ #endif
21
+
22
+ #ifdef SHOW_DEBUG_INFO
23
+ #define PRF(x) x
24
+ #else
25
+ #define PRF(x)
26
+ #endif
27
+
28
+ #define PRF_STR(s) PRF(printf("\n" s "\n"))
29
+ #define PRF_STR_INT(s, d) PRF(printf("\n" s " %d\n", (unsigned)d))
30
+
31
+ #include <stdlib.h>
32
+ #include <string.h>
33
+
34
+ #include "7zCrc.h"
35
+ #include "Alloc.h"
36
+ #include "Bra.h"
37
+ #include "CpuArch.h"
38
+ #include "Delta.h"
39
+ #include "Lzma2Dec.h"
40
+
41
+ // #define USE_SUBBLOCK
42
+
43
+ #ifdef USE_SUBBLOCK
44
+ #include "Bcj3Dec.c"
45
+ #include "SbDec.h"
46
+ #endif
47
+
48
+ #include "Xz.h"
49
+
50
+ #define XZ_CHECK_SIZE_MAX 64
51
+
52
+ #define CODER_BUF_SIZE ((size_t)1 << 17)
53
+
54
+ unsigned Xz_ReadVarInt(const Byte *p, size_t maxSize, UInt64 *value)
55
+ {
56
+ unsigned i, limit;
57
+ *value = 0;
58
+ limit = (maxSize > 9) ? 9 : (unsigned)maxSize;
59
+
60
+ for (i = 0; i < limit;)
61
+ {
62
+ Byte b = p[i];
63
+ *value |= (UInt64)(b & 0x7F) << (7 * i++);
64
+ if ((b & 0x80) == 0)
65
+ return (b == 0 && i != 1) ? 0 : i;
66
+ }
67
+ return 0;
68
+ }
69
+
70
+ /* ---------- BraState ---------- */
71
+
72
+ #define BRA_BUF_SIZE (1 << 14)
73
+
74
+ typedef struct
75
+ {
76
+ size_t bufPos;
77
+ size_t bufConv;
78
+ size_t bufTotal;
79
+
80
+ int encodeMode;
81
+
82
+ UInt32 methodId;
83
+ UInt32 delta;
84
+ UInt32 ip;
85
+ UInt32 x86State;
86
+ Byte deltaState[DELTA_STATE_SIZE];
87
+
88
+ Byte buf[BRA_BUF_SIZE];
89
+ } CBraState;
90
+
91
+ static void BraState_Free(void *pp, ISzAllocPtr alloc)
92
+ {
93
+ ISzAlloc_Free(alloc, pp);
94
+ }
95
+
96
+ static SRes BraState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc)
97
+ {
98
+ CBraState *p = ((CBraState *)pp);
99
+ UNUSED_VAR(alloc);
100
+ p->ip = 0;
101
+ if (p->methodId == XZ_ID_Delta)
102
+ {
103
+ if (propSize != 1)
104
+ return SZ_ERROR_UNSUPPORTED;
105
+ p->delta = (unsigned)props[0] + 1;
106
+ }
107
+ else
108
+ {
109
+ if (propSize == 4)
110
+ {
111
+ UInt32 v = GetUi32(props);
112
+ switch (p->methodId)
113
+ {
114
+ case XZ_ID_PPC:
115
+ case XZ_ID_ARM:
116
+ case XZ_ID_SPARC:
117
+ if ((v & 3) != 0)
118
+ return SZ_ERROR_UNSUPPORTED;
119
+ break;
120
+ case XZ_ID_ARMT:
121
+ if ((v & 1) != 0)
122
+ return SZ_ERROR_UNSUPPORTED;
123
+ break;
124
+ case XZ_ID_IA64:
125
+ if ((v & 0xF) != 0)
126
+ return SZ_ERROR_UNSUPPORTED;
127
+ break;
128
+ }
129
+ p->ip = v;
130
+ }
131
+ else if (propSize != 0)
132
+ return SZ_ERROR_UNSUPPORTED;
133
+ }
134
+ return SZ_OK;
135
+ }
136
+
137
+ static void BraState_Init(void *pp)
138
+ {
139
+ CBraState *p = ((CBraState *)pp);
140
+ p->bufPos = p->bufConv = p->bufTotal = 0;
141
+ x86_Convert_Init(p->x86State);
142
+ if (p->methodId == XZ_ID_Delta)
143
+ Delta_Init(p->deltaState);
144
+ }
145
+
146
+
147
+ #define CASE_BRA_CONV(isa) case XZ_ID_ ## isa: size = isa ## _Convert(data, size, p->ip, p->encodeMode); break;
148
+
149
+ static SizeT BraState_Filter(void *pp, Byte *data, SizeT size)
150
+ {
151
+ CBraState *p = ((CBraState *)pp);
152
+ switch (p->methodId)
153
+ {
154
+ case XZ_ID_Delta:
155
+ if (p->encodeMode)
156
+ Delta_Encode(p->deltaState, p->delta, data, size);
157
+ else
158
+ Delta_Decode(p->deltaState, p->delta, data, size);
159
+ break;
160
+ case XZ_ID_X86:
161
+ size = x86_Convert(data, size, p->ip, &p->x86State, p->encodeMode);
162
+ break;
163
+ CASE_BRA_CONV(PPC)
164
+ CASE_BRA_CONV(IA64)
165
+ CASE_BRA_CONV(ARM)
166
+ CASE_BRA_CONV(ARMT)
167
+ CASE_BRA_CONV(SPARC)
168
+ }
169
+ p->ip += (UInt32)size;
170
+ return size;
171
+ }
172
+
173
+
174
+ static SRes BraState_Code2(void *pp,
175
+ Byte *dest, SizeT *destLen,
176
+ const Byte *src, SizeT *srcLen, int srcWasFinished,
177
+ ECoderFinishMode finishMode,
178
+ // int *wasFinished
179
+ ECoderStatus *status)
180
+ {
181
+ CBraState *p = ((CBraState *)pp);
182
+ SizeT destRem = *destLen;
183
+ SizeT srcRem = *srcLen;
184
+ UNUSED_VAR(finishMode);
185
+
186
+ *destLen = 0;
187
+ *srcLen = 0;
188
+ // *wasFinished = False;
189
+ *status = CODER_STATUS_NOT_FINISHED;
190
+
191
+ while (destRem > 0)
192
+ {
193
+ if (p->bufPos != p->bufConv)
194
+ {
195
+ size_t size = p->bufConv - p->bufPos;
196
+ if (size > destRem)
197
+ size = destRem;
198
+ memcpy(dest, p->buf + p->bufPos, size);
199
+ p->bufPos += size;
200
+ *destLen += size;
201
+ dest += size;
202
+ destRem -= size;
203
+ continue;
204
+ }
205
+
206
+ p->bufTotal -= p->bufPos;
207
+ memmove(p->buf, p->buf + p->bufPos, p->bufTotal);
208
+ p->bufPos = 0;
209
+ p->bufConv = 0;
210
+ {
211
+ size_t size = BRA_BUF_SIZE - p->bufTotal;
212
+ if (size > srcRem)
213
+ size = srcRem;
214
+ memcpy(p->buf + p->bufTotal, src, size);
215
+ *srcLen += size;
216
+ src += size;
217
+ srcRem -= size;
218
+ p->bufTotal += size;
219
+ }
220
+ if (p->bufTotal == 0)
221
+ break;
222
+
223
+ p->bufConv = BraState_Filter(pp, p->buf, p->bufTotal);
224
+
225
+ if (p->bufConv == 0)
226
+ {
227
+ if (!srcWasFinished)
228
+ break;
229
+ p->bufConv = p->bufTotal;
230
+ }
231
+ }
232
+
233
+ if (p->bufTotal == p->bufPos && srcRem == 0 && srcWasFinished)
234
+ {
235
+ *status = CODER_STATUS_FINISHED_WITH_MARK;
236
+ // *wasFinished = 1;
237
+ }
238
+
239
+ return SZ_OK;
240
+ }
241
+
242
+
243
+ SRes BraState_SetFromMethod(IStateCoder *p, UInt64 id, int encodeMode, ISzAllocPtr alloc)
244
+ {
245
+ CBraState *decoder;
246
+ if (id < XZ_ID_Delta || id > XZ_ID_SPARC)
247
+ return SZ_ERROR_UNSUPPORTED;
248
+ decoder = (CBraState *)p->p;
249
+ if (!decoder)
250
+ {
251
+ decoder = (CBraState *)ISzAlloc_Alloc(alloc, sizeof(CBraState));
252
+ if (!decoder)
253
+ return SZ_ERROR_MEM;
254
+ p->p = decoder;
255
+ p->Free = BraState_Free;
256
+ p->SetProps = BraState_SetProps;
257
+ p->Init = BraState_Init;
258
+ p->Code2 = BraState_Code2;
259
+ p->Filter = BraState_Filter;
260
+ }
261
+ decoder->methodId = (UInt32)id;
262
+ decoder->encodeMode = encodeMode;
263
+ return SZ_OK;
264
+ }
265
+
266
+
267
+
268
+ /* ---------- SbState ---------- */
269
+
270
+ #ifdef USE_SUBBLOCK
271
+
272
+ static void SbState_Free(void *pp, ISzAllocPtr alloc)
273
+ {
274
+ CSbDec *p = (CSbDec *)pp;
275
+ SbDec_Free(p);
276
+ ISzAlloc_Free(alloc, pp);
277
+ }
278
+
279
+ static SRes SbState_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc)
280
+ {
281
+ UNUSED_VAR(pp);
282
+ UNUSED_VAR(props);
283
+ UNUSED_VAR(alloc);
284
+ return (propSize == 0) ? SZ_OK : SZ_ERROR_UNSUPPORTED;
285
+ }
286
+
287
+ static void SbState_Init(void *pp)
288
+ {
289
+ SbDec_Init((CSbDec *)pp);
290
+ }
291
+
292
+ static SRes SbState_Code2(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
293
+ int srcWasFinished, ECoderFinishMode finishMode,
294
+ // int *wasFinished
295
+ ECoderStatus *status)
296
+ {
297
+ CSbDec *p = (CSbDec *)pp;
298
+ SRes res;
299
+ UNUSED_VAR(srcWasFinished);
300
+ p->dest = dest;
301
+ p->destLen = *destLen;
302
+ p->src = src;
303
+ p->srcLen = *srcLen;
304
+ p->finish = finishMode; /* change it */
305
+ res = SbDec_Decode((CSbDec *)pp);
306
+ *destLen -= p->destLen;
307
+ *srcLen -= p->srcLen;
308
+ // *wasFinished = (*destLen == 0 && *srcLen == 0); /* change it */
309
+ *status = (*destLen == 0 && *srcLen == 0) ?
310
+ CODER_STATUS_FINISHED_WITH_MARK :
311
+ CODER_STATUS_NOT_FINISHED;
312
+ return res;
313
+ }
314
+
315
+ static SRes SbState_SetFromMethod(IStateCoder *p, ISzAllocPtr alloc)
316
+ {
317
+ CSbDec *decoder = (CSbDec *)p->p;
318
+ if (!decoder)
319
+ {
320
+ decoder = (CSbDec *)ISzAlloc_Alloc(alloc, sizeof(CSbDec));
321
+ if (!decoder)
322
+ return SZ_ERROR_MEM;
323
+ p->p = decoder;
324
+ p->Free = SbState_Free;
325
+ p->SetProps = SbState_SetProps;
326
+ p->Init = SbState_Init;
327
+ p->Code2 = SbState_Code2;
328
+ p->Filter = NULL;
329
+ }
330
+ SbDec_Construct(decoder);
331
+ SbDec_SetAlloc(decoder, alloc);
332
+ return SZ_OK;
333
+ }
334
+
335
+ #endif
336
+
337
+
338
+
339
+ /* ---------- Lzma2 ---------- */
340
+
341
+ typedef struct
342
+ {
343
+ CLzma2Dec decoder;
344
+ BoolInt outBufMode;
345
+ } CLzma2Dec_Spec;
346
+
347
+
348
+ static void Lzma2State_Free(void *pp, ISzAllocPtr alloc)
349
+ {
350
+ CLzma2Dec_Spec *p = (CLzma2Dec_Spec *)pp;
351
+ if (p->outBufMode)
352
+ Lzma2Dec_FreeProbs(&p->decoder, alloc);
353
+ else
354
+ Lzma2Dec_Free(&p->decoder, alloc);
355
+ ISzAlloc_Free(alloc, pp);
356
+ }
357
+
358
+ static SRes Lzma2State_SetProps(void *pp, const Byte *props, size_t propSize, ISzAllocPtr alloc)
359
+ {
360
+ if (propSize != 1)
361
+ return SZ_ERROR_UNSUPPORTED;
362
+ {
363
+ CLzma2Dec_Spec *p = (CLzma2Dec_Spec *)pp;
364
+ if (p->outBufMode)
365
+ return Lzma2Dec_AllocateProbs(&p->decoder, props[0], alloc);
366
+ else
367
+ return Lzma2Dec_Allocate(&p->decoder, props[0], alloc);
368
+ }
369
+ }
370
+
371
+ static void Lzma2State_Init(void *pp)
372
+ {
373
+ Lzma2Dec_Init(&((CLzma2Dec_Spec *)pp)->decoder);
374
+ }
375
+
376
+
377
+ /*
378
+ if (outBufMode), then (dest) is not used. Use NULL.
379
+ Data is unpacked to (spec->decoder.decoder.dic) output buffer.
380
+ */
381
+
382
+ static SRes Lzma2State_Code2(void *pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
383
+ int srcWasFinished, ECoderFinishMode finishMode,
384
+ // int *wasFinished,
385
+ ECoderStatus *status)
386
+ {
387
+ CLzma2Dec_Spec *spec = (CLzma2Dec_Spec *)pp;
388
+ ELzmaStatus status2;
389
+ /* ELzmaFinishMode fm = (finishMode == LZMA_FINISH_ANY) ? LZMA_FINISH_ANY : LZMA_FINISH_END; */
390
+ SRes res;
391
+ UNUSED_VAR(srcWasFinished);
392
+ if (spec->outBufMode)
393
+ {
394
+ SizeT dicPos = spec->decoder.decoder.dicPos;
395
+ SizeT dicLimit = dicPos + *destLen;
396
+ res = Lzma2Dec_DecodeToDic(&spec->decoder, dicLimit, src, srcLen, (ELzmaFinishMode)finishMode, &status2);
397
+ *destLen = spec->decoder.decoder.dicPos - dicPos;
398
+ }
399
+ else
400
+ res = Lzma2Dec_DecodeToBuf(&spec->decoder, dest, destLen, src, srcLen, (ELzmaFinishMode)finishMode, &status2);
401
+ // *wasFinished = (status2 == LZMA_STATUS_FINISHED_WITH_MARK);
402
+ // ECoderStatus values are identical to ELzmaStatus values of LZMA2 decoder
403
+ *status = (ECoderStatus)status2;
404
+ return res;
405
+ }
406
+
407
+
408
+ static SRes Lzma2State_SetFromMethod(IStateCoder *p, Byte *outBuf, size_t outBufSize, ISzAllocPtr alloc)
409
+ {
410
+ CLzma2Dec_Spec *spec = (CLzma2Dec_Spec *)p->p;
411
+ if (!spec)
412
+ {
413
+ spec = (CLzma2Dec_Spec *)ISzAlloc_Alloc(alloc, sizeof(CLzma2Dec_Spec));
414
+ if (!spec)
415
+ return SZ_ERROR_MEM;
416
+ p->p = spec;
417
+ p->Free = Lzma2State_Free;
418
+ p->SetProps = Lzma2State_SetProps;
419
+ p->Init = Lzma2State_Init;
420
+ p->Code2 = Lzma2State_Code2;
421
+ p->Filter = NULL;
422
+ Lzma2Dec_Construct(&spec->decoder);
423
+ }
424
+ spec->outBufMode = False;
425
+ if (outBuf)
426
+ {
427
+ spec->outBufMode = True;
428
+ spec->decoder.decoder.dic = outBuf;
429
+ spec->decoder.decoder.dicBufSize = outBufSize;
430
+ }
431
+ return SZ_OK;
432
+ }
433
+
434
+
435
+ static SRes Lzma2State_ResetOutBuf(IStateCoder *p, Byte *outBuf, size_t outBufSize)
436
+ {
437
+ CLzma2Dec_Spec *spec = (CLzma2Dec_Spec *)p->p;
438
+ if ((spec->outBufMode && !outBuf) || (!spec->outBufMode && outBuf))
439
+ return SZ_ERROR_FAIL;
440
+ if (outBuf)
441
+ {
442
+ spec->decoder.decoder.dic = outBuf;
443
+ spec->decoder.decoder.dicBufSize = outBufSize;
444
+ }
445
+ return SZ_OK;
446
+ }
447
+
448
+
449
+
450
+ static void MixCoder_Construct(CMixCoder *p, ISzAllocPtr alloc)
451
+ {
452
+ unsigned i;
453
+ p->alloc = alloc;
454
+ p->buf = NULL;
455
+ p->numCoders = 0;
456
+
457
+ p->outBufSize = 0;
458
+ p->outBuf = NULL;
459
+ // p->SingleBufMode = False;
460
+
461
+ for (i = 0; i < MIXCODER_NUM_FILTERS_MAX; i++)
462
+ p->coders[i].p = NULL;
463
+ }
464
+
465
+
466
+ static void MixCoder_Free(CMixCoder *p)
467
+ {
468
+ unsigned i;
469
+ p->numCoders = 0;
470
+ for (i = 0; i < MIXCODER_NUM_FILTERS_MAX; i++)
471
+ {
472
+ IStateCoder *sc = &p->coders[i];
473
+ if (sc->p)
474
+ {
475
+ sc->Free(sc->p, p->alloc);
476
+ sc->p = NULL;
477
+ }
478
+ }
479
+ if (p->buf)
480
+ {
481
+ ISzAlloc_Free(p->alloc, p->buf);
482
+ p->buf = NULL; /* 9.31: the BUG was fixed */
483
+ }
484
+ }
485
+
486
+ static void MixCoder_Init(CMixCoder *p)
487
+ {
488
+ unsigned i;
489
+ for (i = 0; i < MIXCODER_NUM_FILTERS_MAX - 1; i++)
490
+ {
491
+ p->size[i] = 0;
492
+ p->pos[i] = 0;
493
+ p->finished[i] = 0;
494
+ }
495
+ for (i = 0; i < p->numCoders; i++)
496
+ {
497
+ IStateCoder *coder = &p->coders[i];
498
+ coder->Init(coder->p);
499
+ p->results[i] = SZ_OK;
500
+ }
501
+ p->outWritten = 0;
502
+ p->wasFinished = False;
503
+ p->res = SZ_OK;
504
+ p->status = CODER_STATUS_NOT_SPECIFIED;
505
+ }
506
+
507
+
508
+ static SRes MixCoder_SetFromMethod(CMixCoder *p, unsigned coderIndex, UInt64 methodId, Byte *outBuf, size_t outBufSize)
509
+ {
510
+ IStateCoder *sc = &p->coders[coderIndex];
511
+ p->ids[coderIndex] = methodId;
512
+ switch (methodId)
513
+ {
514
+ case XZ_ID_LZMA2: return Lzma2State_SetFromMethod(sc, outBuf, outBufSize, p->alloc);
515
+ #ifdef USE_SUBBLOCK
516
+ case XZ_ID_Subblock: return SbState_SetFromMethod(sc, p->alloc);
517
+ #endif
518
+ }
519
+ if (coderIndex == 0)
520
+ return SZ_ERROR_UNSUPPORTED;
521
+ return BraState_SetFromMethod(sc, methodId, 0, p->alloc);
522
+ }
523
+
524
+
525
+ static SRes MixCoder_ResetFromMethod(CMixCoder *p, unsigned coderIndex, UInt64 methodId, Byte *outBuf, size_t outBufSize)
526
+ {
527
+ IStateCoder *sc = &p->coders[coderIndex];
528
+ switch (methodId)
529
+ {
530
+ case XZ_ID_LZMA2: return Lzma2State_ResetOutBuf(sc, outBuf, outBufSize);
531
+ }
532
+ return SZ_ERROR_UNSUPPORTED;
533
+ }
534
+
535
+
536
+
537
+ /*
538
+ if (destFinish) - then unpack data block is finished at (*destLen) position,
539
+ and we can return data that were not processed by filter
540
+
541
+ output (status) can be :
542
+ CODER_STATUS_NOT_FINISHED
543
+ CODER_STATUS_FINISHED_WITH_MARK
544
+ CODER_STATUS_NEEDS_MORE_INPUT - not implemented still
545
+ */
546
+
547
+ static SRes MixCoder_Code(CMixCoder *p,
548
+ Byte *dest, SizeT *destLen, int destFinish,
549
+ const Byte *src, SizeT *srcLen, int srcWasFinished,
550
+ ECoderFinishMode finishMode)
551
+ {
552
+ SizeT destLenOrig = *destLen;
553
+ SizeT srcLenOrig = *srcLen;
554
+
555
+ *destLen = 0;
556
+ *srcLen = 0;
557
+
558
+ if (p->wasFinished)
559
+ return p->res;
560
+
561
+ p->status = CODER_STATUS_NOT_FINISHED;
562
+
563
+ // if (p->SingleBufMode)
564
+ if (p->outBuf)
565
+ {
566
+ SRes res;
567
+ SizeT destLen2, srcLen2;
568
+ int wasFinished;
569
+
570
+ PRF_STR("------- MixCoder Single ----------");
571
+
572
+ srcLen2 = srcLenOrig;
573
+ destLen2 = destLenOrig;
574
+
575
+ {
576
+ IStateCoder *coder = &p->coders[0];
577
+ res = coder->Code2(coder->p, NULL, &destLen2, src, &srcLen2, srcWasFinished, finishMode,
578
+ // &wasFinished,
579
+ &p->status);
580
+ wasFinished = (p->status == CODER_STATUS_FINISHED_WITH_MARK);
581
+ }
582
+
583
+ p->res = res;
584
+
585
+ /*
586
+ if (wasFinished)
587
+ p->status = CODER_STATUS_FINISHED_WITH_MARK;
588
+ else
589
+ {
590
+ if (res == SZ_OK)
591
+ if (destLen2 != destLenOrig)
592
+ p->status = CODER_STATUS_NEEDS_MORE_INPUT;
593
+ }
594
+ */
595
+
596
+
597
+ *srcLen = srcLen2;
598
+ src += srcLen2;
599
+ p->outWritten += destLen2;
600
+
601
+ if (res != SZ_OK || srcWasFinished || wasFinished)
602
+ p->wasFinished = True;
603
+
604
+ if (p->numCoders == 1)
605
+ *destLen = destLen2;
606
+ else if (p->wasFinished)
607
+ {
608
+ unsigned i;
609
+ size_t processed = p->outWritten;
610
+
611
+ for (i = 1; i < p->numCoders; i++)
612
+ {
613
+ IStateCoder *coder = &p->coders[i];
614
+ processed = coder->Filter(coder->p, p->outBuf, processed);
615
+ if (wasFinished || (destFinish && p->outWritten == destLenOrig))
616
+ processed = p->outWritten;
617
+ PRF_STR_INT("filter", i);
618
+ }
619
+ *destLen = processed;
620
+ }
621
+ return res;
622
+ }
623
+
624
+ PRF_STR("standard mix");
625
+
626
+ if (p->numCoders != 1)
627
+ {
628
+ if (!p->buf)
629
+ {
630
+ p->buf = (Byte *)ISzAlloc_Alloc(p->alloc, CODER_BUF_SIZE * (MIXCODER_NUM_FILTERS_MAX - 1));
631
+ if (!p->buf)
632
+ return SZ_ERROR_MEM;
633
+ }
634
+
635
+ finishMode = CODER_FINISH_ANY;
636
+ }
637
+
638
+ for (;;)
639
+ {
640
+ BoolInt processed = False;
641
+ BoolInt allFinished = True;
642
+ SRes resMain = SZ_OK;
643
+ unsigned i;
644
+
645
+ p->status = CODER_STATUS_NOT_FINISHED;
646
+ /*
647
+ if (p->numCoders == 1 && *destLen == destLenOrig && finishMode == LZMA_FINISH_ANY)
648
+ break;
649
+ */
650
+
651
+ for (i = 0; i < p->numCoders; i++)
652
+ {
653
+ SRes res;
654
+ IStateCoder *coder = &p->coders[i];
655
+ Byte *dest2;
656
+ SizeT destLen2, srcLen2; // destLen2_Orig;
657
+ const Byte *src2;
658
+ int srcFinished2;
659
+ int encodingWasFinished;
660
+ ECoderStatus status2;
661
+
662
+ if (i == 0)
663
+ {
664
+ src2 = src;
665
+ srcLen2 = srcLenOrig - *srcLen;
666
+ srcFinished2 = srcWasFinished;
667
+ }
668
+ else
669
+ {
670
+ size_t k = i - 1;
671
+ src2 = p->buf + (CODER_BUF_SIZE * k) + p->pos[k];
672
+ srcLen2 = p->size[k] - p->pos[k];
673
+ srcFinished2 = p->finished[k];
674
+ }
675
+
676
+ if (i == p->numCoders - 1)
677
+ {
678
+ dest2 = dest;
679
+ destLen2 = destLenOrig - *destLen;
680
+ }
681
+ else
682
+ {
683
+ if (p->pos[i] != p->size[i])
684
+ continue;
685
+ dest2 = p->buf + (CODER_BUF_SIZE * i);
686
+ destLen2 = CODER_BUF_SIZE;
687
+ }
688
+
689
+ // destLen2_Orig = destLen2;
690
+
691
+ if (p->results[i] != SZ_OK)
692
+ {
693
+ if (resMain == SZ_OK)
694
+ resMain = p->results[i];
695
+ continue;
696
+ }
697
+
698
+ res = coder->Code2(coder->p,
699
+ dest2, &destLen2,
700
+ src2, &srcLen2, srcFinished2,
701
+ finishMode,
702
+ // &encodingWasFinished,
703
+ &status2);
704
+
705
+ if (res != SZ_OK)
706
+ {
707
+ p->results[i] = res;
708
+ if (resMain == SZ_OK)
709
+ resMain = res;
710
+ }
711
+
712
+ encodingWasFinished = (status2 == CODER_STATUS_FINISHED_WITH_MARK);
713
+
714
+ if (!encodingWasFinished)
715
+ {
716
+ allFinished = False;
717
+ if (p->numCoders == 1 && res == SZ_OK)
718
+ p->status = status2;
719
+ }
720
+
721
+ if (i == 0)
722
+ {
723
+ *srcLen += srcLen2;
724
+ src += srcLen2;
725
+ }
726
+ else
727
+ p->pos[(size_t)i - 1] += srcLen2;
728
+
729
+ if (i == p->numCoders - 1)
730
+ {
731
+ *destLen += destLen2;
732
+ dest += destLen2;
733
+ }
734
+ else
735
+ {
736
+ p->size[i] = destLen2;
737
+ p->pos[i] = 0;
738
+ p->finished[i] = encodingWasFinished;
739
+ }
740
+
741
+ if (destLen2 != 0 || srcLen2 != 0)
742
+ processed = True;
743
+ }
744
+
745
+ if (!processed)
746
+ {
747
+ if (allFinished)
748
+ p->status = CODER_STATUS_FINISHED_WITH_MARK;
749
+ return resMain;
750
+ }
751
+ }
752
+ }
753
+
754
+
755
+ SRes Xz_ParseHeader(CXzStreamFlags *p, const Byte *buf)
756
+ {
757
+ *p = (CXzStreamFlags)GetBe16(buf + XZ_SIG_SIZE);
758
+ if (CrcCalc(buf + XZ_SIG_SIZE, XZ_STREAM_FLAGS_SIZE) !=
759
+ GetUi32(buf + XZ_SIG_SIZE + XZ_STREAM_FLAGS_SIZE))
760
+ return SZ_ERROR_NO_ARCHIVE;
761
+ return XzFlags_IsSupported(*p) ? SZ_OK : SZ_ERROR_UNSUPPORTED;
762
+ }
763
+
764
+ static BoolInt Xz_CheckFooter(CXzStreamFlags flags, UInt64 indexSize, const Byte *buf)
765
+ {
766
+ return indexSize == (((UInt64)GetUi32(buf + 4) + 1) << 2)
767
+ && GetUi32(buf) == CrcCalc(buf + 4, 6)
768
+ && flags == GetBe16(buf + 8)
769
+ && buf[10] == XZ_FOOTER_SIG_0
770
+ && buf[11] == XZ_FOOTER_SIG_1;
771
+ }
772
+
773
+ #define READ_VARINT_AND_CHECK(buf, pos, size, res) \
774
+ { unsigned s = Xz_ReadVarInt(buf + pos, size - pos, res); \
775
+ if (s == 0) return SZ_ERROR_ARCHIVE; pos += s; }
776
+
777
+
778
+ static BoolInt XzBlock_AreSupportedFilters(const CXzBlock *p)
779
+ {
780
+ unsigned numFilters = XzBlock_GetNumFilters(p) - 1;
781
+ unsigned i;
782
+ {
783
+ const CXzFilter *f = &p->filters[numFilters];
784
+ if (f->id != XZ_ID_LZMA2 || f->propsSize != 1 || f->props[0] > 40)
785
+ return False;
786
+ }
787
+
788
+ for (i = 0; i < numFilters; i++)
789
+ {
790
+ const CXzFilter *f = &p->filters[i];
791
+ if (f->id == XZ_ID_Delta)
792
+ {
793
+ if (f->propsSize != 1)
794
+ return False;
795
+ }
796
+ else if (f->id < XZ_ID_Delta
797
+ || f->id > XZ_ID_SPARC
798
+ || (f->propsSize != 0 && f->propsSize != 4))
799
+ return False;
800
+ }
801
+ return True;
802
+ }
803
+
804
+
805
+ SRes XzBlock_Parse(CXzBlock *p, const Byte *header)
806
+ {
807
+ unsigned pos;
808
+ unsigned numFilters, i;
809
+ unsigned headerSize = (unsigned)header[0] << 2;
810
+
811
+ /* (headerSize != 0) : another code checks */
812
+
813
+ if (CrcCalc(header, headerSize) != GetUi32(header + headerSize))
814
+ return SZ_ERROR_ARCHIVE;
815
+
816
+ pos = 1;
817
+ p->flags = header[pos++];
818
+
819
+ p->packSize = (UInt64)(Int64)-1;
820
+ if (XzBlock_HasPackSize(p))
821
+ {
822
+ READ_VARINT_AND_CHECK(header, pos, headerSize, &p->packSize);
823
+ if (p->packSize == 0 || p->packSize + headerSize >= (UInt64)1 << 63)
824
+ return SZ_ERROR_ARCHIVE;
825
+ }
826
+
827
+ p->unpackSize = (UInt64)(Int64)-1;
828
+ if (XzBlock_HasUnpackSize(p))
829
+ READ_VARINT_AND_CHECK(header, pos, headerSize, &p->unpackSize);
830
+
831
+ numFilters = XzBlock_GetNumFilters(p);
832
+ for (i = 0; i < numFilters; i++)
833
+ {
834
+ CXzFilter *filter = p->filters + i;
835
+ UInt64 size;
836
+ READ_VARINT_AND_CHECK(header, pos, headerSize, &filter->id);
837
+ READ_VARINT_AND_CHECK(header, pos, headerSize, &size);
838
+ if (size > headerSize - pos || size > XZ_FILTER_PROPS_SIZE_MAX)
839
+ return SZ_ERROR_ARCHIVE;
840
+ filter->propsSize = (UInt32)size;
841
+ memcpy(filter->props, header + pos, (size_t)size);
842
+ pos += (unsigned)size;
843
+
844
+ #ifdef XZ_DUMP
845
+ printf("\nf[%u] = %2X: ", i, (unsigned)filter->id);
846
+ {
847
+ unsigned i;
848
+ for (i = 0; i < size; i++)
849
+ printf(" %2X", filter->props[i]);
850
+ }
851
+ #endif
852
+ }
853
+
854
+ if (XzBlock_HasUnsupportedFlags(p))
855
+ return SZ_ERROR_UNSUPPORTED;
856
+
857
+ while (pos < headerSize)
858
+ if (header[pos++] != 0)
859
+ return SZ_ERROR_ARCHIVE;
860
+ return SZ_OK;
861
+ }
862
+
863
+
864
+
865
+
866
+ static SRes XzDecMix_Init(CMixCoder *p, const CXzBlock *block, Byte *outBuf, size_t outBufSize)
867
+ {
868
+ unsigned i;
869
+ BoolInt needReInit = True;
870
+ unsigned numFilters = XzBlock_GetNumFilters(block);
871
+
872
+ if (numFilters == p->numCoders && ((p->outBuf && outBuf) || (!p->outBuf && !outBuf)))
873
+ {
874
+ needReInit = False;
875
+ for (i = 0; i < numFilters; i++)
876
+ if (p->ids[i] != block->filters[numFilters - 1 - i].id)
877
+ {
878
+ needReInit = True;
879
+ break;
880
+ }
881
+ }
882
+
883
+ // p->SingleBufMode = (outBuf != NULL);
884
+ p->outBuf = outBuf;
885
+ p->outBufSize = outBufSize;
886
+
887
+ // p->SingleBufMode = False;
888
+ // outBuf = NULL;
889
+
890
+ if (needReInit)
891
+ {
892
+ MixCoder_Free(p);
893
+ for (i = 0; i < numFilters; i++)
894
+ {
895
+ RINOK(MixCoder_SetFromMethod(p, i, block->filters[numFilters - 1 - i].id, outBuf, outBufSize));
896
+ }
897
+ p->numCoders = numFilters;
898
+ }
899
+ else
900
+ {
901
+ RINOK(MixCoder_ResetFromMethod(p, 0, block->filters[numFilters - 1].id, outBuf, outBufSize));
902
+ }
903
+
904
+ for (i = 0; i < numFilters; i++)
905
+ {
906
+ const CXzFilter *f = &block->filters[numFilters - 1 - i];
907
+ IStateCoder *sc = &p->coders[i];
908
+ RINOK(sc->SetProps(sc->p, f->props, f->propsSize, p->alloc));
909
+ }
910
+
911
+ MixCoder_Init(p);
912
+ return SZ_OK;
913
+ }
914
+
915
+
916
+
917
+ void XzUnpacker_Init(CXzUnpacker *p)
918
+ {
919
+ p->state = XZ_STATE_STREAM_HEADER;
920
+ p->pos = 0;
921
+ p->numStartedStreams = 0;
922
+ p->numFinishedStreams = 0;
923
+ p->numTotalBlocks = 0;
924
+ p->padSize = 0;
925
+ p->decodeOnlyOneBlock = 0;
926
+
927
+ p->parseMode = False;
928
+ p->decodeToStreamSignature = False;
929
+
930
+ // p->outBuf = NULL;
931
+ // p->outBufSize = 0;
932
+ p->outDataWritten = 0;
933
+ }
934
+
935
+
936
+ void XzUnpacker_SetOutBuf(CXzUnpacker *p, Byte *outBuf, size_t outBufSize)
937
+ {
938
+ p->outBuf = outBuf;
939
+ p->outBufSize = outBufSize;
940
+ }
941
+
942
+
943
+ void XzUnpacker_Construct(CXzUnpacker *p, ISzAllocPtr alloc)
944
+ {
945
+ MixCoder_Construct(&p->decoder, alloc);
946
+ p->outBuf = NULL;
947
+ p->outBufSize = 0;
948
+ XzUnpacker_Init(p);
949
+ }
950
+
951
+
952
+ void XzUnpacker_Free(CXzUnpacker *p)
953
+ {
954
+ MixCoder_Free(&p->decoder);
955
+ }
956
+
957
+
958
+ void XzUnpacker_PrepareToRandomBlockDecoding(CXzUnpacker *p)
959
+ {
960
+ p->indexSize = 0;
961
+ p->numBlocks = 0;
962
+ Sha256_Init(&p->sha);
963
+ p->state = XZ_STATE_BLOCK_HEADER;
964
+ p->pos = 0;
965
+ p->decodeOnlyOneBlock = 1;
966
+ }
967
+
968
+
969
+ static void XzUnpacker_UpdateIndex(CXzUnpacker *p, UInt64 packSize, UInt64 unpackSize)
970
+ {
971
+ Byte temp[32];
972
+ unsigned num = Xz_WriteVarInt(temp, packSize);
973
+ num += Xz_WriteVarInt(temp + num, unpackSize);
974
+ Sha256_Update(&p->sha, temp, num);
975
+ p->indexSize += num;
976
+ p->numBlocks++;
977
+ }
978
+
979
+
980
+
981
+ SRes XzUnpacker_Code(CXzUnpacker *p, Byte *dest, SizeT *destLen,
982
+ const Byte *src, SizeT *srcLen, int srcFinished,
983
+ ECoderFinishMode finishMode, ECoderStatus *status)
984
+ {
985
+ SizeT destLenOrig = *destLen;
986
+ SizeT srcLenOrig = *srcLen;
987
+ *destLen = 0;
988
+ *srcLen = 0;
989
+ *status = CODER_STATUS_NOT_SPECIFIED;
990
+
991
+ for (;;)
992
+ {
993
+ SizeT srcRem;
994
+
995
+ if (p->state == XZ_STATE_BLOCK)
996
+ {
997
+ SizeT destLen2 = destLenOrig - *destLen;
998
+ SizeT srcLen2 = srcLenOrig - *srcLen;
999
+ SRes res;
1000
+
1001
+ ECoderFinishMode finishMode2 = finishMode;
1002
+ BoolInt srcFinished2 = srcFinished;
1003
+ BoolInt destFinish = False;
1004
+
1005
+ if (p->block.packSize != (UInt64)(Int64)-1)
1006
+ {
1007
+ UInt64 rem = p->block.packSize - p->packSize;
1008
+ if (srcLen2 >= rem)
1009
+ {
1010
+ srcFinished2 = True;
1011
+ srcLen2 = (SizeT)rem;
1012
+ }
1013
+ if (rem == 0 && p->block.unpackSize == p->unpackSize)
1014
+ return SZ_ERROR_DATA;
1015
+ }
1016
+
1017
+ if (p->block.unpackSize != (UInt64)(Int64)-1)
1018
+ {
1019
+ UInt64 rem = p->block.unpackSize - p->unpackSize;
1020
+ if (destLen2 >= rem)
1021
+ {
1022
+ destFinish = True;
1023
+ finishMode2 = CODER_FINISH_END;
1024
+ destLen2 = (SizeT)rem;
1025
+ }
1026
+ }
1027
+
1028
+ /*
1029
+ if (srcLen2 == 0 && destLen2 == 0)
1030
+ {
1031
+ *status = CODER_STATUS_NOT_FINISHED;
1032
+ return SZ_OK;
1033
+ }
1034
+ */
1035
+
1036
+ {
1037
+ res = MixCoder_Code(&p->decoder,
1038
+ (p->outBuf ? NULL : dest), &destLen2, destFinish,
1039
+ src, &srcLen2, srcFinished2,
1040
+ finishMode2);
1041
+
1042
+ *status = p->decoder.status;
1043
+ XzCheck_Update(&p->check, (p->outBuf ? p->outBuf + p->outDataWritten : dest), destLen2);
1044
+ if (!p->outBuf)
1045
+ dest += destLen2;
1046
+ p->outDataWritten += destLen2;
1047
+ }
1048
+
1049
+ (*srcLen) += srcLen2;
1050
+ src += srcLen2;
1051
+ p->packSize += srcLen2;
1052
+ (*destLen) += destLen2;
1053
+ p->unpackSize += destLen2;
1054
+
1055
+ RINOK(res);
1056
+
1057
+ if (*status != CODER_STATUS_FINISHED_WITH_MARK)
1058
+ {
1059
+ if (p->block.packSize == p->packSize
1060
+ && *status == CODER_STATUS_NEEDS_MORE_INPUT)
1061
+ {
1062
+ PRF_STR("CODER_STATUS_NEEDS_MORE_INPUT");
1063
+ *status = CODER_STATUS_NOT_SPECIFIED;
1064
+ return SZ_ERROR_DATA;
1065
+ }
1066
+
1067
+ return SZ_OK;
1068
+ }
1069
+ {
1070
+ XzUnpacker_UpdateIndex(p, XzUnpacker_GetPackSizeForIndex(p), p->unpackSize);
1071
+ p->state = XZ_STATE_BLOCK_FOOTER;
1072
+ p->pos = 0;
1073
+ p->alignPos = 0;
1074
+ *status = CODER_STATUS_NOT_SPECIFIED;
1075
+
1076
+ if ((p->block.packSize != (UInt64)(Int64)-1 && p->block.packSize != p->packSize)
1077
+ || (p->block.unpackSize != (UInt64)(Int64)-1 && p->block.unpackSize != p->unpackSize))
1078
+ {
1079
+ PRF_STR("ERROR: block.size mismatch");
1080
+ return SZ_ERROR_DATA;
1081
+ }
1082
+ }
1083
+ // continue;
1084
+ }
1085
+
1086
+ srcRem = srcLenOrig - *srcLen;
1087
+
1088
+ // XZ_STATE_BLOCK_FOOTER can transit to XZ_STATE_BLOCK_HEADER without input bytes
1089
+ if (srcRem == 0 && p->state != XZ_STATE_BLOCK_FOOTER)
1090
+ {
1091
+ *status = CODER_STATUS_NEEDS_MORE_INPUT;
1092
+ return SZ_OK;
1093
+ }
1094
+
1095
+ switch (p->state)
1096
+ {
1097
+ case XZ_STATE_STREAM_HEADER:
1098
+ {
1099
+ if (p->pos < XZ_STREAM_HEADER_SIZE)
1100
+ {
1101
+ if (p->pos < XZ_SIG_SIZE && *src != XZ_SIG[p->pos])
1102
+ return SZ_ERROR_NO_ARCHIVE;
1103
+ if (p->decodeToStreamSignature)
1104
+ return SZ_OK;
1105
+ p->buf[p->pos++] = *src++;
1106
+ (*srcLen)++;
1107
+ }
1108
+ else
1109
+ {
1110
+ RINOK(Xz_ParseHeader(&p->streamFlags, p->buf));
1111
+ p->numStartedStreams++;
1112
+ p->indexSize = 0;
1113
+ p->numBlocks = 0;
1114
+ Sha256_Init(&p->sha);
1115
+ p->state = XZ_STATE_BLOCK_HEADER;
1116
+ p->pos = 0;
1117
+ }
1118
+ break;
1119
+ }
1120
+
1121
+ case XZ_STATE_BLOCK_HEADER:
1122
+ {
1123
+ if (p->pos == 0)
1124
+ {
1125
+ p->buf[p->pos++] = *src++;
1126
+ (*srcLen)++;
1127
+ if (p->buf[0] == 0)
1128
+ {
1129
+ if (p->decodeOnlyOneBlock)
1130
+ return SZ_ERROR_DATA;
1131
+ p->indexPreSize = 1 + Xz_WriteVarInt(p->buf + 1, p->numBlocks);
1132
+ p->indexPos = p->indexPreSize;
1133
+ p->indexSize += p->indexPreSize;
1134
+ Sha256_Final(&p->sha, p->shaDigest);
1135
+ Sha256_Init(&p->sha);
1136
+ p->crc = CrcUpdate(CRC_INIT_VAL, p->buf, p->indexPreSize);
1137
+ p->state = XZ_STATE_STREAM_INDEX;
1138
+ break;
1139
+ }
1140
+ p->blockHeaderSize = ((UInt32)p->buf[0] << 2) + 4;
1141
+ break;
1142
+ }
1143
+
1144
+ if (p->pos != p->blockHeaderSize)
1145
+ {
1146
+ UInt32 cur = p->blockHeaderSize - p->pos;
1147
+ if (cur > srcRem)
1148
+ cur = (UInt32)srcRem;
1149
+ memcpy(p->buf + p->pos, src, cur);
1150
+ p->pos += cur;
1151
+ (*srcLen) += cur;
1152
+ src += cur;
1153
+ }
1154
+ else
1155
+ {
1156
+ RINOK(XzBlock_Parse(&p->block, p->buf));
1157
+ if (!XzBlock_AreSupportedFilters(&p->block))
1158
+ return SZ_ERROR_UNSUPPORTED;
1159
+ p->numTotalBlocks++;
1160
+ p->state = XZ_STATE_BLOCK;
1161
+ p->packSize = 0;
1162
+ p->unpackSize = 0;
1163
+ XzCheck_Init(&p->check, XzFlags_GetCheckType(p->streamFlags));
1164
+ if (p->parseMode)
1165
+ {
1166
+ p->headerParsedOk = True;
1167
+ return SZ_OK;
1168
+ }
1169
+ RINOK(XzDecMix_Init(&p->decoder, &p->block, p->outBuf, p->outBufSize));
1170
+ }
1171
+ break;
1172
+ }
1173
+
1174
+ case XZ_STATE_BLOCK_FOOTER:
1175
+ {
1176
+ if ((((unsigned)p->packSize + p->alignPos) & 3) != 0)
1177
+ {
1178
+ if (srcRem == 0)
1179
+ {
1180
+ *status = CODER_STATUS_NEEDS_MORE_INPUT;
1181
+ return SZ_OK;
1182
+ }
1183
+ (*srcLen)++;
1184
+ p->alignPos++;
1185
+ if (*src++ != 0)
1186
+ return SZ_ERROR_CRC;
1187
+ }
1188
+ else
1189
+ {
1190
+ UInt32 checkSize = XzFlags_GetCheckSize(p->streamFlags);
1191
+ UInt32 cur = checkSize - p->pos;
1192
+ if (cur != 0)
1193
+ {
1194
+ if (srcRem == 0)
1195
+ {
1196
+ *status = CODER_STATUS_NEEDS_MORE_INPUT;
1197
+ return SZ_OK;
1198
+ }
1199
+ if (cur > srcRem)
1200
+ cur = (UInt32)srcRem;
1201
+ memcpy(p->buf + p->pos, src, cur);
1202
+ p->pos += cur;
1203
+ (*srcLen) += cur;
1204
+ src += cur;
1205
+ if (checkSize != p->pos)
1206
+ break;
1207
+ }
1208
+ {
1209
+ Byte digest[XZ_CHECK_SIZE_MAX];
1210
+ p->state = XZ_STATE_BLOCK_HEADER;
1211
+ p->pos = 0;
1212
+ if (XzCheck_Final(&p->check, digest) && memcmp(digest, p->buf, checkSize) != 0)
1213
+ return SZ_ERROR_CRC;
1214
+ if (p->decodeOnlyOneBlock)
1215
+ {
1216
+ *status = CODER_STATUS_FINISHED_WITH_MARK;
1217
+ return SZ_OK;
1218
+ }
1219
+ }
1220
+ }
1221
+ break;
1222
+ }
1223
+
1224
+ case XZ_STATE_STREAM_INDEX:
1225
+ {
1226
+ if (p->pos < p->indexPreSize)
1227
+ {
1228
+ (*srcLen)++;
1229
+ if (*src++ != p->buf[p->pos++])
1230
+ return SZ_ERROR_CRC;
1231
+ }
1232
+ else
1233
+ {
1234
+ if (p->indexPos < p->indexSize)
1235
+ {
1236
+ UInt64 cur = p->indexSize - p->indexPos;
1237
+ if (srcRem > cur)
1238
+ srcRem = (SizeT)cur;
1239
+ p->crc = CrcUpdate(p->crc, src, srcRem);
1240
+ Sha256_Update(&p->sha, src, srcRem);
1241
+ (*srcLen) += srcRem;
1242
+ src += srcRem;
1243
+ p->indexPos += srcRem;
1244
+ }
1245
+ else if ((p->indexPos & 3) != 0)
1246
+ {
1247
+ Byte b = *src++;
1248
+ p->crc = CRC_UPDATE_BYTE(p->crc, b);
1249
+ (*srcLen)++;
1250
+ p->indexPos++;
1251
+ p->indexSize++;
1252
+ if (b != 0)
1253
+ return SZ_ERROR_CRC;
1254
+ }
1255
+ else
1256
+ {
1257
+ Byte digest[SHA256_DIGEST_SIZE];
1258
+ p->state = XZ_STATE_STREAM_INDEX_CRC;
1259
+ p->indexSize += 4;
1260
+ p->pos = 0;
1261
+ Sha256_Final(&p->sha, digest);
1262
+ if (memcmp(digest, p->shaDigest, SHA256_DIGEST_SIZE) != 0)
1263
+ return SZ_ERROR_CRC;
1264
+ }
1265
+ }
1266
+ break;
1267
+ }
1268
+
1269
+ case XZ_STATE_STREAM_INDEX_CRC:
1270
+ {
1271
+ if (p->pos < 4)
1272
+ {
1273
+ (*srcLen)++;
1274
+ p->buf[p->pos++] = *src++;
1275
+ }
1276
+ else
1277
+ {
1278
+ p->state = XZ_STATE_STREAM_FOOTER;
1279
+ p->pos = 0;
1280
+ if (CRC_GET_DIGEST(p->crc) != GetUi32(p->buf))
1281
+ return SZ_ERROR_CRC;
1282
+ }
1283
+ break;
1284
+ }
1285
+
1286
+ case XZ_STATE_STREAM_FOOTER:
1287
+ {
1288
+ UInt32 cur = XZ_STREAM_FOOTER_SIZE - p->pos;
1289
+ if (cur > srcRem)
1290
+ cur = (UInt32)srcRem;
1291
+ memcpy(p->buf + p->pos, src, cur);
1292
+ p->pos += cur;
1293
+ (*srcLen) += cur;
1294
+ src += cur;
1295
+ if (p->pos == XZ_STREAM_FOOTER_SIZE)
1296
+ {
1297
+ p->state = XZ_STATE_STREAM_PADDING;
1298
+ p->numFinishedStreams++;
1299
+ p->padSize = 0;
1300
+ if (!Xz_CheckFooter(p->streamFlags, p->indexSize, p->buf))
1301
+ return SZ_ERROR_CRC;
1302
+ }
1303
+ break;
1304
+ }
1305
+
1306
+ case XZ_STATE_STREAM_PADDING:
1307
+ {
1308
+ if (*src != 0)
1309
+ {
1310
+ if (((UInt32)p->padSize & 3) != 0)
1311
+ return SZ_ERROR_NO_ARCHIVE;
1312
+ p->pos = 0;
1313
+ p->state = XZ_STATE_STREAM_HEADER;
1314
+ }
1315
+ else
1316
+ {
1317
+ (*srcLen)++;
1318
+ src++;
1319
+ p->padSize++;
1320
+ }
1321
+ break;
1322
+ }
1323
+
1324
+ case XZ_STATE_BLOCK: break; /* to disable GCC warning */
1325
+ }
1326
+ }
1327
+ /*
1328
+ if (p->state == XZ_STATE_FINISHED)
1329
+ *status = CODER_STATUS_FINISHED_WITH_MARK;
1330
+ return SZ_OK;
1331
+ */
1332
+ }
1333
+
1334
+
1335
+ SRes XzUnpacker_CodeFull(CXzUnpacker *p, Byte *dest, SizeT *destLen,
1336
+ const Byte *src, SizeT *srcLen,
1337
+ ECoderFinishMode finishMode, ECoderStatus *status)
1338
+ {
1339
+ XzUnpacker_Init(p);
1340
+ XzUnpacker_SetOutBuf(p, dest, *destLen);
1341
+
1342
+ return XzUnpacker_Code(p,
1343
+ NULL, destLen,
1344
+ src, srcLen, True,
1345
+ finishMode, status);
1346
+ }
1347
+
1348
+
1349
+ BoolInt XzUnpacker_IsBlockFinished(const CXzUnpacker *p)
1350
+ {
1351
+ return (p->state == XZ_STATE_BLOCK_HEADER) && (p->pos == 0);
1352
+ }
1353
+
1354
+ BoolInt XzUnpacker_IsStreamWasFinished(const CXzUnpacker *p)
1355
+ {
1356
+ return (p->state == XZ_STATE_STREAM_PADDING) && (((UInt32)p->padSize & 3) == 0);
1357
+ }
1358
+
1359
+ UInt64 XzUnpacker_GetExtraSize(const CXzUnpacker *p)
1360
+ {
1361
+ UInt64 num = 0;
1362
+ if (p->state == XZ_STATE_STREAM_PADDING)
1363
+ num = p->padSize;
1364
+ else if (p->state == XZ_STATE_STREAM_HEADER)
1365
+ num = p->padSize + p->pos;
1366
+ return num;
1367
+ }
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+ #ifndef _7ZIP_ST
1390
+ #include "MtDec.h"
1391
+ #endif
1392
+
1393
+
1394
+ void XzDecMtProps_Init(CXzDecMtProps *p)
1395
+ {
1396
+ p->inBufSize_ST = 1 << 18;
1397
+ p->outStep_ST = 1 << 20;
1398
+ p->ignoreErrors = False;
1399
+
1400
+ #ifndef _7ZIP_ST
1401
+ p->numThreads = 1;
1402
+ p->inBufSize_MT = 1 << 18;
1403
+ p->memUseMax = sizeof(size_t) << 28;
1404
+ #endif
1405
+ }
1406
+
1407
+
1408
+
1409
+ #ifndef _7ZIP_ST
1410
+
1411
+ /* ---------- CXzDecMtThread ---------- */
1412
+
1413
+ typedef struct
1414
+ {
1415
+ Byte *outBuf;
1416
+ size_t outBufSize;
1417
+ size_t outPreSize;
1418
+ size_t inPreSize;
1419
+ size_t inPreHeaderSize;
1420
+ size_t blockPackSize_for_Index; // including block header and checksum.
1421
+ size_t blockPackTotal; // including stream header, block header and checksum.
1422
+ size_t inCodeSize;
1423
+ size_t outCodeSize;
1424
+ ECoderStatus status;
1425
+ SRes codeRes;
1426
+ BoolInt skipMode;
1427
+ // BoolInt finishedWithMark;
1428
+ EMtDecParseState parseState;
1429
+ BoolInt parsing_Truncated;
1430
+ BoolInt atBlockHeader;
1431
+ CXzStreamFlags streamFlags;
1432
+ // UInt64 numFinishedStreams
1433
+ UInt64 numStreams;
1434
+ UInt64 numTotalBlocks;
1435
+ UInt64 numBlocks;
1436
+
1437
+ BoolInt dec_created;
1438
+ CXzUnpacker dec;
1439
+
1440
+ Byte mtPad[1 << 7];
1441
+ } CXzDecMtThread;
1442
+
1443
+ #endif
1444
+
1445
+
1446
+ /* ---------- CXzDecMt ---------- */
1447
+
1448
+ typedef struct
1449
+ {
1450
+ CAlignOffsetAlloc alignOffsetAlloc;
1451
+ ISzAllocPtr allocMid;
1452
+
1453
+ CXzDecMtProps props;
1454
+ size_t unpackBlockMaxSize;
1455
+
1456
+ ISeqInStream *inStream;
1457
+ ISeqOutStream *outStream;
1458
+ ICompressProgress *progress;
1459
+ // CXzStatInfo *stat;
1460
+
1461
+ BoolInt finishMode;
1462
+ BoolInt outSize_Defined;
1463
+ UInt64 outSize;
1464
+
1465
+ UInt64 outProcessed;
1466
+ UInt64 inProcessed;
1467
+ UInt64 readProcessed;
1468
+ BoolInt readWasFinished;
1469
+ SRes readRes;
1470
+ SRes writeRes;
1471
+
1472
+ Byte *outBuf;
1473
+ size_t outBufSize;
1474
+ Byte *inBuf;
1475
+ size_t inBufSize;
1476
+
1477
+ CXzUnpacker dec;
1478
+
1479
+ ECoderStatus status;
1480
+ SRes codeRes;
1481
+
1482
+ #ifndef _7ZIP_ST
1483
+ BoolInt mainDecoderWasCalled;
1484
+ // int statErrorDefined;
1485
+ int finishedDecoderIndex;
1486
+
1487
+ // global values that are used in Parse stage
1488
+ CXzStreamFlags streamFlags;
1489
+ // UInt64 numFinishedStreams
1490
+ UInt64 numStreams;
1491
+ UInt64 numTotalBlocks;
1492
+ UInt64 numBlocks;
1493
+
1494
+ // UInt64 numBadBlocks;
1495
+ SRes mainErrorCode;
1496
+
1497
+ BoolInt isBlockHeaderState_Parse;
1498
+ BoolInt isBlockHeaderState_Write;
1499
+ UInt64 outProcessed_Parse;
1500
+ BoolInt parsing_Truncated;
1501
+
1502
+ BoolInt mtc_WasConstructed;
1503
+ CMtDec mtc;
1504
+ CXzDecMtThread coders[MTDEC__THREADS_MAX];
1505
+ #endif
1506
+
1507
+ } CXzDecMt;
1508
+
1509
+
1510
+
1511
+ CXzDecMtHandle XzDecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid)
1512
+ {
1513
+ CXzDecMt *p = (CXzDecMt *)ISzAlloc_Alloc(alloc, sizeof(CXzDecMt));
1514
+ if (!p)
1515
+ return NULL;
1516
+
1517
+ AlignOffsetAlloc_CreateVTable(&p->alignOffsetAlloc);
1518
+ p->alignOffsetAlloc.baseAlloc = alloc;
1519
+ p->alignOffsetAlloc.numAlignBits = 7;
1520
+ p->alignOffsetAlloc.offset = 0;
1521
+
1522
+ p->allocMid = allocMid;
1523
+
1524
+ p->outBuf = NULL;
1525
+ p->outBufSize = 0;
1526
+ p->inBuf = NULL;
1527
+ p->inBufSize = 0;
1528
+
1529
+ XzUnpacker_Construct(&p->dec, &p->alignOffsetAlloc.vt);
1530
+
1531
+ p->unpackBlockMaxSize = 0;
1532
+
1533
+ XzDecMtProps_Init(&p->props);
1534
+
1535
+ #ifndef _7ZIP_ST
1536
+ p->mtc_WasConstructed = False;
1537
+ {
1538
+ unsigned i;
1539
+ for (i = 0; i < MTDEC__THREADS_MAX; i++)
1540
+ {
1541
+ CXzDecMtThread *coder = &p->coders[i];
1542
+ coder->dec_created = False;
1543
+ coder->outBuf = NULL;
1544
+ coder->outBufSize = 0;
1545
+ }
1546
+ }
1547
+ #endif
1548
+
1549
+ return p;
1550
+ }
1551
+
1552
+
1553
+ #ifndef _7ZIP_ST
1554
+
1555
+ static void XzDecMt_FreeOutBufs(CXzDecMt *p)
1556
+ {
1557
+ unsigned i;
1558
+ for (i = 0; i < MTDEC__THREADS_MAX; i++)
1559
+ {
1560
+ CXzDecMtThread *coder = &p->coders[i];
1561
+ if (coder->outBuf)
1562
+ {
1563
+ ISzAlloc_Free(p->allocMid, coder->outBuf);
1564
+ coder->outBuf = NULL;
1565
+ coder->outBufSize = 0;
1566
+ }
1567
+ }
1568
+ p->unpackBlockMaxSize = 0;
1569
+ }
1570
+
1571
+ #endif
1572
+
1573
+
1574
+
1575
+ static void XzDecMt_FreeSt(CXzDecMt *p)
1576
+ {
1577
+ XzUnpacker_Free(&p->dec);
1578
+
1579
+ if (p->outBuf)
1580
+ {
1581
+ ISzAlloc_Free(p->allocMid, p->outBuf);
1582
+ p->outBuf = NULL;
1583
+ }
1584
+ p->outBufSize = 0;
1585
+
1586
+ if (p->inBuf)
1587
+ {
1588
+ ISzAlloc_Free(p->allocMid, p->inBuf);
1589
+ p->inBuf = NULL;
1590
+ }
1591
+ p->inBufSize = 0;
1592
+ }
1593
+
1594
+
1595
+ void XzDecMt_Destroy(CXzDecMtHandle pp)
1596
+ {
1597
+ CXzDecMt *p = (CXzDecMt *)pp;
1598
+
1599
+ XzDecMt_FreeSt(p);
1600
+
1601
+ #ifndef _7ZIP_ST
1602
+
1603
+ if (p->mtc_WasConstructed)
1604
+ {
1605
+ MtDec_Destruct(&p->mtc);
1606
+ p->mtc_WasConstructed = False;
1607
+ }
1608
+ {
1609
+ unsigned i;
1610
+ for (i = 0; i < MTDEC__THREADS_MAX; i++)
1611
+ {
1612
+ CXzDecMtThread *t = &p->coders[i];
1613
+ if (t->dec_created)
1614
+ {
1615
+ // we don't need to free dict here
1616
+ XzUnpacker_Free(&t->dec);
1617
+ t->dec_created = False;
1618
+ }
1619
+ }
1620
+ }
1621
+ XzDecMt_FreeOutBufs(p);
1622
+
1623
+ #endif
1624
+
1625
+ ISzAlloc_Free(p->alignOffsetAlloc.baseAlloc, pp);
1626
+ }
1627
+
1628
+
1629
+
1630
+ #ifndef _7ZIP_ST
1631
+
1632
+ static void XzDecMt_Callback_Parse(void *obj, unsigned coderIndex, CMtDecCallbackInfo *cc)
1633
+ {
1634
+ CXzDecMt *me = (CXzDecMt *)obj;
1635
+ CXzDecMtThread *coder = &me->coders[coderIndex];
1636
+ size_t srcSize = cc->srcSize;
1637
+
1638
+ cc->srcSize = 0;
1639
+ cc->outPos = 0;
1640
+ cc->state = MTDEC_PARSE_CONTINUE;
1641
+
1642
+ cc->canCreateNewThread = True;
1643
+
1644
+ if (cc->startCall)
1645
+ {
1646
+ coder->outPreSize = 0;
1647
+ coder->inPreSize = 0;
1648
+ coder->inPreHeaderSize = 0;
1649
+ coder->parseState = MTDEC_PARSE_CONTINUE;
1650
+ coder->parsing_Truncated = False;
1651
+ coder->skipMode = False;
1652
+ coder->codeRes = SZ_OK;
1653
+ coder->status = CODER_STATUS_NOT_SPECIFIED;
1654
+ coder->inCodeSize = 0;
1655
+ coder->outCodeSize = 0;
1656
+
1657
+ coder->numStreams = me->numStreams;
1658
+ coder->numTotalBlocks = me->numTotalBlocks;
1659
+ coder->numBlocks = me->numBlocks;
1660
+
1661
+ if (!coder->dec_created)
1662
+ {
1663
+ XzUnpacker_Construct(&coder->dec, &me->alignOffsetAlloc.vt);
1664
+ coder->dec_created = True;
1665
+ }
1666
+
1667
+ XzUnpacker_Init(&coder->dec);
1668
+
1669
+ if (me->isBlockHeaderState_Parse)
1670
+ {
1671
+ coder->dec.streamFlags = me->streamFlags;
1672
+ coder->atBlockHeader = True;
1673
+ XzUnpacker_PrepareToRandomBlockDecoding(&coder->dec);
1674
+ }
1675
+ else
1676
+ {
1677
+ coder->atBlockHeader = False;
1678
+ me->isBlockHeaderState_Parse = True;
1679
+ }
1680
+
1681
+ coder->dec.numStartedStreams = me->numStreams;
1682
+ coder->dec.numTotalBlocks = me->numTotalBlocks;
1683
+ coder->dec.numBlocks = me->numBlocks;
1684
+ }
1685
+
1686
+ while (!coder->skipMode)
1687
+ {
1688
+ ECoderStatus status;
1689
+ SRes res;
1690
+ size_t srcSize2 = srcSize;
1691
+ size_t destSize = (size_t)0 - 1;
1692
+
1693
+ coder->dec.parseMode = True;
1694
+ coder->dec.headerParsedOk = False;
1695
+
1696
+ PRF_STR_INT("Parse", srcSize2);
1697
+
1698
+ res = XzUnpacker_Code(&coder->dec,
1699
+ NULL, &destSize,
1700
+ cc->src, &srcSize2, cc->srcFinished,
1701
+ CODER_FINISH_END, &status);
1702
+
1703
+ // PRF(printf(" res = %d, srcSize2 = %d", res, (unsigned)srcSize2));
1704
+
1705
+ coder->codeRes = res;
1706
+ coder->status = status;
1707
+ cc->srcSize += srcSize2;
1708
+ srcSize -= srcSize2;
1709
+ coder->inPreHeaderSize += srcSize2;
1710
+ coder->inPreSize = coder->inPreHeaderSize;
1711
+
1712
+ if (res != SZ_OK)
1713
+ {
1714
+ cc->state =
1715
+ coder->parseState = MTDEC_PARSE_END;
1716
+ /*
1717
+ if (res == SZ_ERROR_MEM)
1718
+ return res;
1719
+ return SZ_OK;
1720
+ */
1721
+ return; // res;
1722
+ }
1723
+
1724
+ if (coder->dec.headerParsedOk)
1725
+ {
1726
+ const CXzBlock *block = &coder->dec.block;
1727
+ if (XzBlock_HasUnpackSize(block)
1728
+ // && block->unpackSize <= me->props.outBlockMax
1729
+ && XzBlock_HasPackSize(block))
1730
+ {
1731
+ {
1732
+ if (block->unpackSize * 2 * me->mtc.numStartedThreads > me->props.memUseMax)
1733
+ {
1734
+ cc->state = MTDEC_PARSE_OVERFLOW;
1735
+ return; // SZ_OK;
1736
+ }
1737
+ }
1738
+ {
1739
+ UInt64 packSize = block->packSize;
1740
+ UInt64 packSizeAligned = packSize + ((0 - (unsigned)packSize) & 3);
1741
+ UInt32 checkSize = XzFlags_GetCheckSize(coder->dec.streamFlags);
1742
+ UInt64 blockPackSum = coder->inPreSize + packSizeAligned + checkSize;
1743
+ // if (blockPackSum <= me->props.inBlockMax)
1744
+ // unpackBlockMaxSize
1745
+ {
1746
+ coder->blockPackSize_for_Index = (size_t)(coder->dec.blockHeaderSize + packSize + checkSize);
1747
+ coder->blockPackTotal = (size_t)blockPackSum;
1748
+ coder->outPreSize = (size_t)block->unpackSize;
1749
+ coder->streamFlags = coder->dec.streamFlags;
1750
+ me->streamFlags = coder->dec.streamFlags;
1751
+ coder->skipMode = True;
1752
+ break;
1753
+ }
1754
+ }
1755
+ }
1756
+ }
1757
+ else
1758
+ // if (coder->inPreSize <= me->props.inBlockMax)
1759
+ {
1760
+ if (!cc->srcFinished)
1761
+ return; // SZ_OK;
1762
+ cc->state =
1763
+ coder->parseState = MTDEC_PARSE_END;
1764
+ return; // SZ_OK;
1765
+ }
1766
+ cc->state = MTDEC_PARSE_OVERFLOW;
1767
+ return; // SZ_OK;
1768
+ }
1769
+
1770
+ // ---------- skipMode ----------
1771
+ {
1772
+ UInt64 rem = coder->blockPackTotal - coder->inPreSize;
1773
+ size_t cur = srcSize;
1774
+ if (cur > rem)
1775
+ cur = (size_t)rem;
1776
+ cc->srcSize += cur;
1777
+ coder->inPreSize += cur;
1778
+ srcSize -= cur;
1779
+
1780
+ if (coder->inPreSize == coder->blockPackTotal)
1781
+ {
1782
+ if (srcSize == 0)
1783
+ {
1784
+ if (!cc->srcFinished)
1785
+ return; // SZ_OK;
1786
+ cc->state = MTDEC_PARSE_END;
1787
+ }
1788
+ else if ((cc->src)[cc->srcSize] == 0) // we check control byte of next block
1789
+ cc->state = MTDEC_PARSE_END;
1790
+ else
1791
+ {
1792
+ cc->state = MTDEC_PARSE_NEW;
1793
+
1794
+ {
1795
+ size_t blockMax = me->unpackBlockMaxSize;
1796
+ if (blockMax < coder->outPreSize)
1797
+ blockMax = coder->outPreSize;
1798
+ {
1799
+ UInt64 required = (UInt64)blockMax * (me->mtc.numStartedThreads + 1) * 2;
1800
+ if (me->props.memUseMax < required)
1801
+ cc->canCreateNewThread = False;
1802
+ }
1803
+ }
1804
+
1805
+ if (me->outSize_Defined)
1806
+ {
1807
+ // next block can be zero size
1808
+ const UInt64 rem2 = me->outSize - me->outProcessed_Parse;
1809
+ if (rem2 < coder->outPreSize)
1810
+ {
1811
+ coder->parsing_Truncated = True;
1812
+ cc->state = MTDEC_PARSE_END;
1813
+ }
1814
+ me->outProcessed_Parse += coder->outPreSize;
1815
+ }
1816
+ }
1817
+ }
1818
+ else if (cc->srcFinished)
1819
+ cc->state = MTDEC_PARSE_END;
1820
+ else
1821
+ return; // SZ_OK;
1822
+
1823
+ coder->parseState = cc->state;
1824
+ cc->outPos = coder->outPreSize;
1825
+
1826
+ me->numStreams = coder->dec.numStartedStreams;
1827
+ me->numTotalBlocks = coder->dec.numTotalBlocks;
1828
+ me->numBlocks = coder->dec.numBlocks + 1;
1829
+ return; // SZ_OK;
1830
+ }
1831
+ }
1832
+
1833
+
1834
+ static SRes XzDecMt_Callback_PreCode(void *pp, unsigned coderIndex)
1835
+ {
1836
+ CXzDecMt *me = (CXzDecMt *)pp;
1837
+ CXzDecMtThread *coder = &me->coders[coderIndex];
1838
+ Byte *dest;
1839
+
1840
+ if (!coder->dec.headerParsedOk)
1841
+ return SZ_OK;
1842
+
1843
+ dest = coder->outBuf;
1844
+
1845
+ if (!dest || coder->outBufSize < coder->outPreSize)
1846
+ {
1847
+ if (dest)
1848
+ {
1849
+ ISzAlloc_Free(me->allocMid, dest);
1850
+ coder->outBuf = NULL;
1851
+ coder->outBufSize = 0;
1852
+ }
1853
+ {
1854
+ size_t outPreSize = coder->outPreSize;
1855
+ if (outPreSize == 0)
1856
+ outPreSize = 1;
1857
+ dest = (Byte *)ISzAlloc_Alloc(me->allocMid, outPreSize);
1858
+ }
1859
+ if (!dest)
1860
+ return SZ_ERROR_MEM;
1861
+ coder->outBuf = dest;
1862
+ coder->outBufSize = coder->outPreSize;
1863
+
1864
+ if (coder->outBufSize > me->unpackBlockMaxSize)
1865
+ me->unpackBlockMaxSize = coder->outBufSize;
1866
+ }
1867
+
1868
+ // return SZ_ERROR_MEM;
1869
+
1870
+ XzUnpacker_SetOutBuf(&coder->dec, coder->outBuf, coder->outBufSize);
1871
+
1872
+ {
1873
+ SRes res = XzDecMix_Init(&coder->dec.decoder, &coder->dec.block, coder->outBuf, coder->outBufSize);
1874
+ // res = SZ_ERROR_UNSUPPORTED; // to test
1875
+ coder->codeRes = res;
1876
+ if (res != SZ_OK)
1877
+ {
1878
+ // if (res == SZ_ERROR_MEM) return res;
1879
+ if (me->props.ignoreErrors && res != SZ_ERROR_MEM)
1880
+ return S_OK;
1881
+ return res;
1882
+ }
1883
+ }
1884
+
1885
+ return SZ_OK;
1886
+ }
1887
+
1888
+
1889
+ static SRes XzDecMt_Callback_Code(void *pp, unsigned coderIndex,
1890
+ const Byte *src, size_t srcSize, int srcFinished,
1891
+ // int finished, int blockFinished,
1892
+ UInt64 *inCodePos, UInt64 *outCodePos, int *stop)
1893
+ {
1894
+ CXzDecMt *me = (CXzDecMt *)pp;
1895
+ CXzDecMtThread *coder = &me->coders[coderIndex];
1896
+
1897
+ *inCodePos = coder->inCodeSize;
1898
+ *outCodePos = coder->outCodeSize;
1899
+ *stop = True;
1900
+
1901
+ if (coder->inCodeSize < coder->inPreHeaderSize)
1902
+ {
1903
+ UInt64 rem = coder->inPreHeaderSize - coder->inCodeSize;
1904
+ size_t step = srcSize;
1905
+ if (step > rem)
1906
+ step = (size_t)rem;
1907
+ src += step;
1908
+ srcSize -= step;
1909
+ coder->inCodeSize += step;
1910
+ if (coder->inCodeSize < coder->inPreHeaderSize)
1911
+ {
1912
+ *stop = False;
1913
+ return SZ_OK;
1914
+ }
1915
+ }
1916
+
1917
+ if (!coder->dec.headerParsedOk)
1918
+ return SZ_OK;
1919
+ if (!coder->outBuf)
1920
+ return SZ_OK;
1921
+
1922
+ if (coder->codeRes == SZ_OK)
1923
+ {
1924
+ ECoderStatus status;
1925
+ SRes res;
1926
+ size_t srcProcessed = srcSize;
1927
+ size_t outSizeCur = coder->outPreSize - coder->dec.outDataWritten;
1928
+
1929
+ // PRF(printf("\nCallback_Code: Code %d %d\n", (unsigned)srcSize, (unsigned)outSizeCur));
1930
+
1931
+ res = XzUnpacker_Code(&coder->dec,
1932
+ NULL, &outSizeCur,
1933
+ src, &srcProcessed, srcFinished,
1934
+ // coder->finishedWithMark ? CODER_FINISH_END : CODER_FINISH_ANY,
1935
+ CODER_FINISH_END,
1936
+ &status);
1937
+
1938
+ // PRF(printf(" res = %d, srcSize2 = %d, outSizeCur = %d", res, (unsigned)srcProcessed, (unsigned)outSizeCur));
1939
+
1940
+ coder->codeRes = res;
1941
+ coder->status = status;
1942
+ coder->inCodeSize += srcProcessed;
1943
+ coder->outCodeSize = coder->dec.outDataWritten;
1944
+ *inCodePos = coder->inCodeSize;
1945
+ *outCodePos = coder->outCodeSize;
1946
+
1947
+ if (res == SZ_OK)
1948
+ {
1949
+ if (srcProcessed == srcSize)
1950
+ *stop = False;
1951
+ return SZ_OK;
1952
+ }
1953
+ }
1954
+
1955
+ if (me->props.ignoreErrors && coder->codeRes != SZ_ERROR_MEM)
1956
+ {
1957
+ *inCodePos = coder->inPreSize;
1958
+ *outCodePos = coder->outPreSize;
1959
+ return S_OK;
1960
+ }
1961
+ return coder->codeRes;
1962
+ }
1963
+
1964
+
1965
+ #define XZDECMT_STREAM_WRITE_STEP (1 << 24)
1966
+
1967
+ static SRes XzDecMt_Callback_Write(void *pp, unsigned coderIndex,
1968
+ BoolInt needWriteToStream,
1969
+ const Byte *src, size_t srcSize,
1970
+ // int srcFinished,
1971
+ BoolInt *needContinue,
1972
+ BoolInt *canRecode)
1973
+ {
1974
+ CXzDecMt *me = (CXzDecMt *)pp;
1975
+ const CXzDecMtThread *coder = &me->coders[coderIndex];
1976
+
1977
+ // PRF(printf("\nWrite processed = %d srcSize = %d\n", (unsigned)me->mtc.inProcessed, (unsigned)srcSize));
1978
+
1979
+ *needContinue = False;
1980
+ *canRecode = True;
1981
+
1982
+ if (!needWriteToStream)
1983
+ return SZ_OK;
1984
+
1985
+ if (!coder->dec.headerParsedOk || !coder->outBuf)
1986
+ {
1987
+ if (me->finishedDecoderIndex < 0)
1988
+ me->finishedDecoderIndex = coderIndex;
1989
+ return SZ_OK;
1990
+ }
1991
+
1992
+ if (me->finishedDecoderIndex >= 0)
1993
+ return SZ_OK;
1994
+
1995
+ me->mtc.inProcessed += coder->inCodeSize;
1996
+
1997
+ *canRecode = False;
1998
+
1999
+ {
2000
+ SRes res;
2001
+ size_t size = coder->outCodeSize;
2002
+ Byte *data = coder->outBuf;
2003
+
2004
+ // we use in me->dec: sha, numBlocks, indexSize
2005
+
2006
+ if (!me->isBlockHeaderState_Write)
2007
+ {
2008
+ XzUnpacker_PrepareToRandomBlockDecoding(&me->dec);
2009
+ me->dec.decodeOnlyOneBlock = False;
2010
+ me->dec.numStartedStreams = coder->dec.numStartedStreams;
2011
+ me->dec.streamFlags = coder->streamFlags;
2012
+
2013
+ me->isBlockHeaderState_Write = True;
2014
+ }
2015
+
2016
+ me->dec.numTotalBlocks = coder->dec.numTotalBlocks;
2017
+ XzUnpacker_UpdateIndex(&me->dec, coder->blockPackSize_for_Index, coder->outPreSize);
2018
+
2019
+ if (coder->outPreSize != size)
2020
+ {
2021
+ if (me->props.ignoreErrors)
2022
+ {
2023
+ memset(data + size, 0, coder->outPreSize - size);
2024
+ size = coder->outPreSize;
2025
+ }
2026
+ // me->numBadBlocks++;
2027
+ if (me->mainErrorCode == SZ_OK)
2028
+ {
2029
+ if ((int)coder->status == LZMA_STATUS_NEEDS_MORE_INPUT)
2030
+ me->mainErrorCode = SZ_ERROR_INPUT_EOF;
2031
+ else
2032
+ me->mainErrorCode = SZ_ERROR_DATA;
2033
+ }
2034
+ }
2035
+
2036
+ if (me->writeRes != SZ_OK)
2037
+ return me->writeRes;
2038
+
2039
+ res = SZ_OK;
2040
+ {
2041
+ if (me->outSize_Defined)
2042
+ {
2043
+ const UInt64 rem = me->outSize - me->outProcessed;
2044
+ if (size > rem)
2045
+ size = (SizeT)rem;
2046
+ }
2047
+
2048
+ for (;;)
2049
+ {
2050
+ size_t cur = size;
2051
+ size_t written;
2052
+ if (cur > XZDECMT_STREAM_WRITE_STEP)
2053
+ cur = XZDECMT_STREAM_WRITE_STEP;
2054
+
2055
+ written = ISeqOutStream_Write(me->outStream, data, cur);
2056
+
2057
+ // PRF(printf("\nWritten ask = %d written = %d\n", (unsigned)cur, (unsigned)written));
2058
+
2059
+ me->outProcessed += written;
2060
+ if (written != cur)
2061
+ {
2062
+ me->writeRes = SZ_ERROR_WRITE;
2063
+ res = me->writeRes;
2064
+ break;
2065
+ }
2066
+ data += cur;
2067
+ size -= cur;
2068
+ // PRF_STR_INT("Written size =", size);
2069
+ if (size == 0)
2070
+ break;
2071
+ res = MtProgress_ProgressAdd(&me->mtc.mtProgress, 0, 0);
2072
+ if (res != SZ_OK)
2073
+ break;
2074
+ }
2075
+ }
2076
+
2077
+ if (coder->codeRes != SZ_OK)
2078
+ if (!me->props.ignoreErrors)
2079
+ {
2080
+ me->finishedDecoderIndex = coderIndex;
2081
+ return res;
2082
+ }
2083
+
2084
+ RINOK(res);
2085
+
2086
+ if (coder->inPreSize != coder->inCodeSize
2087
+ || coder->blockPackTotal != coder->inCodeSize)
2088
+ {
2089
+ me->finishedDecoderIndex = coderIndex;
2090
+ return SZ_OK;
2091
+ }
2092
+
2093
+ if (coder->parseState != MTDEC_PARSE_END)
2094
+ {
2095
+ *needContinue = True;
2096
+ return SZ_OK;
2097
+ }
2098
+ }
2099
+
2100
+ // (coder->state == MTDEC_PARSE_END) means that there are no other working threads
2101
+ // so we can use mtc variables without lock
2102
+
2103
+ PRF_STR_INT("Write MTDEC_PARSE_END", me->mtc.inProcessed);
2104
+
2105
+ me->mtc.mtProgress.totalInSize = me->mtc.inProcessed;
2106
+ {
2107
+ CXzUnpacker *dec = &me->dec;
2108
+
2109
+ PRF_STR_INT("PostSingle", srcSize);
2110
+
2111
+ {
2112
+ size_t srcProcessed = srcSize;
2113
+ ECoderStatus status;
2114
+ size_t outSizeCur = 0;
2115
+ SRes res;
2116
+
2117
+ // dec->decodeOnlyOneBlock = False;
2118
+ dec->decodeToStreamSignature = True;
2119
+
2120
+ me->mainDecoderWasCalled = True;
2121
+
2122
+ if (coder->parsing_Truncated)
2123
+ {
2124
+ me->parsing_Truncated = True;
2125
+ return SZ_OK;
2126
+ }
2127
+
2128
+ res = XzUnpacker_Code(dec,
2129
+ NULL, &outSizeCur,
2130
+ src, &srcProcessed,
2131
+ me->mtc.readWasFinished, // srcFinished
2132
+ CODER_FINISH_END, // CODER_FINISH_ANY,
2133
+ &status);
2134
+
2135
+ me->status = status;
2136
+ me->codeRes = res;
2137
+
2138
+ me->mtc.inProcessed += srcProcessed;
2139
+ me->mtc.mtProgress.totalInSize = me->mtc.inProcessed;
2140
+
2141
+ if (res != SZ_OK)
2142
+ {
2143
+ return S_OK;
2144
+ // return res;
2145
+ }
2146
+
2147
+ if (dec->state == XZ_STATE_STREAM_HEADER)
2148
+ {
2149
+ *needContinue = True;
2150
+ me->isBlockHeaderState_Parse = False;
2151
+ me->isBlockHeaderState_Write = False;
2152
+ {
2153
+ Byte *crossBuf = MtDec_GetCrossBuff(&me->mtc);
2154
+ if (!crossBuf)
2155
+ return SZ_ERROR_MEM;
2156
+ memcpy(crossBuf, src + srcProcessed, srcSize - srcProcessed);
2157
+ }
2158
+ me->mtc.crossStart = 0;
2159
+ me->mtc.crossEnd = srcSize - srcProcessed;
2160
+ return SZ_OK;
2161
+ }
2162
+
2163
+ if (status != CODER_STATUS_NEEDS_MORE_INPUT)
2164
+ {
2165
+ return E_FAIL;
2166
+ }
2167
+
2168
+ if (me->mtc.readWasFinished)
2169
+ {
2170
+ return SZ_OK;
2171
+ }
2172
+ }
2173
+
2174
+ {
2175
+ size_t inPos;
2176
+ size_t inLim;
2177
+ const Byte *inData;
2178
+ UInt64 inProgressPrev = me->mtc.inProcessed;
2179
+
2180
+ // XzDecMt_Prepare_InBuf_ST(p);
2181
+ Byte *crossBuf = MtDec_GetCrossBuff(&me->mtc);
2182
+ if (!crossBuf)
2183
+ return SZ_ERROR_MEM;
2184
+
2185
+ inPos = 0;
2186
+ inLim = 0;
2187
+ // outProcessed = 0;
2188
+
2189
+ inData = crossBuf;
2190
+
2191
+ for (;;)
2192
+ {
2193
+ SizeT inProcessed;
2194
+ SizeT outProcessed;
2195
+ ECoderStatus status;
2196
+ SRes res;
2197
+
2198
+ if (inPos == inLim)
2199
+ {
2200
+ if (!me->mtc.readWasFinished)
2201
+ {
2202
+ inPos = 0;
2203
+ inLim = me->mtc.inBufSize;
2204
+ me->mtc.readRes = ISeqInStream_Read(me->inStream, (void *)inData, &inLim);
2205
+ me->mtc.readProcessed += inLim;
2206
+ if (inLim == 0 || me->mtc.readRes != SZ_OK)
2207
+ me->mtc.readWasFinished = True;
2208
+ }
2209
+ }
2210
+
2211
+ inProcessed = inLim - inPos;
2212
+ outProcessed = 0;
2213
+
2214
+ res = XzUnpacker_Code(dec,
2215
+ NULL, &outProcessed,
2216
+ inData + inPos, &inProcessed,
2217
+ (inProcessed == 0), // srcFinished
2218
+ CODER_FINISH_END, &status);
2219
+
2220
+ me->codeRes = res;
2221
+ me->status = status;
2222
+ inPos += inProcessed;
2223
+ me->mtc.inProcessed += inProcessed;
2224
+ me->mtc.mtProgress.totalInSize = me->mtc.inProcessed;
2225
+
2226
+ if (res != SZ_OK)
2227
+ {
2228
+ return S_OK;
2229
+ // return res;
2230
+ }
2231
+
2232
+ if (dec->state == XZ_STATE_STREAM_HEADER)
2233
+ {
2234
+ *needContinue = True;
2235
+ me->mtc.crossStart = inPos;
2236
+ me->mtc.crossEnd = inLim;
2237
+ me->isBlockHeaderState_Parse = False;
2238
+ me->isBlockHeaderState_Write = False;
2239
+ return SZ_OK;
2240
+ }
2241
+
2242
+ if (status != CODER_STATUS_NEEDS_MORE_INPUT)
2243
+ return E_FAIL;
2244
+
2245
+ if (me->mtc.progress)
2246
+ {
2247
+ UInt64 inDelta = me->mtc.inProcessed - inProgressPrev;
2248
+ if (inDelta >= (1 << 22))
2249
+ {
2250
+ RINOK(MtProgress_Progress_ST(&me->mtc.mtProgress));
2251
+ inProgressPrev = me->mtc.inProcessed;
2252
+ }
2253
+ }
2254
+ if (me->mtc.readWasFinished)
2255
+ return SZ_OK;
2256
+ }
2257
+ }
2258
+ }
2259
+ }
2260
+
2261
+
2262
+ #endif
2263
+
2264
+
2265
+
2266
+ void XzStatInfo_Clear(CXzStatInfo *p)
2267
+ {
2268
+ p->InSize = 0;
2269
+ p->OutSize = 0;
2270
+
2271
+ p->NumStreams = 0;
2272
+ p->NumBlocks = 0;
2273
+
2274
+ p->UnpackSize_Defined = False;
2275
+
2276
+ p->NumStreams_Defined = False;
2277
+ p->NumBlocks_Defined = False;
2278
+
2279
+ // p->IsArc = False;
2280
+ // p->UnexpectedEnd = False;
2281
+ // p->Unsupported = False;
2282
+ // p->HeadersError = False;
2283
+ // p->DataError = False;
2284
+ // p->CrcError = False;
2285
+
2286
+ p->DataAfterEnd = False;
2287
+ p->DecodingTruncated = False;
2288
+
2289
+ p->DecodeRes = SZ_OK;
2290
+ p->ReadRes = SZ_OK;
2291
+ p->ProgressRes = SZ_OK;
2292
+
2293
+ p->CombinedRes = SZ_OK;
2294
+ p->CombinedRes_Type = SZ_OK;
2295
+ }
2296
+
2297
+
2298
+
2299
+
2300
+ static SRes XzDecMt_Decode_ST(CXzDecMt *p
2301
+ #ifndef _7ZIP_ST
2302
+ , BoolInt tMode
2303
+ #endif
2304
+ , CXzStatInfo *stat)
2305
+ {
2306
+ size_t outPos;
2307
+ size_t inPos, inLim;
2308
+ const Byte *inData;
2309
+ UInt64 inPrev, outPrev;
2310
+
2311
+ CXzUnpacker *dec;
2312
+
2313
+ #ifndef _7ZIP_ST
2314
+ if (tMode)
2315
+ {
2316
+ XzDecMt_FreeOutBufs(p);
2317
+ tMode = MtDec_PrepareRead(&p->mtc);
2318
+ }
2319
+ #endif
2320
+
2321
+ if (!p->outBuf || p->outBufSize != p->props.outStep_ST)
2322
+ {
2323
+ ISzAlloc_Free(p->allocMid, p->outBuf);
2324
+ p->outBufSize = 0;
2325
+ p->outBuf = (Byte *)ISzAlloc_Alloc(p->allocMid, p->props.outStep_ST);
2326
+ if (!p->outBuf)
2327
+ return SZ_ERROR_MEM;
2328
+ p->outBufSize = p->props.outStep_ST;
2329
+ }
2330
+
2331
+ if (!p->inBuf || p->inBufSize != p->props.inBufSize_ST)
2332
+ {
2333
+ ISzAlloc_Free(p->allocMid, p->inBuf);
2334
+ p->inBufSize = 0;
2335
+ p->inBuf = (Byte *)ISzAlloc_Alloc(p->allocMid, p->props.inBufSize_ST);
2336
+ if (!p->inBuf)
2337
+ return SZ_ERROR_MEM;
2338
+ p->inBufSize = p->props.inBufSize_ST;
2339
+ }
2340
+
2341
+ dec = &p->dec;
2342
+ dec->decodeToStreamSignature = False;
2343
+ // dec->decodeOnlyOneBlock = False;
2344
+
2345
+ XzUnpacker_SetOutBuf(dec, NULL, 0);
2346
+
2347
+ inPrev = p->inProcessed;
2348
+ outPrev = p->outProcessed;
2349
+
2350
+ inPos = 0;
2351
+ inLim = 0;
2352
+ inData = NULL;
2353
+ outPos = 0;
2354
+
2355
+ for (;;)
2356
+ {
2357
+ SizeT outSize;
2358
+ BoolInt finished;
2359
+ ECoderFinishMode finishMode;
2360
+ SizeT inProcessed;
2361
+ ECoderStatus status;
2362
+ SRes res;
2363
+
2364
+ SizeT outProcessed;
2365
+
2366
+
2367
+
2368
+ if (inPos == inLim)
2369
+ {
2370
+ #ifndef _7ZIP_ST
2371
+ if (tMode)
2372
+ {
2373
+ inData = MtDec_Read(&p->mtc, &inLim);
2374
+ inPos = 0;
2375
+ if (inData)
2376
+ continue;
2377
+ tMode = False;
2378
+ inLim = 0;
2379
+ }
2380
+ #endif
2381
+
2382
+ if (!p->readWasFinished)
2383
+ {
2384
+ inPos = 0;
2385
+ inLim = p->inBufSize;
2386
+ inData = p->inBuf;
2387
+ p->readRes = ISeqInStream_Read(p->inStream, (void *)inData, &inLim);
2388
+ p->readProcessed += inLim;
2389
+ if (inLim == 0 || p->readRes != SZ_OK)
2390
+ p->readWasFinished = True;
2391
+ }
2392
+ }
2393
+
2394
+ outSize = p->props.outStep_ST - outPos;
2395
+
2396
+ finishMode = CODER_FINISH_ANY;
2397
+ if (p->outSize_Defined)
2398
+ {
2399
+ const UInt64 rem = p->outSize - p->outProcessed;
2400
+ if (outSize >= rem)
2401
+ {
2402
+ outSize = (SizeT)rem;
2403
+ if (p->finishMode)
2404
+ finishMode = CODER_FINISH_END;
2405
+ }
2406
+ }
2407
+
2408
+ inProcessed = inLim - inPos;
2409
+ outProcessed = outSize;
2410
+
2411
+ res = XzUnpacker_Code(dec, p->outBuf + outPos, &outProcessed,
2412
+ inData + inPos, &inProcessed,
2413
+ (inPos == inLim), // srcFinished
2414
+ finishMode, &status);
2415
+
2416
+ p->codeRes = res;
2417
+ p->status = status;
2418
+
2419
+ inPos += inProcessed;
2420
+ outPos += outProcessed;
2421
+ p->inProcessed += inProcessed;
2422
+ p->outProcessed += outProcessed;
2423
+
2424
+ finished = ((inProcessed == 0 && outProcessed == 0) || res != SZ_OK);
2425
+
2426
+ if (finished || outProcessed >= outSize)
2427
+ if (outPos != 0)
2428
+ {
2429
+ size_t written = ISeqOutStream_Write(p->outStream, p->outBuf, outPos);
2430
+ p->outProcessed += written;
2431
+ if (written != outPos)
2432
+ {
2433
+ stat->CombinedRes_Type = SZ_ERROR_WRITE;
2434
+ return SZ_ERROR_WRITE;
2435
+ }
2436
+ outPos = 0;
2437
+ }
2438
+
2439
+ if (p->progress && res == SZ_OK)
2440
+ {
2441
+ UInt64 inDelta = p->inProcessed - inPrev;
2442
+ UInt64 outDelta = p->outProcessed - outPrev;
2443
+ if (inDelta >= (1 << 22) || outDelta >= (1 << 22))
2444
+ {
2445
+ res = ICompressProgress_Progress(p->progress, p->inProcessed, p->outProcessed);
2446
+ if (res != SZ_OK)
2447
+ {
2448
+ stat->CombinedRes_Type = SZ_ERROR_PROGRESS;
2449
+ stat->ProgressRes = res;
2450
+ return res;
2451
+ }
2452
+ inPrev = p->inProcessed;
2453
+ outPrev = p->outProcessed;
2454
+ }
2455
+ }
2456
+
2457
+ if (finished)
2458
+ return res;
2459
+ }
2460
+ }
2461
+
2462
+ static SRes XzStatInfo_SetStat(const CXzUnpacker *dec,
2463
+ int finishMode,
2464
+ UInt64 readProcessed, UInt64 inProcessed,
2465
+ SRes res, ECoderStatus status,
2466
+ BoolInt decodingTruncated,
2467
+ CXzStatInfo *stat)
2468
+ {
2469
+ UInt64 extraSize;
2470
+
2471
+ stat->DecodingTruncated = (Byte)(decodingTruncated ? 1 : 0);
2472
+ stat->InSize = inProcessed;
2473
+ stat->NumStreams = dec->numStartedStreams;
2474
+ stat->NumBlocks = dec->numTotalBlocks;
2475
+
2476
+ stat->UnpackSize_Defined = True;
2477
+ stat->NumStreams_Defined = True;
2478
+ stat->NumBlocks_Defined = True;
2479
+
2480
+ extraSize = XzUnpacker_GetExtraSize(dec);
2481
+
2482
+ if (res == SZ_OK)
2483
+ {
2484
+ if (status == CODER_STATUS_NEEDS_MORE_INPUT)
2485
+ {
2486
+ // CODER_STATUS_NEEDS_MORE_INPUT is expected status for correct xz streams
2487
+ extraSize = 0;
2488
+ if (!XzUnpacker_IsStreamWasFinished(dec))
2489
+ res = SZ_ERROR_INPUT_EOF;
2490
+ }
2491
+ else if (!decodingTruncated || finishMode) // (status == CODER_STATUS_NOT_FINISHED)
2492
+ res = SZ_ERROR_DATA;
2493
+ }
2494
+ else if (res == SZ_ERROR_NO_ARCHIVE)
2495
+ {
2496
+ /*
2497
+ SZ_ERROR_NO_ARCHIVE is possible for 2 states:
2498
+ XZ_STATE_STREAM_HEADER - if bad signature or bad CRC
2499
+ XZ_STATE_STREAM_PADDING - if non-zero padding data
2500
+ extraSize / inProcessed don't include "bad" byte
2501
+ */
2502
+ if (inProcessed != extraSize) // if good streams before error
2503
+ if (extraSize != 0 || readProcessed != inProcessed)
2504
+ {
2505
+ stat->DataAfterEnd = True;
2506
+ // there is some good xz stream before. So we set SZ_OK
2507
+ res = SZ_OK;
2508
+ }
2509
+ }
2510
+
2511
+ stat->DecodeRes = res;
2512
+
2513
+ stat->InSize -= extraSize;
2514
+ return res;
2515
+ }
2516
+
2517
+
2518
+ SRes XzDecMt_Decode(CXzDecMtHandle pp,
2519
+ const CXzDecMtProps *props,
2520
+ const UInt64 *outDataSize, int finishMode,
2521
+ ISeqOutStream *outStream,
2522
+ // Byte *outBuf, size_t *outBufSize,
2523
+ ISeqInStream *inStream,
2524
+ // const Byte *inData, size_t inDataSize,
2525
+ CXzStatInfo *stat,
2526
+ int *isMT,
2527
+ ICompressProgress *progress)
2528
+ {
2529
+ CXzDecMt *p = (CXzDecMt *)pp;
2530
+ #ifndef _7ZIP_ST
2531
+ BoolInt tMode;
2532
+ #endif
2533
+
2534
+ XzStatInfo_Clear(stat);
2535
+
2536
+ p->props = *props;
2537
+
2538
+ p->inStream = inStream;
2539
+ p->outStream = outStream;
2540
+ p->progress = progress;
2541
+ // p->stat = stat;
2542
+
2543
+ p->outSize = 0;
2544
+ p->outSize_Defined = False;
2545
+ if (outDataSize)
2546
+ {
2547
+ p->outSize_Defined = True;
2548
+ p->outSize = *outDataSize;
2549
+ }
2550
+
2551
+ p->finishMode = finishMode;
2552
+
2553
+ // p->outSize = 457; p->outSize_Defined = True; p->finishMode = False; // for test
2554
+
2555
+ p->writeRes = SZ_OK;
2556
+ p->outProcessed = 0;
2557
+ p->inProcessed = 0;
2558
+ p->readProcessed = 0;
2559
+ p->readWasFinished = False;
2560
+
2561
+ p->codeRes = 0;
2562
+ p->status = CODER_STATUS_NOT_SPECIFIED;
2563
+
2564
+ XzUnpacker_Init(&p->dec);
2565
+
2566
+ *isMT = False;
2567
+
2568
+ /*
2569
+ p->outBuf = NULL;
2570
+ p->outBufSize = 0;
2571
+ if (!outStream)
2572
+ {
2573
+ p->outBuf = outBuf;
2574
+ p->outBufSize = *outBufSize;
2575
+ *outBufSize = 0;
2576
+ }
2577
+ */
2578
+
2579
+
2580
+ #ifndef _7ZIP_ST
2581
+
2582
+ p->isBlockHeaderState_Parse = False;
2583
+ p->isBlockHeaderState_Write = False;
2584
+ // p->numBadBlocks = 0;
2585
+ p->mainErrorCode = SZ_OK;
2586
+ p->mainDecoderWasCalled = False;
2587
+
2588
+ tMode = False;
2589
+
2590
+ if (p->props.numThreads > 1)
2591
+ {
2592
+ IMtDecCallback vt;
2593
+
2594
+ // we just free ST buffers here
2595
+ // but we still keep state variables, that was set in XzUnpacker_Init()
2596
+ XzDecMt_FreeSt(p);
2597
+
2598
+ p->outProcessed_Parse = 0;
2599
+ p->parsing_Truncated = False;
2600
+
2601
+ p->numStreams = 0;
2602
+ p->numTotalBlocks = 0;
2603
+ p->numBlocks = 0;
2604
+ p->finishedDecoderIndex = -1;
2605
+
2606
+ if (!p->mtc_WasConstructed)
2607
+ {
2608
+ p->mtc_WasConstructed = True;
2609
+ MtDec_Construct(&p->mtc);
2610
+ }
2611
+
2612
+ p->mtc.mtCallback = &vt;
2613
+ p->mtc.mtCallbackObject = p;
2614
+
2615
+ p->mtc.progress = progress;
2616
+ p->mtc.inStream = inStream;
2617
+ p->mtc.alloc = &p->alignOffsetAlloc.vt;
2618
+ // p->mtc.inData = inData;
2619
+ // p->mtc.inDataSize = inDataSize;
2620
+ p->mtc.inBufSize = p->props.inBufSize_MT;
2621
+ // p->mtc.inBlockMax = p->props.inBlockMax;
2622
+ p->mtc.numThreadsMax = p->props.numThreads;
2623
+
2624
+ *isMT = True;
2625
+
2626
+ vt.Parse = XzDecMt_Callback_Parse;
2627
+ vt.PreCode = XzDecMt_Callback_PreCode;
2628
+ vt.Code = XzDecMt_Callback_Code;
2629
+ vt.Write = XzDecMt_Callback_Write;
2630
+
2631
+ {
2632
+ BoolInt needContinue;
2633
+
2634
+ SRes res = MtDec_Code(&p->mtc);
2635
+
2636
+ stat->InSize = p->mtc.inProcessed;
2637
+
2638
+ p->inProcessed = p->mtc.inProcessed;
2639
+ p->readRes = p->mtc.readRes;
2640
+ p->readWasFinished = p->mtc.readWasFinished;
2641
+ p->readProcessed = p->mtc.readProcessed;
2642
+
2643
+ tMode = True;
2644
+ needContinue = False;
2645
+
2646
+ if (res == SZ_OK)
2647
+ {
2648
+ if (p->mtc.mtProgress.res != SZ_OK)
2649
+ {
2650
+ res = p->mtc.mtProgress.res;
2651
+ stat->ProgressRes = res;
2652
+ stat->CombinedRes_Type = SZ_ERROR_PROGRESS;
2653
+ }
2654
+ else
2655
+ needContinue = p->mtc.needContinue;
2656
+ }
2657
+
2658
+ if (!needContinue)
2659
+ {
2660
+ SRes codeRes;
2661
+ BoolInt truncated = False;
2662
+ ECoderStatus status;
2663
+ CXzUnpacker *dec;
2664
+
2665
+ stat->OutSize = p->outProcessed;
2666
+
2667
+ if (p->finishedDecoderIndex >= 0)
2668
+ {
2669
+ CXzDecMtThread *coder = &p->coders[(unsigned)p->finishedDecoderIndex];
2670
+ codeRes = coder->codeRes;
2671
+ dec = &coder->dec;
2672
+ status = coder->status;
2673
+ }
2674
+ else if (p->mainDecoderWasCalled)
2675
+ {
2676
+ codeRes = p->codeRes;
2677
+ dec = &p->dec;
2678
+ status = p->status;
2679
+ truncated = p->parsing_Truncated;
2680
+ }
2681
+ else
2682
+ return E_FAIL;
2683
+
2684
+ XzStatInfo_SetStat(dec, p->finishMode,
2685
+ p->mtc.readProcessed, p->mtc.inProcessed,
2686
+ codeRes, status,
2687
+ truncated,
2688
+ stat);
2689
+
2690
+ if (res == SZ_OK)
2691
+ {
2692
+ if (p->writeRes != SZ_OK)
2693
+ {
2694
+ res = p->writeRes;
2695
+ stat->CombinedRes_Type = SZ_ERROR_WRITE;
2696
+ }
2697
+ else if (p->mtc.readRes != SZ_OK && p->mtc.inProcessed == p->mtc.readProcessed)
2698
+ {
2699
+ res = p->mtc.readRes;
2700
+ stat->ReadRes = res;
2701
+ stat->CombinedRes_Type = SZ_ERROR_READ;
2702
+ }
2703
+ else if (p->mainErrorCode != SZ_OK)
2704
+ {
2705
+ res = p->mainErrorCode;
2706
+ }
2707
+ }
2708
+
2709
+ stat->CombinedRes = res;
2710
+ if (stat->CombinedRes_Type == SZ_OK)
2711
+ stat->CombinedRes_Type = res;
2712
+ return res;
2713
+ }
2714
+
2715
+ PRF_STR("----- decoding ST -----");
2716
+ }
2717
+ }
2718
+
2719
+ #endif
2720
+
2721
+
2722
+ *isMT = False;
2723
+
2724
+ {
2725
+ SRes res = XzDecMt_Decode_ST(p
2726
+ #ifndef _7ZIP_ST
2727
+ , tMode
2728
+ #endif
2729
+ , stat
2730
+ );
2731
+
2732
+ XzStatInfo_SetStat(&p->dec,
2733
+ p->finishMode,
2734
+ p->readProcessed, p->inProcessed,
2735
+ p->codeRes, p->status,
2736
+ False, // truncated
2737
+ stat);
2738
+
2739
+ if (res == SZ_OK)
2740
+ {
2741
+ /*
2742
+ if (p->writeRes != SZ_OK)
2743
+ {
2744
+ res = p->writeRes;
2745
+ stat->CombinedRes_Type = SZ_ERROR_WRITE;
2746
+ }
2747
+ else
2748
+ */
2749
+ if (p->readRes != SZ_OK && p->inProcessed == p->readProcessed)
2750
+ {
2751
+ res = p->readRes;
2752
+ stat->ReadRes = res;
2753
+ stat->CombinedRes_Type = SZ_ERROR_READ;
2754
+ }
2755
+ #ifndef _7ZIP_ST
2756
+ else if (p->mainErrorCode != SZ_OK)
2757
+ res = p->mainErrorCode;
2758
+ #endif
2759
+ }
2760
+
2761
+ stat->CombinedRes = res;
2762
+ if (stat->CombinedRes_Type == SZ_OK)
2763
+ stat->CombinedRes_Type = res;
2764
+ return res;
2765
+ }
2766
+ }