seven-zip 1.4.2 → 1.7.0.rc1

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 (887) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +49 -0
  3. data/.github/workflows/release.yml +21 -0
  4. data/README.md +13 -2
  5. data/Rakefile +2 -0
  6. data/ext/p7zip/C/7zBuf.h +4 -8
  7. data/ext/p7zip/C/7zBuf2.c +9 -3
  8. data/ext/p7zip/C/7zCrc.c +84 -32
  9. data/ext/p7zip/C/7zCrc.h +2 -2
  10. data/ext/p7zip/C/7zCrcOpt.c +89 -8
  11. data/ext/p7zip/C/7zStream.c +4 -2
  12. data/ext/p7zip/C/{Types.h → 7zTypes.h} +8 -6
  13. data/ext/p7zip/C/7zVersion.h +21 -6
  14. data/ext/p7zip/C/Aes.c +28 -15
  15. data/ext/p7zip/C/Aes.h +2 -2
  16. data/ext/p7zip/C/Alloc.c +60 -12
  17. data/ext/p7zip/C/Alloc.h +6 -7
  18. data/ext/p7zip/C/Bcj2.c +256 -0
  19. data/ext/p7zip/C/Bcj2.h +146 -0
  20. data/ext/p7zip/C/Bcj2Enc.c +312 -0
  21. data/ext/p7zip/C/Blake2.h +48 -0
  22. data/ext/p7zip/C/Blake2s.c +244 -0
  23. data/ext/p7zip/C/Bra.c +2 -0
  24. data/ext/p7zip/C/Bra.h +4 -8
  25. data/ext/p7zip/C/Bra86.c +48 -51
  26. data/ext/p7zip/C/BraIA64.c +3 -1
  27. data/ext/p7zip/C/BwtSort.c +3 -4
  28. data/ext/p7zip/C/BwtSort.h +4 -8
  29. data/ext/p7zip/C/Compiler.h +32 -0
  30. data/ext/p7zip/C/CpuArch.c +50 -7
  31. data/ext/p7zip/C/CpuArch.h +112 -41
  32. data/ext/p7zip/C/Delta.c +2 -0
  33. data/ext/p7zip/C/Delta.h +4 -8
  34. data/ext/p7zip/C/HuffEnc.c +8 -6
  35. data/ext/p7zip/C/HuffEnc.h +4 -8
  36. data/ext/p7zip/C/LzFind.c +391 -108
  37. data/ext/p7zip/C/LzFind.h +20 -18
  38. data/ext/p7zip/C/LzFindMt.c +100 -90
  39. data/ext/p7zip/C/LzFindMt.h +4 -8
  40. data/ext/p7zip/C/LzHash.h +23 -20
  41. data/ext/p7zip/C/Lzma2Dec.c +48 -26
  42. data/ext/p7zip/C/Lzma2Dec.h +4 -8
  43. data/ext/p7zip/C/Lzma2Enc.c +58 -15
  44. data/ext/p7zip/C/Lzma2Enc.h +3 -7
  45. data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.h → Lzma86.h} +47 -14
  46. data/ext/p7zip/C/{LzmaUtil/Lzma86Dec.c → Lzma86Dec.c} +6 -13
  47. data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.c → Lzma86Enc.c} +8 -15
  48. data/ext/p7zip/C/LzmaDec.c +180 -79
  49. data/ext/p7zip/C/LzmaDec.h +4 -8
  50. data/ext/p7zip/C/LzmaEnc.c +230 -147
  51. data/ext/p7zip/C/LzmaEnc.h +6 -8
  52. data/ext/p7zip/C/MtCoder.c +3 -3
  53. data/ext/p7zip/C/Ppmd.h +5 -5
  54. data/ext/p7zip/C/Ppmd7.c +9 -7
  55. data/ext/p7zip/C/Ppmd7.h +3 -3
  56. data/ext/p7zip/C/Ppmd7Dec.c +2 -0
  57. data/ext/p7zip/C/Ppmd7Enc.c +4 -2
  58. data/ext/p7zip/C/Ppmd8.c +34 -31
  59. data/ext/p7zip/C/Ppmd8.h +5 -1
  60. data/ext/p7zip/C/Ppmd8Dec.c +2 -0
  61. data/ext/p7zip/C/Ppmd8Enc.c +2 -0
  62. data/ext/p7zip/C/Precomp.h +10 -0
  63. data/ext/p7zip/C/RotateDefs.h +11 -1
  64. data/ext/p7zip/C/Sha1.c +340 -0
  65. data/ext/p7zip/C/Sha1.h +38 -0
  66. data/ext/p7zip/C/Sha256.c +107 -63
  67. data/ext/p7zip/C/Sha256.h +2 -2
  68. data/ext/p7zip/C/Sort.c +59 -11
  69. data/ext/p7zip/C/Sort.h +8 -10
  70. data/ext/p7zip/C/Threads.h +1 -1
  71. data/ext/p7zip/C/Xz.c +7 -5
  72. data/ext/p7zip/C/Xz.h +40 -17
  73. data/ext/p7zip/C/XzCrc64.c +69 -16
  74. data/ext/p7zip/C/XzCrc64.h +2 -2
  75. data/ext/p7zip/C/XzCrc64Opt.c +69 -0
  76. data/ext/p7zip/C/XzDec.c +93 -55
  77. data/ext/p7zip/C/XzEnc.c +206 -165
  78. data/ext/p7zip/C/XzEnc.h +23 -9
  79. data/ext/p7zip/C/XzIn.c +50 -43
  80. data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +37 -13
  81. data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.cpp +392 -181
  82. data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.h +29 -29
  83. data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.cpp +424 -212
  84. data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.h +53 -16
  85. data/ext/p7zip/CPP/7zip/Archive/7z/7zExtract.cpp +312 -174
  86. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +74 -61
  87. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +22 -19
  88. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.cpp +505 -232
  89. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.h +70 -16
  90. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +602 -172
  91. data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.cpp +5 -0
  92. data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.h +54 -3
  93. data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.cpp +981 -616
  94. data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.h +275 -89
  95. data/ext/p7zip/CPP/7zip/Archive/7z/7zItem.h +77 -162
  96. data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.cpp +288 -238
  97. data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.h +189 -20
  98. data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.cpp +59 -49
  99. data/ext/p7zip/CPP/7zip/Archive/7z/7zRegister.cpp +12 -9
  100. data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +4 -6
  101. data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.h +5 -5
  102. data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +1743 -447
  103. data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.h +61 -10
  104. data/ext/p7zip/CPP/7zip/Archive/ApmHandler.cpp +84 -120
  105. data/ext/p7zip/CPP/7zip/Archive/ArHandler.cpp +854 -0
  106. data/ext/p7zip/CPP/7zip/Archive/ArchiveExports.cpp +48 -32
  107. data/ext/p7zip/CPP/7zip/Archive/ArjHandler.cpp +519 -340
  108. data/ext/p7zip/CPP/7zip/Archive/Bz2Handler.cpp +223 -203
  109. data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +50 -139
  110. data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +17 -18
  111. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +566 -234
  112. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.h +10 -1
  113. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +2 -2
  114. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.h +12 -15
  115. data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.cpp +341 -122
  116. data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.h +81 -66
  117. data/ext/p7zip/CPP/7zip/Archive/Cab/CabItem.h +17 -14
  118. data/ext/p7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +10 -4
  119. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +190 -83
  120. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.h +7 -1
  121. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +292 -174
  122. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.h +73 -47
  123. data/ext/p7zip/CPP/7zip/Archive/ComHandler.cpp +886 -0
  124. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +994 -71
  125. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.h +364 -101
  126. data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +7 -12
  127. data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.h +4 -3
  128. data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.cpp +6 -6
  129. data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.h +2 -2
  130. data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +77 -543
  131. data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.h +31 -51
  132. data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +18 -14
  133. data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +34 -7
  134. data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +5 -2
  135. data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.cpp +25 -24
  136. data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.h +8 -3
  137. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +1 -0
  138. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +2 -2
  139. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +5 -5
  140. data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -174
  141. data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.h +2 -14
  142. data/ext/p7zip/CPP/7zip/Archive/CpioHandler.cpp +506 -335
  143. data/ext/p7zip/CPP/7zip/Archive/CramfsHandler.cpp +227 -84
  144. data/ext/p7zip/CPP/7zip/Archive/DeflateProps.cpp +0 -115
  145. data/ext/p7zip/CPP/7zip/Archive/DeflateProps.h +0 -29
  146. data/ext/p7zip/CPP/7zip/Archive/DllExports2.cpp +63 -17
  147. data/ext/p7zip/CPP/7zip/Archive/DmgHandler.cpp +1007 -339
  148. data/ext/p7zip/CPP/7zip/Archive/ElfHandler.cpp +618 -177
  149. data/ext/p7zip/CPP/7zip/Archive/ExtHandler.cpp +2867 -0
  150. data/ext/p7zip/CPP/7zip/Archive/FatHandler.cpp +136 -76
  151. data/ext/p7zip/CPP/7zip/Archive/FlvHandler.cpp +132 -150
  152. data/ext/p7zip/CPP/7zip/Archive/GptHandler.cpp +405 -0
  153. data/ext/p7zip/CPP/7zip/Archive/GzHandler.cpp +560 -214
  154. data/ext/p7zip/CPP/7zip/Archive/HandlerCont.cpp +288 -0
  155. data/ext/p7zip/CPP/7zip/Archive/HandlerCont.h +116 -0
  156. data/ext/p7zip/CPP/7zip/Archive/HfsHandler.cpp +1880 -0
  157. data/ext/p7zip/CPP/7zip/Archive/IArchive.h +415 -51
  158. data/ext/p7zip/CPP/7zip/Archive/IhexHandler.cpp +497 -0
  159. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +158 -71
  160. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.h +2 -1
  161. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +0 -9
  162. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.h +8 -5
  163. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +311 -91
  164. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.h +101 -83
  165. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoItem.h +48 -39
  166. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +12 -4
  167. data/ext/p7zip/CPP/7zip/Archive/LzhHandler.cpp +127 -114
  168. data/ext/p7zip/CPP/7zip/Archive/LzmaHandler.cpp +264 -121
  169. data/ext/p7zip/CPP/7zip/Archive/MachoHandler.cpp +402 -242
  170. data/ext/p7zip/CPP/7zip/Archive/MbrHandler.cpp +56 -114
  171. data/ext/p7zip/CPP/7zip/Archive/MslzHandler.cpp +230 -90
  172. data/ext/p7zip/CPP/7zip/Archive/MubHandler.cpp +129 -153
  173. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +179 -58
  174. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +36 -7
  175. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +407 -237
  176. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +9 -16
  177. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +5535 -1098
  178. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.h +345 -81
  179. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +11 -4
  180. data/ext/p7zip/CPP/7zip/Archive/NtfsHandler.cpp +1424 -434
  181. data/ext/p7zip/CPP/7zip/Archive/PeHandler.cpp +1831 -521
  182. data/ext/p7zip/CPP/7zip/Archive/PpmdHandler.cpp +50 -35
  183. data/ext/p7zip/CPP/7zip/Archive/QcowHandler.cpp +615 -0
  184. data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +2746 -0
  185. data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +411 -0
  186. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1241 -355
  187. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.h +70 -20
  188. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.h +38 -34
  189. data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.h +34 -16
  190. data/ext/p7zip/CPP/7zip/Archive/Rar/RarVol.h +129 -0
  191. data/ext/p7zip/CPP/7zip/Archive/RpmHandler.cpp +641 -194
  192. data/ext/p7zip/CPP/7zip/Archive/SplitHandler.cpp +174 -181
  193. data/ext/p7zip/CPP/7zip/Archive/SquashfsHandler.cpp +237 -174
  194. data/ext/p7zip/CPP/7zip/Archive/SwfHandler.cpp +471 -192
  195. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +350 -59
  196. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.h +24 -7
  197. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +79 -27
  198. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +5 -7
  199. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.h +20 -44
  200. data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.cpp +279 -64
  201. data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.h +10 -1
  202. data/ext/p7zip/CPP/7zip/Archive/Tar/TarItem.h +34 -8
  203. data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.cpp +145 -87
  204. data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.h +13 -5
  205. data/ext/p7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +14 -9
  206. data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +154 -27
  207. data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.h +10 -6
  208. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +53 -128
  209. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.h +6 -5
  210. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +384 -119
  211. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.h +40 -21
  212. data/ext/p7zip/CPP/7zip/Archive/UefiHandler.cpp +1618 -0
  213. data/ext/p7zip/CPP/7zip/Archive/VdiHandler.cpp +362 -0
  214. data/ext/p7zip/CPP/7zip/Archive/VhdHandler.cpp +438 -247
  215. data/ext/p7zip/CPP/7zip/Archive/VmdkHandler.cpp +1518 -0
  216. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +837 -249
  217. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.h +73 -47
  218. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +1614 -351
  219. data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.cpp +1519 -513
  220. data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.h +498 -139
  221. data/ext/p7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +13 -9
  222. data/ext/p7zip/CPP/7zip/Archive/XarHandler.cpp +272 -128
  223. data/ext/p7zip/CPP/7zip/Archive/XzHandler.cpp +502 -253
  224. data/ext/p7zip/CPP/7zip/Archive/XzHandler.h +65 -0
  225. data/ext/p7zip/CPP/7zip/Archive/ZHandler.cpp +114 -39
  226. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +118 -134
  227. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +6 -0
  228. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +40 -20
  229. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +541 -274
  230. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.h +13 -40
  231. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +165 -254
  232. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.h +70 -178
  233. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +1934 -550
  234. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.h +294 -63
  235. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +160 -86
  236. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.h +139 -110
  237. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +177 -154
  238. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.h +50 -18
  239. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +18 -9
  240. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +367 -201
  241. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +11 -10
  242. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile +2 -319
  243. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.depend +0 -4962
  244. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.list +1004 -259
  245. data/ext/p7zip/CPP/7zip/Common/CWrappers.cpp +26 -22
  246. data/ext/p7zip/CPP/7zip/Common/CWrappers.h +19 -14
  247. data/ext/p7zip/CPP/7zip/Common/CreateCoder.cpp +298 -130
  248. data/ext/p7zip/CPP/7zip/Common/CreateCoder.h +118 -34
  249. data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.cpp +24 -28
  250. data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.h +5 -5
  251. data/ext/p7zip/CPP/7zip/Common/FileStreams.cpp +268 -65
  252. data/ext/p7zip/CPP/7zip/Common/FileStreams.h +70 -33
  253. data/ext/p7zip/CPP/7zip/Common/FilterCoder.cpp +302 -131
  254. data/ext/p7zip/CPP/7zip/Common/FilterCoder.h +141 -43
  255. data/ext/p7zip/CPP/7zip/Common/InBuffer.cpp +87 -35
  256. data/ext/p7zip/CPP/7zip/Common/InBuffer.h +54 -45
  257. data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.cpp +22 -17
  258. data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.h +5 -5
  259. data/ext/p7zip/CPP/7zip/Common/LimitedStreams.cpp +256 -43
  260. data/ext/p7zip/CPP/7zip/Common/LimitedStreams.h +135 -8
  261. data/ext/p7zip/CPP/7zip/Common/MemBlocks.cpp +5 -5
  262. data/ext/p7zip/CPP/7zip/Common/MemBlocks.h +3 -3
  263. data/ext/p7zip/CPP/7zip/Common/MethodId.cpp +0 -24
  264. data/ext/p7zip/CPP/7zip/Common/MethodId.h +1 -1
  265. data/ext/p7zip/CPP/7zip/Common/MethodProps.cpp +430 -71
  266. data/ext/p7zip/CPP/7zip/Common/MethodProps.h +170 -17
  267. data/ext/p7zip/CPP/7zip/Common/OffsetStream.cpp +8 -4
  268. data/ext/p7zip/CPP/7zip/Common/OffsetStream.h +4 -3
  269. data/ext/p7zip/CPP/7zip/Common/OutBuffer.cpp +26 -31
  270. data/ext/p7zip/CPP/7zip/Common/OutBuffer.h +17 -18
  271. data/ext/p7zip/CPP/7zip/Common/OutMemStream.cpp +5 -5
  272. data/ext/p7zip/CPP/7zip/Common/OutMemStream.h +5 -4
  273. data/ext/p7zip/CPP/7zip/Common/ProgressUtils.cpp +22 -13
  274. data/ext/p7zip/CPP/7zip/Common/ProgressUtils.h +4 -3
  275. data/ext/p7zip/CPP/7zip/Common/PropId.cpp +108 -0
  276. data/ext/p7zip/CPP/7zip/Common/RegisterArc.h +63 -17
  277. data/ext/p7zip/CPP/7zip/Common/RegisterCodec.h +79 -6
  278. data/ext/p7zip/CPP/7zip/Common/StreamBinder.cpp +95 -90
  279. data/ext/p7zip/CPP/7zip/Common/StreamBinder.h +46 -23
  280. data/ext/p7zip/CPP/7zip/Common/StreamObjects.cpp +88 -24
  281. data/ext/p7zip/CPP/7zip/Common/StreamObjects.h +36 -14
  282. data/ext/p7zip/CPP/7zip/Common/StreamUtils.cpp +4 -4
  283. data/ext/p7zip/CPP/7zip/Common/StreamUtils.h +6 -6
  284. data/ext/p7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  285. data/ext/p7zip/CPP/7zip/Common/UniqBlocks.h +26 -0
  286. data/ext/p7zip/CPP/7zip/Common/VirtThread.cpp +8 -6
  287. data/ext/p7zip/CPP/7zip/Common/VirtThread.h +6 -5
  288. data/ext/p7zip/CPP/7zip/Compress/BZip2Const.h +13 -12
  289. data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.h +1 -1
  290. data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.cpp +198 -147
  291. data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.h +60 -27
  292. data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.cpp +111 -116
  293. data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.h +53 -59
  294. data/ext/p7zip/CPP/7zip/Compress/BZip2Register.cpp +12 -7
  295. data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.cpp +554 -282
  296. data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.h +73 -71
  297. data/ext/p7zip/CPP/7zip/Compress/Bcj2Register.cpp +10 -5
  298. data/ext/p7zip/CPP/7zip/Compress/BcjCoder.cpp +13 -4
  299. data/ext/p7zip/CPP/7zip/Compress/BcjCoder.h +17 -5
  300. data/ext/p7zip/CPP/7zip/Compress/BcjRegister.cpp +7 -9
  301. data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.cpp +2 -2
  302. data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.h +58 -61
  303. data/ext/p7zip/CPP/7zip/Compress/BitlEncoder.h +24 -25
  304. data/ext/p7zip/CPP/7zip/Compress/BitmDecoder.h +46 -17
  305. data/ext/p7zip/CPP/7zip/Compress/BitmEncoder.h +18 -19
  306. data/ext/p7zip/CPP/7zip/Compress/BranchMisc.cpp +14 -28
  307. data/ext/p7zip/CPP/7zip/Compress/BranchMisc.h +27 -6
  308. data/ext/p7zip/CPP/7zip/Compress/BranchRegister.cpp +26 -15
  309. data/ext/p7zip/CPP/7zip/Compress/ByteSwap.cpp +45 -26
  310. data/ext/p7zip/CPP/7zip/Compress/CodecExports.cpp +254 -70
  311. data/ext/p7zip/CPP/7zip/Compress/CopyCoder.cpp +65 -17
  312. data/ext/p7zip/CPP/7zip/Compress/CopyCoder.h +15 -3
  313. data/ext/p7zip/CPP/7zip/Compress/CopyRegister.cpp +5 -4
  314. data/ext/p7zip/CPP/7zip/Compress/Deflate64Register.cpp +12 -6
  315. data/ext/p7zip/CPP/7zip/Compress/DeflateConst.h +43 -46
  316. data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.cpp +145 -81
  317. data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.h +31 -33
  318. data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.cpp +179 -162
  319. data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.h +35 -30
  320. data/ext/p7zip/CPP/7zip/Compress/DeflateRegister.cpp +11 -7
  321. data/ext/p7zip/CPP/7zip/Compress/DeltaFilter.cpp +55 -39
  322. data/ext/p7zip/CPP/7zip/Compress/{DllExports2.cpp → DllExports2Compress.cpp} +8 -8
  323. data/ext/p7zip/CPP/7zip/Compress/DllExportsCompress.cpp +48 -0
  324. data/ext/p7zip/CPP/7zip/Compress/HuffmanDecoder.h +220 -49
  325. data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +14 -9
  326. data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.h +2 -3
  327. data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +7 -7
  328. data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +1 -1
  329. data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.cpp +1 -1
  330. data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.h +21 -18
  331. data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.cpp +171 -141
  332. data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.h +32 -64
  333. data/ext/p7zip/CPP/7zip/Compress/Lzham/LICENSE +22 -0
  334. data/ext/p7zip/CPP/7zip/Compress/Lzham/LzhamRegister.cpp +783 -0
  335. data/ext/p7zip/CPP/7zip/Compress/Lzham/README.md +211 -0
  336. data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham.h +803 -0
  337. data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_dynamic_lib.h +156 -0
  338. data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_exports.inc +31 -0
  339. data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_static_lib.h +59 -0
  340. data/ext/p7zip/CPP/7zip/Compress/Lzham/include/zlib.h +2 -0
  341. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/CMakeLists.txt +69 -0
  342. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_comp.h +38 -0
  343. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.cpp +244 -0
  344. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.h +46 -0
  345. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp.cpp +750 -0
  346. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.cpp +2240 -0
  347. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.h +503 -0
  348. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_state.cpp +1684 -0
  349. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.cpp +947 -0
  350. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.h +164 -0
  351. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_null_threading.h +98 -0
  352. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.cpp +214 -0
  353. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.h +535 -0
  354. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_threading.h +12 -0
  355. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.cpp +232 -0
  356. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.h +387 -0
  357. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzhamcomp.vcxproj +208 -0
  358. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/CMakeLists.txt +86 -0
  359. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.cpp +80 -0
  360. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.h +58 -0
  361. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.cpp +73 -0
  362. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.h +13 -0
  363. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_config.h +25 -0
  364. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_core.h +303 -0
  365. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_decomp.h +37 -0
  366. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_helpers.h +54 -0
  367. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.cpp +286 -0
  368. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.h +32 -0
  369. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecomp.cpp +1586 -0
  370. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.cpp +131 -0
  371. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.h +89 -0
  372. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_math.h +142 -0
  373. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.cpp +463 -0
  374. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.h +115 -0
  375. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.cpp +159 -0
  376. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.h +284 -0
  377. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.cpp +431 -0
  378. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.h +157 -0
  379. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.cpp +1527 -0
  380. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.h +494 -0
  381. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.cpp +147 -0
  382. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.h +99 -0
  383. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_traits.h +141 -0
  384. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_types.h +72 -0
  385. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_utils.h +58 -0
  386. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.cpp +83 -0
  387. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.h +628 -0
  388. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzhamdecomp.vcxproj +224 -0
  389. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzham_lib.cpp +179 -0
  390. data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzhamlib.vcxproj +187 -0
  391. data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile +10 -0
  392. data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.depend +0 -0
  393. data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.list +129 -0
  394. data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +123 -46
  395. data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.h +29 -14
  396. data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +14 -9
  397. data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.h +1 -1
  398. data/ext/p7zip/CPP/7zip/Compress/Lzma2Register.cpp +9 -7
  399. data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.cpp +24 -8
  400. data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.h +8 -1
  401. data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.cpp +30 -27
  402. data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.h +3 -1
  403. data/ext/p7zip/CPP/7zip/Compress/LzmaRegister.cpp +9 -7
  404. data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.cpp +576 -0
  405. data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.h +271 -0
  406. data/ext/p7zip/CPP/7zip/Compress/Lzx.h +32 -36
  407. data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.cpp +380 -238
  408. data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.h +170 -83
  409. data/ext/p7zip/CPP/7zip/Compress/Mtf8.h +7 -9
  410. data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.cpp +1 -5
  411. data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.cpp +51 -18
  412. data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.h +18 -8
  413. data/ext/p7zip/CPP/7zip/Compress/PpmdRegister.cpp +9 -8
  414. data/ext/p7zip/CPP/7zip/Compress/PpmdZip.cpp +61 -25
  415. data/ext/p7zip/CPP/7zip/Compress/PpmdZip.h +21 -6
  416. data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.cpp +122 -102
  417. data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.h +68 -157
  418. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile +33 -18
  419. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.depend +0 -158
  420. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.list +105 -56
  421. data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.cpp +34 -21
  422. data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.h +2 -0
  423. data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.cpp +77 -67
  424. data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.h +12 -10
  425. data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.cpp +139 -118
  426. data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.h +48 -33
  427. data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.cpp +148 -113
  428. data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.h +35 -19
  429. data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.cpp +961 -0
  430. data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.h +335 -0
  431. data/ext/p7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +13 -6
  432. data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +91 -71
  433. data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.h +2 -4
  434. data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.cpp +129 -0
  435. data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.h +13 -0
  436. data/ext/p7zip/CPP/7zip/Compress/ZDecoder.cpp +98 -20
  437. data/ext/p7zip/CPP/7zip/Compress/ZDecoder.h +19 -7
  438. data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.cpp +14 -11
  439. data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.h +32 -1
  440. data/ext/p7zip/CPP/7zip/Crypto/7zAes.cpp +137 -101
  441. data/ext/p7zip/CPP/7zip/Crypto/7zAes.h +31 -30
  442. data/ext/p7zip/CPP/7zip/Crypto/7zAesRegister.cpp +8 -9
  443. data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.cpp +39 -28
  444. data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.h +3 -3
  445. data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.cpp +62 -0
  446. data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
  447. data/ext/p7zip/CPP/7zip/Crypto/MyAes.cpp +73 -7
  448. data/ext/p7zip/CPP/7zip/Crypto/MyAes.h +25 -8
  449. data/ext/p7zip/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
  450. data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +29 -15
  451. data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +2 -1
  452. data/ext/p7zip/CPP/7zip/Crypto/RandGen.cpp +49 -34
  453. data/ext/p7zip/CPP/7zip/Crypto/RandGen.h +2 -2
  454. data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +36 -39
  455. data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.h +15 -17
  456. data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.cpp +257 -0
  457. data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.h +84 -0
  458. data/ext/p7zip/CPP/7zip/Crypto/RarAes.cpp +70 -71
  459. data/ext/p7zip/CPP/7zip/Crypto/RarAes.h +24 -19
  460. data/ext/p7zip/CPP/7zip/Crypto/Sha1Cls.h +51 -0
  461. data/ext/p7zip/CPP/7zip/Crypto/WzAes.cpp +68 -54
  462. data/ext/p7zip/CPP/7zip/Crypto/WzAes.h +37 -27
  463. data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.cpp +60 -34
  464. data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.h +28 -11
  465. data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.cpp +90 -28
  466. data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.h +13 -2
  467. data/ext/p7zip/CPP/7zip/Guid.txt +57 -11
  468. data/ext/p7zip/CPP/7zip/ICoder.h +202 -17
  469. data/ext/p7zip/CPP/7zip/IDecl.h +16 -3
  470. data/ext/p7zip/CPP/7zip/IPassword.h +1 -2
  471. data/ext/p7zip/CPP/7zip/IProgress.h +2 -16
  472. data/ext/p7zip/CPP/7zip/IStream.h +82 -13
  473. data/ext/p7zip/CPP/7zip/MyVersion.h +2 -11
  474. data/ext/p7zip/CPP/7zip/PropID.h +60 -9
  475. data/ext/p7zip/CPP/Common/C_FileIO.cpp +5 -1
  476. data/ext/p7zip/CPP/Common/C_FileIO.h +7 -1
  477. data/ext/p7zip/CPP/Common/CommandLineParser.cpp +122 -148
  478. data/ext/p7zip/CPP/Common/CommandLineParser.h +20 -29
  479. data/ext/p7zip/CPP/Common/Common.h +13 -0
  480. data/ext/p7zip/CPP/Common/CrcReg.cpp +98 -0
  481. data/ext/p7zip/CPP/Common/Defs.h +5 -10
  482. data/ext/p7zip/CPP/Common/DynLimBuf.cpp +93 -0
  483. data/ext/p7zip/CPP/Common/DynLimBuf.h +40 -0
  484. data/ext/p7zip/CPP/Common/DynamicBuffer.h +45 -31
  485. data/ext/p7zip/CPP/Common/IntToString.cpp +109 -40
  486. data/ext/p7zip/CPP/Common/IntToString.h +14 -9
  487. data/ext/p7zip/CPP/Common/Lang.cpp +120 -87
  488. data/ext/p7zip/CPP/Common/Lang.h +10 -15
  489. data/ext/p7zip/CPP/Common/ListFileUtils.cpp +82 -40
  490. data/ext/p7zip/CPP/Common/ListFileUtils.h +7 -4
  491. data/ext/p7zip/CPP/Common/MyBuffer.h +244 -0
  492. data/ext/p7zip/CPP/Common/MyCom.h +65 -28
  493. data/ext/p7zip/CPP/Common/MyGuidDef.h +1 -1
  494. data/ext/p7zip/CPP/Common/MyInitGuid.h +23 -0
  495. data/ext/p7zip/CPP/Common/MyLinux.h +42 -0
  496. data/ext/p7zip/CPP/Common/MyMap.cpp +8 -8
  497. data/ext/p7zip/CPP/Common/MyMap.h +2 -2
  498. data/ext/p7zip/CPP/Common/MyString.cpp +1643 -117
  499. data/ext/p7zip/CPP/Common/MyString.h +677 -486
  500. data/ext/p7zip/CPP/Common/MyTypes.h +38 -0
  501. data/ext/p7zip/CPP/Common/MyUnknown.h +4 -0
  502. data/ext/p7zip/CPP/Common/MyVector.cpp +0 -84
  503. data/ext/p7zip/CPP/Common/MyVector.h +472 -112
  504. data/ext/p7zip/CPP/Common/MyWindows.cpp +18 -1
  505. data/ext/p7zip/CPP/Common/MyWindows.h +8 -0
  506. data/ext/p7zip/CPP/Common/MyXml.cpp +169 -118
  507. data/ext/p7zip/CPP/Common/MyXml.h +14 -11
  508. data/ext/p7zip/CPP/Common/NewHandler.cpp +39 -0
  509. data/ext/p7zip/CPP/Common/NewHandler.h +55 -2
  510. data/ext/p7zip/CPP/Common/Random.h +14 -0
  511. data/ext/p7zip/CPP/Common/Sha1Reg.cpp +40 -0
  512. data/ext/p7zip/CPP/Common/Sha256Reg.cpp +40 -0
  513. data/ext/p7zip/CPP/Common/StdInStream.cpp +46 -27
  514. data/ext/p7zip/CPP/Common/StdInStream.h +11 -10
  515. data/ext/p7zip/CPP/Common/StdOutStream.cpp +48 -35
  516. data/ext/p7zip/CPP/Common/StdOutStream.h +44 -17
  517. data/ext/p7zip/CPP/Common/StringConvert.cpp +56 -17
  518. data/ext/p7zip/CPP/Common/StringConvert.h +7 -3
  519. data/ext/p7zip/CPP/Common/StringToInt.cpp +102 -48
  520. data/ext/p7zip/CPP/Common/StringToInt.h +13 -10
  521. data/ext/p7zip/CPP/Common/TextConfig.cpp +33 -47
  522. data/ext/p7zip/CPP/Common/TextConfig.h +3 -6
  523. data/ext/p7zip/CPP/Common/UTFConvert.cpp +218 -75
  524. data/ext/p7zip/CPP/Common/UTFConvert.h +4 -3
  525. data/ext/p7zip/CPP/Common/Wildcard.cpp +345 -125
  526. data/ext/p7zip/CPP/Common/Wildcard.h +82 -13
  527. data/ext/p7zip/CPP/Common/XzCrc64Reg.cpp +42 -0
  528. data/ext/p7zip/CPP/Windows/FileDir.cpp +427 -475
  529. data/ext/p7zip/CPP/Windows/FileDir.h +94 -72
  530. data/ext/p7zip/CPP/Windows/FileFind.cpp +235 -244
  531. data/ext/p7zip/CPP/Windows/FileFind.h +63 -59
  532. data/ext/p7zip/CPP/Windows/FileIO.cpp +29 -46
  533. data/ext/p7zip/CPP/Windows/FileIO.h +40 -42
  534. data/ext/p7zip/CPP/Windows/FileName.cpp +696 -17
  535. data/ext/p7zip/CPP/Windows/FileName.h +11 -3
  536. data/ext/p7zip/CPP/Windows/NtCheck.h +2 -0
  537. data/ext/p7zip/CPP/Windows/PropVariant.cpp +134 -30
  538. data/ext/p7zip/CPP/Windows/PropVariant.h +80 -24
  539. data/ext/p7zip/CPP/Windows/PropVariantUtils.cpp +89 -18
  540. data/ext/p7zip/CPP/Windows/PropVariantUtils.h +12 -7
  541. data/ext/p7zip/CPP/Windows/System.cpp +20 -15
  542. data/ext/p7zip/CPP/Windows/System.h +3 -2
  543. data/ext/p7zip/CPP/Windows/TimeUtils.cpp +203 -0
  544. data/ext/p7zip/CPP/Windows/TimeUtils.h +24 -0
  545. data/ext/p7zip/CPP/include_windows/basetyps.h +4 -4
  546. data/ext/p7zip/CPP/include_windows/windows.h +17 -11
  547. data/ext/p7zip/CPP/myWindows/StdAfx.h +97 -5
  548. data/ext/p7zip/CPP/myWindows/config.h +20 -5
  549. data/ext/p7zip/CPP/myWindows/myPrivate.h +8 -0
  550. data/ext/p7zip/CPP/myWindows/wine_date_and_time.cpp +34 -0
  551. data/ext/p7zip/ChangeLog +283 -35
  552. data/ext/p7zip/{DOCS → DOC}/7zC.txt +6 -13
  553. data/ext/p7zip/{DOCS → DOC}/License.txt +3 -2
  554. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/add.htm +93 -87
  555. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/bench.htm +88 -79
  556. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/delete.htm +62 -59
  557. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract.htm +96 -91
  558. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract_full.htm +73 -68
  559. data/ext/p7zip/DOC/MANUAL/cmdline/commands/hash.htm +65 -0
  560. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/index.htm +36 -33
  561. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/list.htm +78 -77
  562. data/ext/p7zip/DOC/MANUAL/cmdline/commands/rename.htm +51 -0
  563. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/style.css +232 -232
  564. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/test.htm +47 -46
  565. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/update.htm +71 -66
  566. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/exit_codes.htm +27 -27
  567. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/index.htm +29 -29
  568. data/ext/p7zip/{DOCS/MANUAL/switches → DOC/MANUAL/cmdline}/style.css +232 -232
  569. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_exclude.htm +56 -56
  570. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_include.htm +80 -83
  571. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_no.htm +52 -52
  572. data/ext/p7zip/DOC/MANUAL/cmdline/switches/bb.htm +61 -0
  573. data/ext/p7zip/DOC/MANUAL/cmdline/switches/bs.htm +67 -0
  574. data/ext/p7zip/DOC/MANUAL/cmdline/switches/charset.htm +61 -0
  575. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/exclude.htm +71 -60
  576. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/include.htm +89 -87
  577. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/index.htm +95 -64
  578. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/large_pages.htm +59 -50
  579. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/list_tech.htm +36 -36
  580. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/method.htm +738 -625
  581. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/output_dir.htm +53 -53
  582. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/overwrite.htm +56 -56
  583. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/password.htm +55 -54
  584. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/recurse.htm +85 -83
  585. data/ext/p7zip/DOC/MANUAL/cmdline/switches/sa.htm +58 -0
  586. data/ext/p7zip/DOC/MANUAL/cmdline/switches/scc.htm +42 -0
  587. data/ext/p7zip/DOC/MANUAL/cmdline/switches/scrc.htm +53 -0
  588. data/ext/p7zip/DOC/MANUAL/cmdline/switches/sdel.htm +39 -0
  589. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/sfx.htm +153 -156
  590. data/ext/p7zip/DOC/MANUAL/cmdline/switches/shared.htm +40 -0
  591. data/ext/p7zip/DOC/MANUAL/cmdline/switches/sni.htm +56 -0
  592. data/ext/p7zip/DOC/MANUAL/cmdline/switches/sns.htm +77 -0
  593. data/ext/p7zip/DOC/MANUAL/cmdline/switches/spf.htm +80 -0
  594. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ssc.htm +50 -50
  595. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdin.htm +56 -55
  596. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdout.htm +54 -50
  597. data/ext/p7zip/DOC/MANUAL/cmdline/switches/stl.htm +39 -0
  598. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stop_switch.htm +31 -31
  599. data/ext/p7zip/DOC/MANUAL/cmdline/switches/stx.htm +50 -0
  600. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline/switches}/style.css +232 -232
  601. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/type.htm +121 -83
  602. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/update.htm +177 -176
  603. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/volume.htm +49 -49
  604. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/working_dir.htm +56 -55
  605. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/yes.htm +48 -48
  606. data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/syntax.htm +120 -120
  607. data/ext/p7zip/DOC/MANUAL/fm/about.htm +21 -0
  608. data/ext/p7zip/DOC/MANUAL/fm/benchmark.htm +56 -0
  609. data/ext/p7zip/DOC/MANUAL/fm/index.htm +54 -0
  610. data/ext/p7zip/DOC/MANUAL/fm/menu.htm +154 -0
  611. data/ext/p7zip/DOC/MANUAL/fm/options.htm +152 -0
  612. data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/add.htm +311 -0
  613. data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/extract.htm +78 -0
  614. data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/index.htm +63 -0
  615. data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/style.css +232 -0
  616. data/ext/p7zip/DOC/MANUAL/fm/plugins/index.htm +22 -0
  617. data/ext/p7zip/DOC/MANUAL/fm/plugins/style.css +232 -0
  618. data/ext/p7zip/DOC/MANUAL/fm/style.css +232 -0
  619. data/ext/p7zip/DOC/MANUAL/general/7z.htm +117 -0
  620. data/ext/p7zip/DOC/MANUAL/general/faq.htm +125 -0
  621. data/ext/p7zip/DOC/MANUAL/general/formats.htm +100 -0
  622. data/ext/p7zip/DOC/MANUAL/general/index.htm +27 -0
  623. data/ext/p7zip/DOC/MANUAL/general/license.htm +30 -0
  624. data/ext/p7zip/DOC/MANUAL/general/performance.htm +98 -0
  625. data/ext/p7zip/DOC/MANUAL/general/style.css +232 -0
  626. data/ext/p7zip/DOC/MANUAL/general/thanks.htm +43 -0
  627. data/ext/p7zip/DOC/MANUAL/start.htm +37 -0
  628. data/ext/p7zip/DOC/MANUAL/style.css +232 -0
  629. data/ext/p7zip/DOC/Methods.txt +158 -0
  630. data/ext/p7zip/{DOCS → DOC}/copying.txt +9 -11
  631. data/ext/p7zip/DOC/lzma.txt +328 -0
  632. data/ext/p7zip/{DOCS → DOC}/readme.txt +42 -65
  633. data/ext/p7zip/{DOCS/history.txt → DOC/src-history.txt} +88 -2
  634. data/ext/p7zip/README +117 -91
  635. data/ext/p7zip/TODO +0 -2
  636. data/ext/p7zip/install.sh +31 -29
  637. data/ext/p7zip/last_error +1 -0
  638. data/ext/p7zip/makefile +29 -125
  639. data/ext/p7zip/makefile.afl +23 -0
  640. data/ext/p7zip/makefile.aix_gcc +5 -4
  641. data/ext/p7zip/makefile.android_arm +49 -0
  642. data/ext/p7zip/makefile.beos +5 -4
  643. data/ext/p7zip/makefile.common +150 -0
  644. data/ext/p7zip/makefile.crc32 +3 -3
  645. data/ext/p7zip/makefile.cygwin +5 -4
  646. data/ext/p7zip/makefile.cygwin64 +21 -0
  647. data/ext/p7zip/makefile.cygwin64_asm +22 -0
  648. data/ext/p7zip/makefile.cygwin_asm +6 -4
  649. data/ext/p7zip/makefile.cygwin_clang +21 -0
  650. data/ext/p7zip/makefile.cygwin_clang_asm +23 -0
  651. data/ext/p7zip/{makefile.djgpp_old → makefile.djgpp} +5 -4
  652. data/ext/p7zip/makefile.djgpp_watt +7 -5
  653. data/ext/p7zip/makefile.freebsd5 +5 -4
  654. data/ext/p7zip/{makefile.freebsd6 → makefile.freebsd6+} +6 -5
  655. data/ext/p7zip/makefile.glb +27 -18
  656. data/ext/p7zip/makefile.gprof +3 -2
  657. data/ext/p7zip/makefile.haiku +19 -0
  658. data/ext/p7zip/makefile.hpux-acc +3 -2
  659. data/ext/p7zip/makefile.hpux-acc_64 +3 -2
  660. data/ext/p7zip/makefile.hpux-gcc +5 -4
  661. data/ext/p7zip/makefile.linux_amd64 +5 -4
  662. data/ext/p7zip/makefile.linux_amd64_asm +12 -5
  663. data/ext/p7zip/makefile.linux_amd64_asm_icc +5 -3
  664. data/ext/p7zip/makefile.linux_amd64_sanitizer +26 -0
  665. data/ext/p7zip/makefile.linux_any_cpu +5 -4
  666. data/ext/p7zip/makefile.linux_any_cpu_gcc_4.X +7 -4
  667. data/ext/p7zip/makefile.linux_clang_amd64_asm +25 -0
  668. data/ext/p7zip/makefile.linux_clang_amd64_asm_sanitize +27 -0
  669. data/ext/p7zip/makefile.linux_cross_aarch64 +25 -0
  670. data/ext/p7zip/makefile.linux_cross_arm +7 -4
  671. data/ext/p7zip/makefile.linux_cross_djgpp +27 -0
  672. data/ext/p7zip/makefile.linux_cross_m68k +26 -0
  673. data/ext/p7zip/makefile.linux_cross_mipsel +27 -0
  674. data/ext/p7zip/makefile.linux_cross_ppc +25 -0
  675. data/ext/p7zip/makefile.linux_cross_ppc64 +25 -0
  676. data/ext/p7zip/makefile.linux_cross_ppc64le +25 -0
  677. data/ext/p7zip/makefile.linux_cross_s390x +25 -0
  678. data/ext/p7zip/makefile.linux_cross_sparc64 +25 -0
  679. data/ext/p7zip/makefile.linux_gcc6_sanitize +23 -0
  680. data/ext/p7zip/makefile.linux_gcc_2.95_no_need_for_libstdc +6 -4
  681. data/ext/p7zip/makefile.linux_other +6 -5
  682. data/ext/p7zip/makefile.linux_s390x +5 -4
  683. data/ext/p7zip/{makefile.machine_base → makefile.linux_scan-build} +5 -4
  684. data/ext/p7zip/makefile.linux_valgrind +25 -0
  685. data/ext/p7zip/{makefile.linux_clang_amd64 → makefile.linux_x32} +6 -5
  686. data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X +10 -5
  687. data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X_fltk +8 -4
  688. data/ext/p7zip/makefile.linux_x86_asm_gcc_mudflap_4.X +4 -2
  689. data/ext/p7zip/makefile.linux_x86_asm_icc +4 -2
  690. data/ext/p7zip/makefile.linux_x86_icc +3 -2
  691. data/ext/p7zip/makefile.macosx_arm64 +17 -0
  692. data/ext/p7zip/{makefile.macosx_32bits → makefile.macosx_gcc_32bits} +3 -2
  693. data/ext/p7zip/{makefile.macosx_32bits_asm → makefile.macosx_gcc_32bits_asm} +5 -3
  694. data/ext/p7zip/{makefile.macosx_32bits_ppc → makefile.macosx_gcc_32bits_ppc} +3 -2
  695. data/ext/p7zip/{makefile.macosx_64bits → makefile.macosx_gcc_64bits} +3 -2
  696. data/ext/p7zip/makefile.macosx_llvm_64bits +9 -3
  697. data/ext/p7zip/makefile.netbsd +5 -4
  698. data/ext/p7zip/makefile.netware_asm_gcc_3.X +6 -4
  699. data/ext/p7zip/makefile.oldmake +41 -130
  700. data/ext/p7zip/makefile.openbsd +7 -3
  701. data/ext/p7zip/makefile.openbsd_no_port +9 -5
  702. data/ext/p7zip/makefile.qnx_shared.bin +5 -4
  703. data/ext/p7zip/makefile.qnx_static +5 -4
  704. data/ext/p7zip/makefile.solaris_sparc_CC_32 +5 -4
  705. data/ext/p7zip/makefile.solaris_sparc_CC_64 +6 -4
  706. data/ext/p7zip/makefile.solaris_sparc_gcc +7 -6
  707. data/ext/p7zip/makefile.solaris_x86 +5 -4
  708. data/ext/p7zip/makefile.tru64 +5 -4
  709. data/ext/seven_zip_ruby/extconf.rb +92 -6
  710. data/ext/seven_zip_ruby/seven_zip_archive.cpp +40 -17
  711. data/ext/seven_zip_ruby/seven_zip_archive.h +1 -1
  712. data/ext/seven_zip_ruby/utils.cpp +267 -124
  713. data/ext/seven_zip_ruby/utils.h +2 -0
  714. data/lib/seven_zip_ruby/7z.dll +0 -0
  715. data/lib/seven_zip_ruby/7z.sfx +0 -0
  716. data/lib/seven_zip_ruby/7z64.dll +0 -0
  717. data/lib/seven_zip_ruby/7zCon.sfx +0 -0
  718. data/lib/seven_zip_ruby/seven_zip_reader.rb +16 -1
  719. data/lib/seven_zip_ruby/version.rb +1 -1
  720. data/p7zip/.gitignore +7 -0
  721. data/p7zip/README.txt +29 -0
  722. data/p7zip/extract.sh +134 -0
  723. data/spec/seven_zip_ruby_spec.rb +22 -13
  724. data/test/res/The Flying Spaghetti Monster.txt +3 -0
  725. data/test/res/The Three Little Pigs.txt +5 -0
  726. data/test/res/UTF_content.txt +3 -0
  727. data/test/res/test_reader_data.7z +0 -0
  728. data/test/res/test_reader_filename_cp932.7z +0 -0
  729. data/test/res/test_reader_files.7z +0 -0
  730. data/test/test_seven_zip_reader.rb +187 -0
  731. data/test/test_seven_zip_writer.rb +184 -0
  732. metadata +267 -219
  733. data/.github/workflows/test-and-release.yml +0 -43
  734. data/ext/C/Types.h +0 -254
  735. data/ext/CPP/7zip/Archive/IArchive.h +0 -234
  736. data/ext/CPP/7zip/IDecl.h +0 -15
  737. data/ext/CPP/7zip/IPassword.h +0 -24
  738. data/ext/CPP/7zip/IProgress.h +0 -33
  739. data/ext/CPP/7zip/IStream.h +0 -58
  740. data/ext/CPP/7zip/PropID.h +0 -76
  741. data/ext/CPP/Common/MyCom.h +0 -225
  742. data/ext/CPP/Common/MyGuidDef.h +0 -54
  743. data/ext/CPP/Common/MyInitGuid.h +0 -22
  744. data/ext/CPP/Common/MyUnknown.h +0 -13
  745. data/ext/CPP/Common/MyWindows.h +0 -204
  746. data/ext/CPP/Common/Types.h +0 -11
  747. data/ext/CPP/Windows/PropVariant.h +0 -56
  748. data/ext/CPP/include_windows/basetyps.h +0 -19
  749. data/ext/CPP/include_windows/tchar.h +0 -89
  750. data/ext/CPP/include_windows/windows.h +0 -194
  751. data/ext/p7zip/Asm/x64/7zCrcT8U.asm +0 -103
  752. data/ext/p7zip/Asm/x86/7zCrcT8U.asm +0 -101
  753. data/ext/p7zip/C/7zCrcT8.c +0 -43
  754. data/ext/p7zip/C/Alloc.back3 +0 -238
  755. data/ext/p7zip/C/Alloc.c.back +0 -243
  756. data/ext/p7zip/C/Alloc.c.back2 +0 -222
  757. data/ext/p7zip/C/LzmaUtil/Lzma86Dec.h +0 -51
  758. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.cpp +0 -149
  759. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.h +0 -58
  760. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.cpp +0 -24
  761. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.h +0 -28
  762. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmRegister.cpp +0 -13
  763. data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.cpp +0 -239
  764. data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.h +0 -28
  765. data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.cpp +0 -389
  766. data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.h +0 -119
  767. data/ext/p7zip/CPP/7zip/Archive/Com/ComRegister.cpp +0 -13
  768. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.cpp +0 -240
  769. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.h +0 -80
  770. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.cpp +0 -239
  771. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.h +0 -88
  772. data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.cpp +0 -15
  773. data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.h +0 -37
  774. data/ext/p7zip/CPP/7zip/Archive/DebHandler.cpp +0 -413
  775. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.cpp +0 -243
  776. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.h +0 -26
  777. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.cpp +0 -480
  778. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.h +0 -154
  779. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsRegister.cpp +0 -13
  780. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.cpp +0 -21
  781. data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.cpp +0 -478
  782. data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.h +0 -123
  783. data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.cpp +0 -55
  784. data/ext/p7zip/CPP/7zip/Archive/Rar/RarRegister.cpp +0 -13
  785. data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp +0 -78
  786. data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.h +0 -49
  787. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfRegister.cpp +0 -13
  788. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.cpp +0 -36
  789. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItemEx.h +0 -34
  790. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zFM.txt +0 -163
  791. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zG.txt +0 -131
  792. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7za.txt +0 -253
  793. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_ALL.txt +0 -32
  794. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_Format7zFree.txt +0 -290
  795. data/ext/p7zip/CPP/7zip/CMAKE/generate.sh +0 -37
  796. data/ext/p7zip/CPP/7zip/CMAKE/generate_xcode.sh +0 -32
  797. data/ext/p7zip/CPP/7zip/Common/LockedStream.cpp +0 -23
  798. data/ext/p7zip/CPP/7zip/Common/LockedStream.h +0 -38
  799. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.cpp +0 -309
  800. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.h +0 -98
  801. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.cpp +0 -90
  802. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.h +0 -59
  803. data/ext/p7zip/CPP/7zip/Compress/BranchCoder.cpp +0 -19
  804. data/ext/p7zip/CPP/7zip/Compress/BranchCoder.h +0 -44
  805. data/ext/p7zip/CPP/7zip/Compress/DllExports.cpp +0 -39
  806. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaAlone.cpp +0 -531
  807. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.cpp +0 -1018
  808. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.h +0 -48
  809. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.cpp +0 -311
  810. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.h +0 -20
  811. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/makefile +0 -173
  812. data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.cpp +0 -90
  813. data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.h +0 -46
  814. data/ext/p7zip/CPP/7zip/Compress/RangeCoder.h +0 -205
  815. data/ext/p7zip/CPP/7zip/Compress/RangeCoderBit.h +0 -114
  816. data/ext/p7zip/CPP/7zip/Crypto/Sha1.cpp +0 -229
  817. data/ext/p7zip/CPP/7zip/Crypto/Sha1.h +0 -68
  818. data/ext/p7zip/CPP/7zip/PREMAKE/generate.sh +0 -18
  819. data/ext/p7zip/CPP/7zip/PREMAKE/premake4.lua +0 -263
  820. data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA.pro +0 -228
  821. data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA_osx.pro +0 -228
  822. data/ext/p7zip/CPP/7zip/QMAKE/test_emul/test_emul.pro +0 -26
  823. data/ext/p7zip/CPP/7zip/TEST/TestUI/TestUI.cpp +0 -560
  824. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile +0 -33
  825. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.depend +0 -577
  826. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.list +0 -16
  827. data/ext/p7zip/CPP/Common/Buffer.h +0 -77
  828. data/ext/p7zip/CPP/Common/Types.h +0 -11
  829. data/ext/p7zip/CPP/Windows/COM.cpp +0 -37
  830. data/ext/p7zip/CPP/Windows/COM.h +0 -69
  831. data/ext/p7zip/CPP/Windows/Clipboard.cpp +0 -160
  832. data/ext/p7zip/CPP/Windows/Clipboard.h +0 -28
  833. data/ext/p7zip/CPP/Windows/CommonDialog.h +0 -19
  834. data/ext/p7zip/CPP/Windows/Control/ComboBox.h +0 -82
  835. data/ext/p7zip/CPP/Windows/Control/Controls.cpp +0 -515
  836. data/ext/p7zip/CPP/Windows/Control/Dialog.cpp +0 -560
  837. data/ext/p7zip/CPP/Windows/Control/Dialog.h +0 -179
  838. data/ext/p7zip/CPP/Windows/Control/DialogImpl.h +0 -73
  839. data/ext/p7zip/CPP/Windows/Control/Edit.h +0 -24
  840. data/ext/p7zip/CPP/Windows/Control/ListView.h +0 -164
  841. data/ext/p7zip/CPP/Windows/Control/ProgressBar.h +0 -34
  842. data/ext/p7zip/CPP/Windows/Control/Static.h +0 -23
  843. data/ext/p7zip/CPP/Windows/Control/StatusBar.h +0 -56
  844. data/ext/p7zip/CPP/Windows/Control/Window2.cpp +0 -211
  845. data/ext/p7zip/CPP/Windows/Control/Window2.h +0 -111
  846. data/ext/p7zip/CPP/Windows/DLL.cpp +0 -193
  847. data/ext/p7zip/CPP/Windows/DLL.h +0 -48
  848. data/ext/p7zip/CPP/Windows/Error.cpp +0 -58
  849. data/ext/p7zip/CPP/Windows/Error.h +0 -33
  850. data/ext/p7zip/CPP/Windows/Menu.h +0 -4
  851. data/ext/p7zip/CPP/Windows/PropVariantConversions.cpp +0 -142
  852. data/ext/p7zip/CPP/Windows/PropVariantConversions.h +0 -14
  853. data/ext/p7zip/CPP/Windows/Registry.cpp +0 -313
  854. data/ext/p7zip/CPP/Windows/Registry.h +0 -113
  855. data/ext/p7zip/CPP/Windows/ResourceString.h +0 -22
  856. data/ext/p7zip/CPP/Windows/Shell.h +0 -21
  857. data/ext/p7zip/CPP/Windows/Time.cpp +0 -88
  858. data/ext/p7zip/CPP/Windows/Time.h +0 -21
  859. data/ext/p7zip/CPP/Windows/Window.cpp +0 -101
  860. data/ext/p7zip/CPP/Windows/Window.h +0 -43
  861. data/ext/p7zip/CPP/myWindows/initguid.h +0 -4
  862. data/ext/p7zip/CPP/myWindows/makefile +0 -21
  863. data/ext/p7zip/CPP/myWindows/makefile.depend +0 -32
  864. data/ext/p7zip/CPP/myWindows/makefile.list +0 -28
  865. data/ext/p7zip/CPP/myWindows/myAddExeFlag.cpp +0 -20
  866. data/ext/p7zip/CPP/myWindows/myGetTickCount.cpp +0 -8
  867. data/ext/p7zip/CPP/myWindows/mySplitCommandLine.cpp +0 -82
  868. data/ext/p7zip/CPP/myWindows/test_emul.cpp +0 -745
  869. data/ext/p7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp +0 -741
  870. data/ext/p7zip/DOCS/MANUAL/switches/charset.htm +0 -49
  871. data/ext/p7zip/DOCS/Methods.txt +0 -152
  872. data/ext/p7zip/DOCS/lzma.txt +0 -598
  873. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/ChangeLog +0 -41
  874. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme +0 -21
  875. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme.u7z +0 -30
  876. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/u7z +0 -133
  877. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/README +0 -21
  878. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/check.sh +0 -117
  879. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/files.tar +0 -0
  880. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/man1/p7zip.1 +0 -33
  881. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/p7zip +0 -144
  882. data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-shared +0 -14
  883. data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-static +0 -10
  884. data/ext/p7zip/integration_context_menu.txt +0 -51
  885. data/ext/p7zip/makefile.rules +0 -661
  886. /data/ext/p7zip/{DOCS → DOC}/7zFormat.txt +0 -0
  887. /data/ext/p7zip/{DOCS → DOC}/unRarLicense.txt +0 -0
@@ -7,8 +7,11 @@
7
7
  #include "../../../C/XzEnc.h"
8
8
 
9
9
  #include "../../Common/ComTry.h"
10
+ #include "../../Common/Defs.h"
10
11
  #include "../../Common/IntToString.h"
11
12
 
13
+ #include "../../Windows/PropVariant.h"
14
+
12
15
  #include "../ICoder.h"
13
16
 
14
17
  #include "../Common/CWrappers.h"
@@ -20,7 +23,11 @@
20
23
 
21
24
  #include "IArchive.h"
22
25
 
26
+ #ifndef EXTRACT_ONLY
23
27
  #include "Common/HandlerOut.h"
28
+ #endif
29
+
30
+ #include "XzHandler.h"
24
31
 
25
32
  using namespace NWindows;
26
33
 
@@ -31,46 +38,79 @@ HRESULT SetLzma2Prop(PROPID propID, const PROPVARIANT &prop, CLzma2EncProps &lzm
31
38
 
32
39
  }}
33
40
 
34
- static void *SzAlloc(void *, size_t size) { return MyAlloc(size); }
35
- static void SzFree(void *, void *address) { MyFree(address); }
36
- static ISzAlloc g_Alloc = { SzAlloc, SzFree };
37
-
38
41
  namespace NArchive {
39
42
  namespace NXz {
40
43
 
41
44
  struct CCrc64Gen { CCrc64Gen() { Crc64GenerateTable(); } } g_Crc64TableInit;
42
45
 
46
+ static const char *k_LZMA2_Name = "LZMA2";
47
+
48
+ void CStatInfo::Clear()
49
+ {
50
+ InSize = 0;
51
+ OutSize = 0;
52
+ PhySize = 0;
53
+
54
+ NumStreams = 0;
55
+ NumBlocks = 0;
56
+
57
+ UnpackSize_Defined = false;
58
+
59
+ NumStreams_Defined = false;
60
+ NumBlocks_Defined = false;
61
+
62
+ IsArc = false;
63
+ UnexpectedEnd = false;
64
+ DataAfterEnd = false;
65
+ Unsupported = false;
66
+ HeadersError = false;
67
+ DataError = false;
68
+ CrcError = false;
69
+ }
70
+
43
71
  class CHandler:
44
72
  public IInArchive,
45
73
  public IArchiveOpenSeq,
46
74
  #ifndef EXTRACT_ONLY
47
75
  public IOutArchive,
48
76
  public ISetProperties,
49
- public COutHandler,
77
+ public CMultiMethodProps,
50
78
  #endif
51
79
  public CMyUnknownImp
52
80
  {
53
- Int64 _startPosition;
54
- UInt64 _packSize;
55
- UInt64 _unpackSize;
56
- UInt64 _numBlocks;
57
- AString _methodsString;
58
- bool _useSeq;
59
- UInt64 _unpackSizeDefined;
60
- UInt64 _packSizeDefined;
81
+ CStatInfo _stat;
82
+
83
+ bool _isArc;
84
+ bool _needSeekToStart;
85
+ bool _phySize_Defined;
61
86
 
62
87
  CMyComPtr<IInStream> _stream;
63
88
  CMyComPtr<ISequentialInStream> _seqStream;
64
89
 
65
- UInt32 _crcSize;
90
+ AString _methodsString;
91
+
92
+ #ifndef EXTRACT_ONLY
93
+
94
+ UInt32 _filterId;
66
95
 
67
96
  void Init()
68
97
  {
69
- _crcSize = 4;
70
- COutHandler::Init();
98
+ _filterId = 0;
99
+ CMultiMethodProps::Init();
71
100
  }
101
+
102
+ #endif
72
103
 
73
- HRESULT Open2(IInStream *inStream, IArchiveOpenCallback *callback);
104
+ HRESULT Open2(IInStream *inStream, /* UInt32 flags, */ IArchiveOpenCallback *callback);
105
+
106
+ HRESULT Decode2(ISequentialInStream *seqInStream, ISequentialOutStream *outStream,
107
+ CDecoder &decoder, ICompressProgressInfo *progress)
108
+ {
109
+ RINOK(decoder.Decode(seqInStream, outStream, progress));
110
+ _stat = decoder;
111
+ _phySize_Defined = true;
112
+ return S_OK;
113
+ }
74
114
 
75
115
  public:
76
116
  MY_QUERYINTERFACE_BEGIN2(IInArchive)
@@ -87,7 +127,7 @@ public:
87
127
 
88
128
  #ifndef EXTRACT_ONLY
89
129
  INTERFACE_IOutArchive(;)
90
- STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProps);
130
+ STDMETHOD(SetProperties)(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps);
91
131
  #endif
92
132
 
93
133
  CHandler();
@@ -95,63 +135,66 @@ public:
95
135
 
96
136
  CHandler::CHandler()
97
137
  {
138
+ #ifndef EXTRACT_ONLY
98
139
  Init();
140
+ #endif
99
141
  }
100
142
 
101
- STATPROPSTG kProps[] =
143
+
144
+ static const Byte kProps[] =
102
145
  {
103
- { NULL, kpidSize, VT_UI8},
104
- { NULL, kpidPackSize, VT_UI8},
105
- { NULL, kpidMethod, VT_BSTR}
146
+ kpidSize,
147
+ kpidPackSize,
148
+ kpidMethod
106
149
  };
107
150
 
108
- STATPROPSTG kArcProps[] =
151
+ static const Byte kArcProps[] =
109
152
  {
110
- { NULL, kpidMethod, VT_BSTR},
111
- { NULL, kpidNumBlocks, VT_UI4}
153
+ kpidMethod,
154
+ kpidNumStreams,
155
+ kpidNumBlocks
112
156
  };
113
157
 
114
158
  IMP_IInArchive_Props
115
159
  IMP_IInArchive_ArcProps
116
160
 
117
- static char GetHex(Byte value)
161
+ static inline char GetHex(unsigned value)
118
162
  {
119
163
  return (char)((value < 10) ? ('0' + value) : ('A' + (value - 10)));
120
164
  }
121
165
 
122
- static inline void AddHexToString(AString &res, Byte value)
166
+ static inline void AddHexToString(AString &s, Byte value)
123
167
  {
124
- res += GetHex((Byte)(value >> 4));
125
- res += GetHex((Byte)(value & 0xF));
168
+ s += GetHex(value >> 4);
169
+ s += GetHex(value & 0xF);
126
170
  }
127
171
 
128
- static AString ConvertUInt32ToString(UInt32 value)
172
+ static void AddUInt32ToString(AString &s, UInt32 value)
129
173
  {
130
- char temp[32];
131
- ::ConvertUInt32ToString(value, temp);
132
- return temp;
174
+ char temp[16];
175
+ ConvertUInt32ToString(value, temp);
176
+ s += temp;
133
177
  }
134
178
 
135
- static AString Lzma2PropToString(int prop)
179
+ static void Lzma2PropToString(AString &s, unsigned prop)
136
180
  {
181
+ char c = 0;
182
+ UInt32 size;
137
183
  if ((prop & 1) == 0)
138
- return ConvertUInt32ToString(prop / 2 + 12);
139
- AString res;
140
- char c;
141
-
142
- UInt32 size = (2 | ((prop) & 1)) << ((prop) / 2 + 1);
143
-
144
- if (prop > 17)
145
- {
146
- res = ConvertUInt32ToString(size >> 10);
147
- c = 'm';
148
- }
184
+ size = prop / 2 + 12;
149
185
  else
150
186
  {
151
- res = ConvertUInt32ToString(size);
152
187
  c = 'k';
188
+ size = (UInt32)(2 | (prop & 1)) << (prop / 2 + 1);
189
+ if (prop > 17)
190
+ {
191
+ size >>= 10;
192
+ c = 'm';
193
+ }
153
194
  }
154
- return res + c;
195
+ AddUInt32ToString(s, size);
196
+ if (c != 0)
197
+ s += c;
155
198
  }
156
199
 
157
200
  struct CMethodNamePair
@@ -160,11 +203,11 @@ struct CMethodNamePair
160
203
  const char *Name;
161
204
  };
162
205
 
163
- static CMethodNamePair g_NamePairs[] =
206
+ static const CMethodNamePair g_NamePairs[] =
164
207
  {
165
208
  { XZ_ID_Subblock, "SB" },
166
209
  { XZ_ID_Delta, "Delta" },
167
- { XZ_ID_X86, "x86" },
210
+ { XZ_ID_X86, "BCJ" },
168
211
  { XZ_ID_PPC, "PPC" },
169
212
  { XZ_ID_IA64, "IA64" },
170
213
  { XZ_ID_ARM, "ARM" },
@@ -175,25 +218,29 @@ static CMethodNamePair g_NamePairs[] =
175
218
 
176
219
  static AString GetMethodString(const CXzFilter &f)
177
220
  {
178
- AString s;
179
-
180
- for (int i = 0; i < sizeof(g_NamePairs) / sizeof(g_NamePairs[i]); i++)
221
+ const char *p = NULL;
222
+ for (unsigned i = 0; i < ARRAY_SIZE(g_NamePairs); i++)
181
223
  if (g_NamePairs[i].Id == f.id)
182
- s = g_NamePairs[i].Name;
183
- if (s.IsEmpty())
224
+ {
225
+ p = g_NamePairs[i].Name;
226
+ break;
227
+ }
228
+ char temp[32];
229
+ if (!p)
184
230
  {
185
- char temp[32];
186
231
  ::ConvertUInt64ToString(f.id, temp);
187
- s = temp;
232
+ p = temp;
188
233
  }
189
234
 
235
+ AString s = p;
236
+
190
237
  if (f.propsSize > 0)
191
238
  {
192
239
  s += ':';
193
240
  if (f.id == XZ_ID_LZMA2 && f.propsSize == 1)
194
- s += Lzma2PropToString(f.props[0]);
241
+ Lzma2PropToString(s, f.props[0]);
195
242
  else if (f.id == XZ_ID_Delta && f.propsSize == 1)
196
- s += ConvertUInt32ToString((UInt32)f.props[0] + 1);
243
+ AddUInt32ToString(s, (UInt32)f.props[0] + 1);
197
244
  else
198
245
  {
199
246
  s += '[';
@@ -207,29 +254,28 @@ static AString GetMethodString(const CXzFilter &f)
207
254
 
208
255
  static void AddString(AString &dest, const AString &src)
209
256
  {
210
- if (!dest.IsEmpty())
211
- dest += ' ';
257
+ dest.Add_Space_if_NotEmpty();
212
258
  dest += src;
213
259
  }
214
260
 
215
- static const char *kChecks[] =
216
- {
217
- "NoCheck",
218
- "CRC32",
219
- NULL,
220
- NULL,
221
- "CRC64",
222
- NULL,
223
- NULL,
224
- NULL,
225
- NULL,
226
- NULL,
227
- "SHA256",
228
- NULL,
229
- NULL,
230
- NULL,
231
- NULL,
232
- NULL
261
+ static const char * const kChecks[] =
262
+ {
263
+ "NoCheck"
264
+ , "CRC32"
265
+ , NULL
266
+ , NULL
267
+ , "CRC64"
268
+ , NULL
269
+ , NULL
270
+ , NULL
271
+ , NULL
272
+ , NULL
273
+ , "SHA256"
274
+ , NULL
275
+ , NULL
276
+ , NULL
277
+ , NULL
278
+ , NULL
233
279
  };
234
280
 
235
281
  static AString GetCheckString(const CXzs &xzs)
@@ -246,7 +292,10 @@ static AString GetCheckString(const CXzs &xzs)
246
292
  if (kChecks[i])
247
293
  s2 = kChecks[i];
248
294
  else
249
- s2 = "Check-" + ConvertUInt32ToString((UInt32)i);
295
+ {
296
+ s2 = "Check-";
297
+ AddUInt32ToString(s2, (UInt32)i);
298
+ }
250
299
  AddString(s, s2);
251
300
  }
252
301
  return s;
@@ -255,12 +304,26 @@ static AString GetCheckString(const CXzs &xzs)
255
304
  STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
256
305
  {
257
306
  COM_TRY_BEGIN
258
- NWindows::NCOM::CPropVariant prop;
259
- switch(propID)
307
+ NCOM::CPropVariant prop;
308
+ switch (propID)
260
309
  {
261
- case kpidNumBlocks: if (!_useSeq) prop = _numBlocks; break;
262
- case kpidPhySize: if (_packSizeDefined) prop = _packSize; break;
310
+ case kpidPhySize: if (_phySize_Defined) prop = _stat.PhySize; break;
311
+ case kpidNumStreams: if (_stat.NumStreams_Defined) prop = _stat.NumStreams; break;
312
+ case kpidNumBlocks: if (_stat.NumBlocks_Defined) prop = _stat.NumBlocks; break;
313
+ case kpidUnpackSize: if (_stat.UnpackSize_Defined) prop = _stat.OutSize; break;
263
314
  case kpidMethod: if (!_methodsString.IsEmpty()) prop = _methodsString; break;
315
+ case kpidErrorFlags:
316
+ {
317
+ UInt32 v = 0;
318
+ if (!_isArc) v |= kpv_ErrorFlags_IsNotArc;;
319
+ if (_stat.UnexpectedEnd) v |= kpv_ErrorFlags_UnexpectedEnd;
320
+ if (_stat.DataAfterEnd) v |= kpv_ErrorFlags_DataAfterEnd;
321
+ if (_stat.HeadersError) v |= kpv_ErrorFlags_HeadersError;
322
+ if (_stat.Unsupported) v |= kpv_ErrorFlags_UnsupportedMethod;
323
+ if (_stat.DataError) v |= kpv_ErrorFlags_DataError;
324
+ if (_stat.CrcError) v |= kpv_ErrorFlags_CrcError;
325
+ prop = v;
326
+ }
264
327
  }
265
328
  prop.Detach(value);
266
329
  return S_OK;
@@ -273,14 +336,14 @@ STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
273
336
  return S_OK;
274
337
  }
275
338
 
276
- STDMETHODIMP CHandler::GetProperty(UInt32, PROPID propID, PROPVARIANT *value)
339
+ STDMETHODIMP CHandler::GetProperty(UInt32, PROPID propID, PROPVARIANT *value)
277
340
  {
278
341
  COM_TRY_BEGIN
279
- NWindows::NCOM::CPropVariant prop;
280
- switch(propID)
342
+ NCOM::CPropVariant prop;
343
+ switch (propID)
281
344
  {
282
- case kpidSize: if (_unpackSizeDefined) prop = _unpackSize; break;
283
- case kpidPackSize: if (_packSizeDefined) prop = _packSize; break;
345
+ case kpidSize: if (_stat.UnpackSize_Defined) prop = _stat.OutSize; break;
346
+ case kpidPackSize: if (_phySize_Defined) prop = _stat.PhySize; break;
284
347
  case kpidMethod: if (!_methodsString.IsEmpty()) prop = _methodsString; break;
285
348
  }
286
349
  prop.Detach(value);
@@ -300,7 +363,8 @@ struct COpenCallbackWrap
300
363
  static SRes OpenCallbackProgress(void *pp, UInt64 inSize, UInt64 /* outSize */)
301
364
  {
302
365
  COpenCallbackWrap *p = (COpenCallbackWrap *)pp;
303
- p->Res = p->OpenCallback->SetCompleted(NULL, &inSize);
366
+ if (p->OpenCallback)
367
+ p->Res = p->OpenCallback->SetCompleted(NULL, &inSize);
304
368
  return (SRes)p->Res;
305
369
  }
306
370
 
@@ -318,82 +382,108 @@ struct CXzsCPP
318
382
  ~CXzsCPP() { Xzs_Free(&p, &g_Alloc); }
319
383
  };
320
384
 
321
- HRESULT CHandler::Open2(IInStream *inStream, IArchiveOpenCallback *callback)
385
+ static HRESULT SRes_to_Open_HRESULT(SRes res)
322
386
  {
323
- CSeekInStreamWrap inStreamImp(inStream);
324
-
325
- CLookToRead lookStream;
326
- LookToRead_CreateVTable(&lookStream, True);
327
- lookStream.realStream = &inStreamImp.p;
328
- LookToRead_Init(&lookStream);
387
+ switch (res)
388
+ {
389
+ case SZ_OK: return S_OK;
390
+ case SZ_ERROR_MEM: return E_OUTOFMEMORY;
391
+ case SZ_ERROR_PROGRESS: return E_ABORT;
392
+ /*
393
+ case SZ_ERROR_UNSUPPORTED:
394
+ case SZ_ERROR_CRC:
395
+ case SZ_ERROR_DATA:
396
+ case SZ_ERROR_ARCHIVE:
397
+ case SZ_ERROR_NO_ARCHIVE:
398
+ return S_FALSE;
399
+ */
400
+ }
401
+ return S_FALSE;
402
+ }
329
403
 
330
- COpenCallbackWrap openWrap(callback);
331
- RINOK(inStream->Seek(0, STREAM_SEEK_END, &_packSize));
332
- RINOK(callback->SetTotal(NULL, &_packSize));
404
+ HRESULT CHandler::Open2(IInStream *inStream, /* UInt32 flags, */ IArchiveOpenCallback *callback)
405
+ {
406
+ _needSeekToStart = true;
333
407
 
334
- CXzsCPP xzs;
335
- SRes res = Xzs_ReadBackward(&xzs.p, &lookStream.s, &_startPosition, &openWrap.p, &g_Alloc);
336
- if (res == SZ_ERROR_NO_ARCHIVE && xzs.p.num > 0)
337
- res = SZ_OK;
338
- if (res == SZ_OK)
339
408
  {
340
- _packSize -= _startPosition;
341
- _unpackSize = Xzs_GetUnpackSize(&xzs.p);
342
- _unpackSizeDefined = _packSizeDefined = true;
343
- _numBlocks = (UInt64)Xzs_GetNumBlocks(&xzs.p);
344
-
345
- RINOK(inStream->Seek(0, STREAM_SEEK_SET, NULL));
346
409
  CXzStreamFlags st;
347
410
  CSeqInStreamWrap inStreamWrap(inStream);
348
- SRes res2 = Xz_ReadHeader(&st, &inStreamWrap.p);
411
+ SRes res = Xz_ReadHeader(&st, &inStreamWrap.p);
412
+ if (res != SZ_OK)
413
+ return SRes_to_Open_HRESULT(res);
349
414
 
350
- if (res2 == SZ_OK)
351
415
  {
352
416
  CXzBlock block;
353
417
  Bool isIndex;
354
418
  UInt32 headerSizeRes;
355
- res2 = XzBlock_ReadHeader(&block, &inStreamWrap.p, &isIndex, &headerSizeRes);
419
+ SRes res2 = XzBlock_ReadHeader(&block, &inStreamWrap.p, &isIndex, &headerSizeRes);
356
420
  if (res2 == SZ_OK && !isIndex)
357
421
  {
358
- int numFilters = XzBlock_GetNumFilters(&block);
359
- for (int i = 0; i < numFilters; i++)
422
+ unsigned numFilters = XzBlock_GetNumFilters(&block);
423
+ for (unsigned i = 0; i < numFilters; i++)
360
424
  AddString(_methodsString, GetMethodString(block.filters[i]));
361
425
  }
362
426
  }
363
- AddString(_methodsString, GetCheckString(xzs.p));
364
427
  }
365
428
 
366
- if (res != SZ_OK || _startPosition != 0)
429
+ RINOK(inStream->Seek(0, STREAM_SEEK_END, &_stat.PhySize));
430
+ if (callback)
367
431
  {
368
- RINOK(inStream->Seek(0, STREAM_SEEK_SET, NULL));
369
- CXzStreamFlags st;
370
- CSeqInStreamWrap inStreamWrap(inStream);
371
- SRes res2 = Xz_ReadHeader(&st, &inStreamWrap.p);
372
- if (res2 == SZ_OK)
373
- {
374
- res = res2;
375
- _startPosition = 0;
376
- _useSeq = True;
377
- _unpackSizeDefined = _packSizeDefined = false;
378
- }
432
+ RINOK(callback->SetTotal(NULL, &_stat.PhySize));
433
+ }
434
+
435
+ CSeekInStreamWrap inStreamImp(inStream);
436
+
437
+ CLookToRead lookStream;
438
+ LookToRead_CreateVTable(&lookStream, True);
439
+ lookStream.realStream = &inStreamImp.p;
440
+ LookToRead_Init(&lookStream);
441
+
442
+ COpenCallbackWrap openWrap(callback);
443
+
444
+ CXzsCPP xzs;
445
+ Int64 startPosition;
446
+ SRes res = Xzs_ReadBackward(&xzs.p, &lookStream.s, &startPosition, &openWrap.p, &g_Alloc);
447
+ if (res == SZ_ERROR_PROGRESS)
448
+ return (openWrap.Res == S_OK) ? E_FAIL : openWrap.Res;
449
+ /*
450
+ if (res == SZ_ERROR_NO_ARCHIVE && xzs.p.num > 0)
451
+ res = SZ_OK;
452
+ */
453
+ if (res == SZ_OK && startPosition == 0)
454
+ {
455
+ _phySize_Defined = true;
456
+
457
+ _stat.OutSize = Xzs_GetUnpackSize(&xzs.p);
458
+ _stat.UnpackSize_Defined = true;
459
+
460
+ _stat.NumStreams = xzs.p.num;
461
+ _stat.NumStreams_Defined = true;
462
+
463
+ _stat.NumBlocks = Xzs_GetNumBlocks(&xzs.p);
464
+ _stat.NumBlocks_Defined = true;
465
+
466
+ AddString(_methodsString, GetCheckString(xzs.p));
467
+ }
468
+ else
469
+ {
470
+ res = SZ_OK;
379
471
  }
380
- if (res == SZ_ERROR_NO_ARCHIVE)
381
- return S_FALSE;
382
- RINOK(SResToHRESULT(res));
472
+
473
+ RINOK(SRes_to_Open_HRESULT(res));
383
474
  _stream = inStream;
384
475
  _seqStream = inStream;
476
+ _isArc = true;
385
477
  return S_OK;
386
478
  }
387
479
 
388
480
  STDMETHODIMP CHandler::Open(IInStream *inStream, const UInt64 *, IArchiveOpenCallback *callback)
389
481
  {
390
482
  COM_TRY_BEGIN
391
- try
392
483
  {
393
484
  Close();
394
485
  return Open2(inStream, callback);
395
486
  }
396
- catch(...) { return S_FALSE; }
397
487
  COM_TRY_END
398
488
  }
399
489
 
@@ -401,15 +491,21 @@ STDMETHODIMP CHandler::OpenSeq(ISequentialInStream *stream)
401
491
  {
402
492
  Close();
403
493
  _seqStream = stream;
494
+ _isArc = true;
495
+ _needSeekToStart = false;
404
496
  return S_OK;
405
497
  }
406
498
 
407
499
  STDMETHODIMP CHandler::Close()
408
500
  {
409
- _numBlocks = 0;
410
- _useSeq = true;
411
- _unpackSizeDefined = _packSizeDefined = false;
412
- _methodsString.Empty();
501
+ _stat.Clear();
502
+
503
+ _isArc = false;
504
+ _needSeekToStart = false;
505
+
506
+ _phySize_Defined = false;
507
+
508
+ _methodsString.Empty();
413
509
  _stream.Release();
414
510
  _seqStream.Release();
415
511
  return S_OK;
@@ -434,147 +530,215 @@ STDMETHODIMP CSeekToSeqStream::Read(void *data, UInt32 size, UInt32 *processedSi
434
530
 
435
531
  STDMETHODIMP CSeekToSeqStream::Seek(Int64, UInt32, UInt64 *) { return E_NOTIMPL; }
436
532
 
437
- struct CXzUnpackerCPP
533
+ CXzUnpackerCPP::CXzUnpackerCPP(): InBuf(0), OutBuf(0)
438
534
  {
439
- Byte *InBuf;
440
- Byte *OutBuf;
441
- CXzUnpacker p;
442
- CXzUnpackerCPP(): InBuf(0), OutBuf(0) {}
443
- ~CXzUnpackerCPP()
444
- {
445
- XzUnpacker_Free(&p);
446
- MyFree(InBuf);
447
- MyFree(OutBuf);
448
- }
449
- };
535
+ XzUnpacker_Construct(&p, &g_Alloc);
536
+ }
450
537
 
451
- STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
452
- Int32 testMode, IArchiveExtractCallback *extractCallback)
538
+ CXzUnpackerCPP::~CXzUnpackerCPP()
453
539
  {
454
- COM_TRY_BEGIN
455
- if (numItems == 0)
456
- return S_OK;
457
- if (numItems != (UInt32)-1 && (numItems != 1 || indices[0] != 0))
458
- return E_INVALIDARG;
459
-
460
- extractCallback->SetTotal(_packSize);
461
- UInt64 currentTotalPacked = 0;
462
- RINOK(extractCallback->SetCompleted(&currentTotalPacked));
463
- CMyComPtr<ISequentialOutStream> realOutStream;
464
- Int32 askMode = testMode ?
465
- NExtract::NAskMode::kTest :
466
- NExtract::NAskMode::kExtract;
467
-
468
- RINOK(extractCallback->GetStream(0, &realOutStream, askMode));
469
-
470
- if (!testMode && !realOutStream)
471
- return S_OK;
472
-
473
- extractCallback->PrepareOperation(askMode);
474
-
475
- if (_stream)
476
- {
477
- RINOK(_stream->Seek(_startPosition, STREAM_SEEK_SET, NULL));
478
- }
479
-
480
- CLocalProgress *lps = new CLocalProgress;
481
- CMyComPtr<ICompressProgressInfo> progress = lps;
482
- lps->Init(extractCallback, true);
483
-
484
- CCompressProgressWrap progressWrap(progress);
540
+ XzUnpacker_Free(&p);
541
+ MyFree(InBuf);
542
+ MyFree(OutBuf);
543
+ }
485
544
 
486
- SRes res;
545
+ HRESULT CDecoder::Decode(ISequentialInStream *seqInStream, ISequentialOutStream *outStream, ICompressProgressInfo *progress)
546
+ {
547
+ const size_t kInBufSize = 1 << 15;
548
+ const size_t kOutBufSize = 1 << 21;
487
549
 
488
- const UInt32 kInBufSize = 1 << 15;
489
- const UInt32 kOutBufSize = 1 << 21;
550
+ Clear();
551
+ DecodeRes = SZ_OK;
490
552
 
491
- UInt32 inPos = 0;
492
- UInt32 inSize = 0;
493
- UInt32 outPos = 0;
494
- CXzUnpackerCPP xzu;
495
- res = XzUnpacker_Create(&xzu.p, &g_Alloc);
496
- if (res == SZ_OK)
497
- {
553
+ XzUnpacker_Init(&xzu.p);
554
+ if (!xzu.InBuf)
498
555
  xzu.InBuf = (Byte *)MyAlloc(kInBufSize);
556
+ if (!xzu.OutBuf)
499
557
  xzu.OutBuf = (Byte *)MyAlloc(kOutBufSize);
500
- if (xzu.InBuf == 0 || xzu.OutBuf == 0)
501
- res = SZ_ERROR_MEM;
502
- }
503
- if (res == SZ_OK)
558
+
559
+ UInt32 inSize = 0;
560
+ SizeT inPos = 0;
561
+ SizeT outPos = 0;
562
+
504
563
  for (;;)
505
564
  {
506
565
  if (inPos == inSize)
507
566
  {
508
567
  inPos = inSize = 0;
509
- RINOK(_seqStream->Read(xzu.InBuf, kInBufSize, &inSize));
568
+ RINOK(seqInStream->Read(xzu.InBuf, kInBufSize, &inSize));
510
569
  }
511
570
 
512
571
  SizeT inLen = inSize - inPos;
513
572
  SizeT outLen = kOutBufSize - outPos;
514
573
  ECoderStatus status;
515
- res = XzUnpacker_Code(&xzu.p,
574
+
575
+ SRes res = XzUnpacker_Code(&xzu.p,
516
576
  xzu.OutBuf + outPos, &outLen,
517
577
  xzu.InBuf + inPos, &inLen,
518
578
  (inSize == 0 ? CODER_FINISH_END : CODER_FINISH_ANY), &status);
519
579
 
520
- // printf("\n_inPos = %6d inLen = %5d, outLen = %5d", inPos, inLen, outLen);
580
+ inPos += inLen;
581
+ outPos += outLen;
582
+
583
+ InSize += inLen;
584
+ OutSize += outLen;
521
585
 
522
- inPos += (UInt32)inLen;
523
- outPos += (UInt32)outLen;
524
- lps->InSize += inLen;
525
- lps->OutSize += outLen;
586
+ DecodeRes = res;
526
587
 
527
- bool finished = (((inLen == 0) && (outLen == 0)) || res != SZ_OK);
588
+ bool finished = ((inLen == 0 && outLen == 0) || res != SZ_OK);
528
589
 
529
- if (outPos == kOutBufSize || finished)
590
+ if (outStream)
530
591
  {
531
- if (realOutStream && outPos > 0)
592
+ if (outPos == kOutBufSize || finished)
532
593
  {
533
- RINOK(WriteStream(realOutStream, xzu.OutBuf, outPos));
594
+ if (outPos != 0)
595
+ {
596
+ RINOK(WriteStream(outStream, xzu.OutBuf, outPos));
597
+ outPos = 0;
598
+ }
534
599
  }
600
+ }
601
+ else
535
602
  outPos = 0;
603
+
604
+ if (progress)
605
+ {
606
+ RINOK(progress->SetRatioInfo(&InSize, &OutSize));
536
607
  }
608
+
537
609
  if (finished)
538
610
  {
539
- _packSize = lps->InSize;
540
- _unpackSize = lps->OutSize;
541
- _packSizeDefined = _unpackSizeDefined = true;
611
+ PhySize = InSize;
612
+ NumStreams = xzu.p.numStartedStreams;
613
+ if (NumStreams > 0)
614
+ IsArc = true;
615
+ NumBlocks = xzu.p.numTotalBlocks;
616
+
617
+ UnpackSize_Defined = true;
618
+ NumStreams_Defined = true;
619
+ NumBlocks_Defined = true;
620
+
621
+ UInt64 extraSize = XzUnpacker_GetExtraSize(&xzu.p);
622
+
542
623
  if (res == SZ_OK)
543
624
  {
544
625
  if (status == CODER_STATUS_NEEDS_MORE_INPUT)
545
626
  {
546
- if (XzUnpacker_IsStreamWasFinished(&xzu.p))
547
- _packSize -= xzu.p.padSize;
548
- else
627
+ extraSize = 0;
628
+ if (!XzUnpacker_IsStreamWasFinished(&xzu.p))
629
+ {
630
+ // finished at padding bytes, but padding is not aligned for 4
631
+ UnexpectedEnd = true;
549
632
  res = SZ_ERROR_DATA;
633
+ }
550
634
  }
551
- else
635
+ else // status == CODER_STATUS_NOT_FINISHED
552
636
  res = SZ_ERROR_DATA;
553
637
  }
638
+ else if (res == SZ_ERROR_NO_ARCHIVE)
639
+ {
640
+ if (InSize == extraSize)
641
+ IsArc = false;
642
+ else
643
+ {
644
+ if (extraSize != 0 || inPos != inSize)
645
+ {
646
+ DataAfterEnd = true;
647
+ res = SZ_OK;
648
+ }
649
+ }
650
+ }
651
+
652
+ DecodeRes = res;
653
+ PhySize -= extraSize;
654
+
655
+ switch (res)
656
+ {
657
+ case SZ_OK: break;
658
+ case SZ_ERROR_NO_ARCHIVE: IsArc = false; break;
659
+ case SZ_ERROR_ARCHIVE: HeadersError = true; break;
660
+ case SZ_ERROR_UNSUPPORTED: Unsupported = true; break;
661
+ case SZ_ERROR_CRC: CrcError = true; break;
662
+ case SZ_ERROR_DATA: DataError = true; break;
663
+ default: DataError = true; break;
664
+ }
665
+
554
666
  break;
555
667
  }
556
- RINOK(lps->SetCur());
557
668
  }
558
669
 
670
+ return S_OK;
671
+ }
672
+
673
+ Int32 CDecoder::Get_Extract_OperationResult() const
674
+ {
559
675
  Int32 opRes;
560
- switch(res)
676
+ if (!IsArc)
677
+ opRes = NExtract::NOperationResult::kIsNotArc;
678
+ else if (UnexpectedEnd)
679
+ opRes = NExtract::NOperationResult::kUnexpectedEnd;
680
+ else if (DataAfterEnd)
681
+ opRes = NExtract::NOperationResult::kDataAfterEnd;
682
+ else if (CrcError)
683
+ opRes = NExtract::NOperationResult::kCRCError;
684
+ else if (Unsupported)
685
+ opRes = NExtract::NOperationResult::kUnsupportedMethod;
686
+ else if (HeadersError)
687
+ opRes = NExtract::NOperationResult::kDataError;
688
+ else if (DataError)
689
+ opRes = NExtract::NOperationResult::kDataError;
690
+ else if (DecodeRes != SZ_OK)
691
+ opRes = NExtract::NOperationResult::kDataError;
692
+ else
693
+ opRes = NExtract::NOperationResult::kOK;
694
+ return opRes;
695
+ }
696
+
697
+ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
698
+ Int32 testMode, IArchiveExtractCallback *extractCallback)
699
+ {
700
+ COM_TRY_BEGIN
701
+ if (numItems == 0)
702
+ return S_OK;
703
+ if (numItems != (UInt32)(Int32)-1 && (numItems != 1 || indices[0] != 0))
704
+ return E_INVALIDARG;
705
+
706
+ if (_phySize_Defined)
707
+ extractCallback->SetTotal(_stat.PhySize);
708
+
709
+ UInt64 currentTotalPacked = 0;
710
+ RINOK(extractCallback->SetCompleted(&currentTotalPacked));
711
+ CMyComPtr<ISequentialOutStream> realOutStream;
712
+ Int32 askMode = testMode ?
713
+ NExtract::NAskMode::kTest :
714
+ NExtract::NAskMode::kExtract;
715
+
716
+ RINOK(extractCallback->GetStream(0, &realOutStream, askMode));
717
+
718
+ if (!testMode && !realOutStream)
719
+ return S_OK;
720
+
721
+ extractCallback->PrepareOperation(askMode);
722
+
723
+ CLocalProgress *lps = new CLocalProgress;
724
+ CMyComPtr<ICompressProgressInfo> lpsRef = lps;
725
+ lps->Init(extractCallback, true);
726
+
727
+ if (_needSeekToStart)
561
728
  {
562
- case SZ_OK:
563
- opRes = NExtract::NOperationResult::kOK; break;
564
- case SZ_ERROR_UNSUPPORTED:
565
- opRes = NExtract::NOperationResult::kUnSupportedMethod; break;
566
- case SZ_ERROR_CRC:
567
- opRes = NExtract::NOperationResult::kCRCError; break;
568
- case SZ_ERROR_DATA:
569
- case SZ_ERROR_ARCHIVE:
570
- case SZ_ERROR_NO_ARCHIVE:
571
- opRes = NExtract::NOperationResult::kDataError; break;
572
- default:
573
- return SResToHRESULT(res);
729
+ if (!_stream)
730
+ return E_FAIL;
731
+ RINOK(_stream->Seek(0, STREAM_SEEK_SET, NULL));
574
732
  }
733
+ else
734
+ _needSeekToStart = true;
735
+
736
+ CDecoder decoder;
737
+ RINOK(Decode2(_seqStream, realOutStream, decoder, lpsRef));
738
+ Int32 opRes = decoder.Get_Extract_OperationResult();
739
+
575
740
  realOutStream.Release();
576
- RINOK(extractCallback->SetOperationResult(opRes));
577
- return S_OK;
741
+ return extractCallback->SetOperationResult(opRes);
578
742
  COM_TRY_END
579
743
  }
580
744
 
@@ -589,6 +753,8 @@ STDMETHODIMP CHandler::GetFileTimeType(UInt32 *timeType)
589
753
  STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numItems,
590
754
  IArchiveUpdateCallback *updateCallback)
591
755
  {
756
+ COM_TRY_BEGIN
757
+
592
758
  CSeqOutStreamWrap seqOutStream(outStream);
593
759
 
594
760
  if (numItems == 0)
@@ -619,8 +785,8 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
619
785
 
620
786
  if (IntToBool(newData))
621
787
  {
788
+ UInt64 size;
622
789
  {
623
- UInt64 size;
624
790
  NCOM::CPropVariant prop;
625
791
  RINOK(updateCallback->GetProperty(0, kpidSize, &prop));
626
792
  if (prop.vt != VT_UI8)
@@ -632,24 +798,28 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
632
798
  CLzma2EncProps lzma2Props;
633
799
  Lzma2EncProps_Init(&lzma2Props);
634
800
 
635
- lzma2Props.lzmaProps.level = _level;
801
+ lzma2Props.lzmaProps.level = GetLevel();
636
802
 
637
803
  CMyComPtr<ISequentialInStream> fileInStream;
638
804
  RINOK(updateCallback->GetStream(0, &fileInStream));
639
805
 
640
806
  CSeqInStreamWrap seqInStream(fileInStream);
641
807
 
642
- for (int i = 0; i < _methods.Size(); i++)
808
+ {
809
+ NCOM::CPropVariant prop = (UInt64)size;
810
+ RINOK(NCompress::NLzma2::SetLzma2Prop(NCoderPropID::kReduceSize, prop, lzma2Props));
811
+ }
812
+
813
+ FOR_VECTOR (i, _methods)
643
814
  {
644
815
  COneMethodInfo &m = _methods[i];
645
- SetCompressionMethod2(m
816
+ SetGlobalLevelAndThreads(m
646
817
  #ifndef _7ZIP_ST
647
818
  , _numThreads
648
819
  #endif
649
820
  );
650
- if (m.IsLzma())
651
821
  {
652
- for (int j = 0; j < m.Props.Size(); j++)
822
+ FOR_VECTOR (j, m.Props)
653
823
  {
654
824
  const CProp &prop = m.Props[j];
655
825
  RINOK(NCompress::NLzma2::SetLzma2Prop(prop.Id, prop.Value, lzma2Props));
@@ -666,42 +836,121 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
666
836
  lps->Init(updateCallback, true);
667
837
 
668
838
  CCompressProgressWrap progressWrap(progress);
669
- SRes res = Xz_Encode(&seqOutStream.p, &seqInStream.p, &lzma2Props, False, &progressWrap.p);
839
+ CXzProps xzProps;
840
+ CXzFilterProps filter;
841
+ XzProps_Init(&xzProps);
842
+ XzFilterProps_Init(&filter);
843
+ xzProps.lzma2Props = &lzma2Props;
844
+ xzProps.filterProps = (_filterId != 0 ? &filter : NULL);
845
+ switch (_crcSize)
846
+ {
847
+ case 0: xzProps.checkId = XZ_CHECK_NO; break;
848
+ case 4: xzProps.checkId = XZ_CHECK_CRC32; break;
849
+ case 8: xzProps.checkId = XZ_CHECK_CRC64; break;
850
+ case 32: xzProps.checkId = XZ_CHECK_SHA256; break;
851
+ default: return E_INVALIDARG;
852
+ }
853
+ filter.id = _filterId;
854
+ if (_filterId == XZ_ID_Delta)
855
+ {
856
+ bool deltaDefined = false;
857
+ FOR_VECTOR (j, _filterMethod.Props)
858
+ {
859
+ const CProp &prop = _filterMethod.Props[j];
860
+ if (prop.Id == NCoderPropID::kDefaultProp && prop.Value.vt == VT_UI4)
861
+ {
862
+ UInt32 delta = (UInt32)prop.Value.ulVal;
863
+ if (delta < 1 || delta > 256)
864
+ return E_INVALIDARG;
865
+ filter.delta = delta;
866
+ deltaDefined = true;
867
+ }
868
+ }
869
+ if (!deltaDefined)
870
+ return E_INVALIDARG;
871
+ }
872
+ SRes res = Xz_Encode(&seqOutStream.p, &seqInStream.p, &xzProps, &progressWrap.p);
670
873
  if (res == SZ_OK)
671
874
  return updateCallback->SetOperationResult(NArchive::NUpdate::NOperationResult::kOK);
672
875
  return SResToHRESULT(res);
673
876
  }
877
+
674
878
  if (indexInArchive != 0)
675
879
  return E_INVALIDARG;
880
+
881
+ CMyComPtr<IArchiveUpdateCallbackFile> opCallback;
882
+ updateCallback->QueryInterface(IID_IArchiveUpdateCallbackFile, (void **)&opCallback);
883
+ if (opCallback)
884
+ {
885
+ RINOK(opCallback->ReportOperation(NEventIndexType::kInArcIndex, 0, NUpdateNotifyOp::kReplicate))
886
+ }
887
+
676
888
  if (_stream)
677
- RINOK(_stream->Seek(_startPosition, STREAM_SEEK_SET, NULL));
678
- return NCompress::CopyStream(_stream, outStream, 0);
889
+ {
890
+ if (_phySize_Defined)
891
+ RINOK(updateCallback->SetTotal(_stat.PhySize));
892
+ RINOK(_stream->Seek(0, STREAM_SEEK_SET, NULL));
893
+ }
894
+
895
+ CLocalProgress *lps = new CLocalProgress;
896
+ CMyComPtr<ICompressProgressInfo> progress = lps;
897
+ lps->Init(updateCallback, true);
898
+
899
+ return NCompress::CopyStream(_stream, outStream, progress);
900
+
901
+ COM_TRY_END
679
902
  }
680
903
 
681
- STDMETHODIMP CHandler::SetProperties(const wchar_t **names, const PROPVARIANT *values, Int32 numProps)
904
+ STDMETHODIMP CHandler::SetProperties(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps)
682
905
  {
683
906
  COM_TRY_BEGIN
684
- BeforeSetProperty();
685
- for (int i = 0; i < numProps; i++)
907
+
908
+ Init();
909
+ for (UInt32 i = 0; i < numProps; i++)
686
910
  {
687
911
  RINOK(SetProperty(names[i], values[i]));
688
912
  }
913
+
914
+ if (!_filterMethod.MethodName.IsEmpty())
915
+ {
916
+ unsigned k;
917
+ for (k = 0; k < ARRAY_SIZE(g_NamePairs); k++)
918
+ {
919
+ const CMethodNamePair &pair = g_NamePairs[k];
920
+ if (StringsAreEqualNoCase_Ascii(_filterMethod.MethodName, pair.Name))
921
+ {
922
+ _filterId = pair.Id;
923
+ break;
924
+ }
925
+ }
926
+ if (k == ARRAY_SIZE(g_NamePairs))
927
+ return E_INVALIDARG;
928
+ }
929
+
930
+ _methods.DeleteFrontal(GetNumEmptyMethods());
931
+ if (_methods.Size() > 1)
932
+ return E_INVALIDARG;
933
+ if (_methods.Size() == 1)
934
+ {
935
+ AString &methodName = _methods[0].MethodName;
936
+ if (methodName.IsEmpty())
937
+ methodName = k_LZMA2_Name;
938
+ else if (!methodName.IsEqualTo_Ascii_NoCase(k_LZMA2_Name))
939
+ return E_INVALIDARG;
940
+ }
941
+
689
942
  return S_OK;
943
+
690
944
  COM_TRY_END
691
945
  }
692
946
 
693
947
  #endif
694
948
 
695
- static IInArchive *CreateArc() { return new NArchive::NXz::CHandler; }
696
- #ifndef EXTRACT_ONLY
697
- static IOutArchive *CreateArcOut() { return new NArchive::NXz::CHandler; }
698
- #else
699
- #define CreateArcOut 0
700
- #endif
701
-
702
- static CArcInfo g_ArcInfo =
703
- { L"xz", L"xz txz", L"* .tar", 0xC, {0xFD, '7' , 'z', 'X', 'Z', '\0'}, 6, true, CreateArc, CreateArcOut };
704
-
705
- REGISTER_ARC(xz)
949
+ REGISTER_ARC_IO(
950
+ "xz", "xz txz", "* .tar", 0xC,
951
+ XZ_SIG,
952
+ 0,
953
+ NArcInfoFlags::kKeepName,
954
+ NULL)
706
955
 
707
956
  }}