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
@@ -4,56 +4,148 @@
4
4
 
5
5
  #include "../../../C/CpuArch.h"
6
6
 
7
- #include "Common/Buffer.h"
8
- #include "Common/ComTry.h"
9
- #include "Common/IntToString.h"
10
- #include "Common/MyString.h"
7
+ #include "../../Common/ComTry.h"
8
+ #include "../../Common/IntToString.h"
9
+ #include "../../Common/MyBuffer.h"
10
+ #include "../../Common/MyString.h"
11
11
 
12
- #include "Windows/PropVariant.h"
12
+ #include "../../Windows/PropVariant.h"
13
13
 
14
14
  #include "../Common/InBuffer.h"
15
+ #include "../Common/LimitedStreams.h"
15
16
  #include "../Common/ProgressUtils.h"
16
17
  #include "../Common/RegisterArc.h"
18
+ #include "../Common/StreamObjects.h"
17
19
  #include "../Common/StreamUtils.h"
18
20
 
19
21
  #include "../Compress/CopyCoder.h"
22
+ #include "../Compress/LzmaDecoder.h"
23
+ #include "../Compress/LzmaEncoder.h"
20
24
  #include "../Compress/ZlibDecoder.h"
21
25
  #include "../Compress/ZlibEncoder.h"
22
26
 
23
27
  #include "Common/DummyOutStream.h"
24
-
25
- #include "DeflateProps.h"
28
+ #include "Common/HandlerOut.h"
26
29
 
27
30
  using namespace NWindows;
28
31
 
29
32
  namespace NArchive {
33
+
34
+ static const UInt32 kFileSizeMax = (UInt32)1 << 29;
35
+
30
36
  namespace NSwfc {
31
37
 
32
- static const UInt32 kHeaderSize = 8;
38
+ static const unsigned kHeaderBaseSize = 8;
39
+ static const unsigned kHeaderLzmaSize = 17;
33
40
 
34
41
  static const Byte SWF_UNCOMPRESSED = 'F';
35
- static const Byte SWF_COMPRESSED = 'C';
36
- static const Byte SWF_MIN_COMPRESSED_VER = 6;
42
+ static const Byte SWF_COMPRESSED_ZLIB = 'C';
43
+ static const Byte SWF_COMPRESSED_LZMA = 'Z';
44
+
45
+ static const Byte SWF_MIN_COMPRESSED_ZLIB_VER = 6;
46
+ static const Byte SWF_MIN_COMPRESSED_LZMA_VER = 13;
47
+
48
+ static const Byte kVerLim = 20;
49
+
50
+ API_FUNC_static_IsArc IsArc_Swf(const Byte *p, size_t size)
51
+ {
52
+ if (size < kHeaderBaseSize)
53
+ return k_IsArc_Res_NEED_MORE;
54
+ if (p[0] != SWF_UNCOMPRESSED ||
55
+ p[1] != 'W' ||
56
+ p[2] != 'S' ||
57
+ p[3] >= kVerLim)
58
+ return k_IsArc_Res_NO;
59
+ UInt32 uncompressedSize = GetUi32(p + 4);
60
+ if (uncompressedSize > kFileSizeMax)
61
+ return k_IsArc_Res_NO;
62
+ return k_IsArc_Res_YES;
63
+ }
64
+ }
65
+
66
+ API_FUNC_static_IsArc IsArc_Swfc(const Byte *p, size_t size)
67
+ {
68
+ if (size < kHeaderBaseSize + 2 + 1) // 2 + 1 (for zlib check)
69
+ return k_IsArc_Res_NEED_MORE;
70
+ if ((p[0] != SWF_COMPRESSED_ZLIB &&
71
+ p[0] != SWF_COMPRESSED_LZMA) ||
72
+ p[1] != 'W' ||
73
+ p[2] != 'S' ||
74
+ p[3] >= kVerLim)
75
+ return k_IsArc_Res_NO;
76
+ UInt32 uncompressedSize = GetUi32(p + 4);
77
+ if (uncompressedSize > kFileSizeMax)
78
+ return k_IsArc_Res_NO;
79
+
80
+ if (p[0] == SWF_COMPRESSED_ZLIB)
81
+ {
82
+ if (!NCompress::NZlib::IsZlib_3bytes(p + 8))
83
+ return k_IsArc_Res_NO;
84
+ }
85
+ else
86
+ {
87
+ if (size < kHeaderLzmaSize + 2)
88
+ return k_IsArc_Res_NEED_MORE;
89
+ if (p[kHeaderLzmaSize] != 0 ||
90
+ (p[kHeaderLzmaSize + 1] & 0x80) != 0)
91
+ return k_IsArc_Res_NO;
92
+ UInt32 lzmaPackSize = GetUi32(p + 8);
93
+ UInt32 lzmaProp = p[12];
94
+ UInt32 lzmaDicSize = GetUi32(p + 13);
95
+ if (lzmaProp > 5 * 5 * 9 ||
96
+ lzmaDicSize > ((UInt32)1 << 28) ||
97
+ lzmaPackSize < 5 ||
98
+ lzmaPackSize > ((UInt32)1 << 28))
99
+ return k_IsArc_Res_NO;
100
+ }
101
+
102
+ return k_IsArc_Res_YES;
103
+ }
104
+ }
37
105
 
38
106
  struct CItem
39
107
  {
40
- Byte Buf[kHeaderSize];
108
+ Byte Buf[kHeaderLzmaSize];
109
+ unsigned HeaderSize;
41
110
 
42
111
  UInt32 GetSize() const { return GetUi32(Buf + 4); }
43
- bool IsSwf(Byte c) const { return (Buf[0] == c && Buf[1] == 'W' && Buf[2] == 'S' && Buf[3] < 32); }
44
- bool IsUncompressed() const { return IsSwf(SWF_UNCOMPRESSED); }
45
- bool IsCompressed() const { return IsSwf(SWF_COMPRESSED); }
112
+ UInt32 GetLzmaPackSize() const { return GetUi32(Buf + 8); }
113
+ UInt32 GetLzmaDicSize() const { return GetUi32(Buf + 13); }
114
+
115
+ bool IsSwf() const { return (Buf[1] == 'W' && Buf[2] == 'S' && Buf[3] < kVerLim); }
116
+ bool IsUncompressed() const { return Buf[0] == SWF_UNCOMPRESSED; }
117
+ bool IsZlib() const { return Buf[0] == SWF_COMPRESSED_ZLIB; }
118
+ bool IsLzma() const { return Buf[0] == SWF_COMPRESSED_LZMA; }
46
119
 
47
- void MakeUncompressed() { Buf[0] = SWF_UNCOMPRESSED; }
48
- void MakeCompressed()
120
+ void MakeUncompressed()
121
+ {
122
+ Buf[0] = SWF_UNCOMPRESSED;
123
+ HeaderSize = kHeaderBaseSize;
124
+ }
125
+ void MakeZlib()
126
+ {
127
+ Buf[0] = SWF_COMPRESSED_ZLIB;
128
+ if (Buf[3] < SWF_MIN_COMPRESSED_ZLIB_VER)
129
+ Buf[3] = SWF_MIN_COMPRESSED_ZLIB_VER;
130
+ }
131
+ void MakeLzma(UInt32 packSize)
49
132
  {
50
- Buf[0] = SWF_COMPRESSED;
51
- if (Buf[3] < SWF_MIN_COMPRESSED_VER)
52
- Buf[3] = SWF_MIN_COMPRESSED_VER;
133
+ Buf[0] = SWF_COMPRESSED_LZMA;
134
+ if (Buf[3] < SWF_MIN_COMPRESSED_LZMA_VER)
135
+ Buf[3] = SWF_MIN_COMPRESSED_LZMA_VER;
136
+ SetUi32(Buf + 8, packSize);
137
+ HeaderSize = kHeaderLzmaSize;
53
138
  }
54
139
 
55
- HRESULT ReadHeader(ISequentialInStream *stream) { return ReadStream_FALSE(stream, Buf, kHeaderSize); }
56
- HRESULT WriteHeader(ISequentialOutStream *stream) { return WriteStream(stream, Buf, kHeaderSize); }
140
+ HRESULT ReadHeader(ISequentialInStream *stream)
141
+ {
142
+ HeaderSize = kHeaderBaseSize;
143
+ return ReadStream_FALSE(stream, Buf, kHeaderBaseSize);
144
+ }
145
+ HRESULT WriteHeader(ISequentialOutStream *stream)
146
+ {
147
+ return WriteStream(stream, Buf, HeaderSize);
148
+ }
57
149
  };
58
150
 
59
151
  class CHandler:
@@ -69,20 +161,23 @@ class CHandler:
69
161
  CMyComPtr<ISequentialInStream> _seqStream;
70
162
  CMyComPtr<IInStream> _stream;
71
163
 
72
- CDeflateProps _method;
164
+ CSingleMethodProps _props;
165
+ bool _lzmaMode;
73
166
 
74
167
  public:
168
+ CHandler(): _lzmaMode(false) {}
75
169
  MY_UNKNOWN_IMP4(IInArchive, IArchiveOpenSeq, IOutArchive, ISetProperties)
76
170
  INTERFACE_IInArchive(;)
77
171
  INTERFACE_IOutArchive(;)
78
172
  STDMETHOD(OpenSeq)(ISequentialInStream *stream);
79
- STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProps);
173
+ STDMETHOD(SetProperties)(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps);
80
174
  };
81
175
 
82
- STATPROPSTG kProps[] =
176
+ static const Byte kProps[] =
83
177
  {
84
- { NULL, kpidSize, VT_UI8},
85
- { NULL, kpidPackSize, VT_UI8}
178
+ kpidSize,
179
+ kpidPackSize,
180
+ kpidMethod
86
181
  };
87
182
 
88
183
  IMP_IInArchive_Props
@@ -91,9 +186,10 @@ IMP_IInArchive_ArcProps_NO_Table
91
186
  STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
92
187
  {
93
188
  NCOM::CPropVariant prop;
94
- switch(propID)
189
+ switch (propID)
95
190
  {
96
- case kpidPhySize: if (_packSizeDefined) prop = _packSize; break;
191
+ case kpidPhySize: if (_packSizeDefined) prop = _item.HeaderSize + _packSize; break;
192
+ case kpidIsNotArcType: prop = true; break;
97
193
  }
98
194
  prop.Detach(value);
99
195
  return S_OK;
@@ -105,13 +201,48 @@ STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
105
201
  return S_OK;
106
202
  }
107
203
 
204
+ static void DicSizeToString(char *s, UInt32 val)
205
+ {
206
+ char c = 0;
207
+ unsigned i;
208
+ for (i = 0; i <= 31; i++)
209
+ if (((UInt32)1 << i) == val)
210
+ {
211
+ val = i;
212
+ break;
213
+ }
214
+ if (i == 32)
215
+ {
216
+ c = 'b';
217
+ if ((val & ((1 << 20) - 1)) == 0) { val >>= 20; c = 'm'; }
218
+ else if ((val & ((1 << 10) - 1)) == 0) { val >>= 10; c = 'k'; }
219
+ }
220
+ ::ConvertUInt32ToString(val, s);
221
+ unsigned pos = MyStringLen(s);
222
+ s[pos++] = c;
223
+ s[pos] = 0;
224
+ }
225
+
108
226
  STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID, PROPVARIANT *value)
109
227
  {
110
228
  NWindows::NCOM::CPropVariant prop;
111
- switch(propID)
229
+ switch (propID)
112
230
  {
113
231
  case kpidSize: prop = (UInt64)_item.GetSize(); break;
114
- case kpidPackSize: if (_packSizeDefined) prop = _packSize; break;
232
+ case kpidPackSize: if (_packSizeDefined) prop = _item.HeaderSize + _packSize; break;
233
+ case kpidMethod:
234
+ {
235
+ char s[32];
236
+ if (_item.IsZlib())
237
+ MyStringCopy(s, "zlib");
238
+ else
239
+ {
240
+ MyStringCopy(s, "LZMA:");
241
+ DicSizeToString(s + 5, _item.GetLzmaDicSize());
242
+ }
243
+ prop = s;
244
+ break;
245
+ }
115
246
  }
116
247
  prop.Detach(value);
117
248
  return S_OK;
@@ -127,30 +258,63 @@ STDMETHODIMP CHandler::Open(IInStream *stream, const UInt64 *, IArchiveOpenCallb
127
258
  STDMETHODIMP CHandler::OpenSeq(ISequentialInStream *stream)
128
259
  {
129
260
  Close();
130
- HRESULT res = _item.ReadHeader(stream);
131
- if (res == S_OK)
132
- if (_item.IsCompressed())
133
- _seqStream = stream;
134
- else
135
- res = S_FALSE;
136
- return res;
261
+ RINOK(_item.ReadHeader(stream));
262
+ if (!_item.IsSwf())
263
+ return S_FALSE;
264
+ if (_item.IsLzma())
265
+ {
266
+ RINOK(ReadStream_FALSE(stream, _item.Buf + kHeaderBaseSize, kHeaderLzmaSize - kHeaderBaseSize));
267
+ _item.HeaderSize = kHeaderLzmaSize;
268
+ _packSize = _item.GetLzmaPackSize();
269
+ _packSizeDefined = true;
270
+ }
271
+ else if (!_item.IsZlib())
272
+ return S_FALSE;
273
+ if (_item.GetSize() < _item.HeaderSize)
274
+ return S_FALSE;
275
+ _seqStream = stream;
276
+ return S_OK;
137
277
  }
138
278
 
139
279
  STDMETHODIMP CHandler::Close()
140
280
  {
281
+ _packSize = 0;
141
282
  _packSizeDefined = false;
142
283
  _seqStream.Release();
143
284
  _stream.Release();
144
285
  return S_OK;
145
286
  }
146
287
 
288
+ class CCompressProgressInfoImp:
289
+ public ICompressProgressInfo,
290
+ public CMyUnknownImp
291
+ {
292
+ CMyComPtr<IArchiveOpenCallback> Callback;
293
+ public:
294
+ UInt64 Offset;
295
+ MY_UNKNOWN_IMP1(ICompressProgressInfo)
296
+ STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);
297
+ void Init(IArchiveOpenCallback *callback) { Callback = callback; }
298
+ };
299
+
300
+ STDMETHODIMP CCompressProgressInfoImp::SetRatioInfo(const UInt64 *inSize, const UInt64 * /* outSize */)
301
+ {
302
+ if (Callback)
303
+ {
304
+ UInt64 files = 0;
305
+ UInt64 value = Offset + *inSize;
306
+ return Callback->SetCompleted(&files, &value);
307
+ }
308
+ return S_OK;
309
+ }
310
+
147
311
  STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
148
312
  Int32 testMode, IArchiveExtractCallback *extractCallback)
149
313
  {
150
314
  COM_TRY_BEGIN
151
315
  if (numItems == 0)
152
316
  return S_OK;
153
- if (numItems != (UInt32)-1 && (numItems != 1 || indices[0] != 0))
317
+ if (numItems != (UInt32)(Int32)-1 && (numItems != 1 || indices[0] != 0))
154
318
  return E_INVALIDARG;
155
319
 
156
320
  extractCallback->SetTotal(_item.GetSize());
@@ -164,9 +328,6 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
164
328
 
165
329
  extractCallback->PrepareOperation(askMode);
166
330
 
167
- NCompress::NZlib::CDecoder *_decoderSpec = new NCompress::NZlib::CDecoder;
168
- CMyComPtr<ICompressCoder> _decoder = _decoderSpec;
169
-
170
331
  CDummyOutStream *outStreamSpec = new CDummyOutStream;
171
332
  CMyComPtr<ISequentialOutStream> outStream(outStreamSpec);
172
333
  outStreamSpec->SetStream(realOutStream);
@@ -177,24 +338,73 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
177
338
  CMyComPtr<ICompressProgressInfo> progress = lps;
178
339
  lps->Init(extractCallback, false);
179
340
 
180
- lps->InSize = kHeaderSize;
341
+ lps->InSize = _item.HeaderSize;
181
342
  lps->OutSize = outStreamSpec->GetSize();
182
343
  RINOK(lps->SetCur());
183
344
 
184
345
  CItem item = _item;
185
346
  item.MakeUncompressed();
186
- RINOK(item.WriteHeader(outStream));
187
347
  if (_stream)
188
- RINOK(_stream->Seek(kHeaderSize, STREAM_SEEK_SET, NULL));
189
- HRESULT result = _decoderSpec->Code(_seqStream, outStream, NULL, NULL, progress);
348
+ RINOK(_stream->Seek(_item.HeaderSize, STREAM_SEEK_SET, NULL));
349
+ NCompress::NZlib::CDecoder *_decoderZlibSpec = NULL;
350
+ NCompress::NLzma::CDecoder *_decoderLzmaSpec = NULL;
351
+ CMyComPtr<ICompressCoder> _decoder;
352
+
353
+ CMyComPtr<ISequentialInStream> inStream2;
354
+
355
+ UInt64 unpackSize = _item.GetSize() - (UInt32)8;
356
+ if (_item.IsZlib())
357
+ {
358
+ _decoderZlibSpec = new NCompress::NZlib::CDecoder;
359
+ _decoder = _decoderZlibSpec;
360
+ inStream2 = _seqStream;
361
+ }
362
+ else
363
+ {
364
+ /* Some .swf files with lzma contain additional 8 bytes at the end
365
+ in uncompressed stream.
366
+ What does that data mean ???
367
+ We don't decompress these additional 8 bytes */
368
+
369
+ // unpackSize = _item.GetSize();
370
+ // SetUi32(item.Buf + 4, (UInt32)(unpackSize + 8));
371
+ CLimitedSequentialInStream *limitedStreamSpec = new CLimitedSequentialInStream;
372
+ inStream2 = limitedStreamSpec;
373
+ limitedStreamSpec->SetStream(_seqStream);
374
+ limitedStreamSpec->Init(_item.GetLzmaPackSize());
375
+
376
+ _decoderLzmaSpec = new NCompress::NLzma::CDecoder;
377
+ _decoder = _decoderLzmaSpec;
378
+ // _decoderLzmaSpec->FinishStream = true;
379
+
380
+ Byte props[5];
381
+ memcpy(props, _item.Buf + 12, 5);
382
+ UInt32 dicSize = _item.GetLzmaDicSize();
383
+ if (dicSize > (UInt32)unpackSize)
384
+ {
385
+ dicSize = (UInt32)unpackSize;
386
+ SetUi32(props + 1, dicSize);
387
+ }
388
+ RINOK(_decoderLzmaSpec->SetDecoderProperties2(props, 5));
389
+ }
390
+ RINOK(item.WriteHeader(outStream));
391
+ HRESULT result = _decoder->Code(inStream2, outStream, NULL, &unpackSize, progress);
190
392
  Int32 opRes = NExtract::NOperationResult::kDataError;
191
393
  if (result == S_OK)
192
394
  {
193
- if (_item.GetSize() == outStreamSpec->GetSize())
395
+ if (item.GetSize() == outStreamSpec->GetSize())
194
396
  {
195
- _packSizeDefined = true;
196
- _packSize = _decoderSpec->GetInputProcessedSize() + kHeaderSize;
197
- opRes = NExtract::NOperationResult::kOK;
397
+ if (_item.IsZlib())
398
+ {
399
+ _packSizeDefined = true;
400
+ _packSize = _decoderZlibSpec->GetInputProcessedSize();
401
+ opRes = NExtract::NOperationResult::kOK;
402
+ }
403
+ else
404
+ {
405
+ // if (_decoderLzmaSpec->GetInputProcessedSize() == _packSize)
406
+ opRes = NExtract::NOperationResult::kOK;
407
+ }
198
408
  }
199
409
  }
200
410
  else if (result != S_FALSE)
@@ -205,8 +415,8 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
205
415
  COM_TRY_END
206
416
  }
207
417
 
208
- static HRESULT UpdateArchive(ISequentialOutStream *outStream,
209
- UInt64 size, CDeflateProps &deflateProps,
418
+ static HRESULT UpdateArchive(ISequentialOutStream *outStream, UInt64 size,
419
+ bool lzmaMode, const CSingleMethodProps &props,
210
420
  IArchiveUpdateCallback *updateCallback)
211
421
  {
212
422
  UInt64 complexity = 0;
@@ -216,27 +426,73 @@ static HRESULT UpdateArchive(ISequentialOutStream *outStream,
216
426
  CMyComPtr<ISequentialInStream> fileInStream;
217
427
  RINOK(updateCallback->GetStream(0, &fileInStream));
218
428
 
429
+ /*
430
+ CDummyOutStream *outStreamSpec = new CDummyOutStream;
431
+ CMyComPtr<ISequentialOutStream> outStream(outStreamSpec);
432
+ outStreamSpec->SetStream(realOutStream);
433
+ outStreamSpec->Init();
434
+ realOutStream.Release();
435
+ */
436
+
219
437
  CItem item;
220
438
  HRESULT res = item.ReadHeader(fileInStream);
221
439
  if (res == S_FALSE)
222
440
  return E_INVALIDARG;
223
441
  RINOK(res);
224
- if (!item.IsUncompressed() || size != item.GetSize())
442
+ if (!item.IsSwf() || !item.IsUncompressed() || size != item.GetSize())
225
443
  return E_INVALIDARG;
226
444
 
227
- item.MakeCompressed();
228
- item.WriteHeader(outStream);
445
+ NCompress::NZlib::CEncoder *encoderZlibSpec = NULL;
446
+ NCompress::NLzma::CEncoder *encoderLzmaSpec = NULL;
447
+ CMyComPtr<ICompressCoder> encoder;
448
+ CMyComPtr<IOutStream> outSeekStream;
449
+ if (lzmaMode)
450
+ {
451
+ outStream->QueryInterface(IID_IOutStream, (void **)&outSeekStream);
452
+ if (!outSeekStream)
453
+ return E_NOTIMPL;
454
+ encoderLzmaSpec = new NCompress::NLzma::CEncoder;
455
+ encoder = encoderLzmaSpec;
456
+ RINOK(props.SetCoderProps(encoderLzmaSpec, &size));
457
+ item.MakeLzma((UInt32)0xFFFFFFFF);
458
+ CBufPtrSeqOutStream *propStreamSpec = new CBufPtrSeqOutStream;
459
+ CMyComPtr<ISequentialOutStream> propStream = propStreamSpec;
460
+ propStreamSpec->Init(item.Buf + 12, 5);
461
+ RINOK(encoderLzmaSpec->WriteCoderProperties(propStream));
462
+ }
463
+ else
464
+ {
465
+ encoderZlibSpec = new NCompress::NZlib::CEncoder;
466
+ encoder = encoderZlibSpec;
467
+ encoderZlibSpec->Create();
468
+ RINOK(props.SetCoderProps(encoderZlibSpec->DeflateEncoderSpec, NULL));
469
+ item.MakeZlib();
470
+ }
471
+ RINOK(item.WriteHeader(outStream));
229
472
 
230
473
  CLocalProgress *lps = new CLocalProgress;
231
474
  CMyComPtr<ICompressProgressInfo> progress = lps;
232
475
  lps->Init(updateCallback, true);
233
476
 
234
- NCompress::NZlib::CEncoder *encoderSpec = new NCompress::NZlib::CEncoder;
235
- CMyComPtr<ICompressCoder> encoder = encoderSpec;
236
- encoderSpec->Create();
237
- RINOK(deflateProps.SetCoderProperties(encoderSpec->DeflateEncoderSpec));
238
477
  RINOK(encoder->Code(fileInStream, outStream, NULL, NULL, progress));
239
- if (encoderSpec->GetInputProcessedSize() + kHeaderSize != size)
478
+ UInt64 inputProcessed;
479
+ if (lzmaMode)
480
+ {
481
+ UInt64 curPos = 0;
482
+ RINOK(outSeekStream->Seek(0, STREAM_SEEK_CUR, &curPos));
483
+ UInt64 packSize = curPos - kHeaderLzmaSize;
484
+ if (packSize > (UInt32)0xFFFFFFFF)
485
+ return E_INVALIDARG;
486
+ item.MakeLzma((UInt32)packSize);
487
+ RINOK(outSeekStream->Seek(0, STREAM_SEEK_SET, NULL));
488
+ item.WriteHeader(outStream);
489
+ inputProcessed = encoderLzmaSpec->GetInputProcessedSize();
490
+ }
491
+ else
492
+ {
493
+ inputProcessed = encoderZlibSpec->GetInputProcessedSize();
494
+ }
495
+ if (inputProcessed + kHeaderBaseSize != size)
240
496
  return E_INVALIDARG;
241
497
  return updateCallback->SetOperationResult(NUpdate::NOperationResult::kOK);
242
498
  }
@@ -284,7 +540,7 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
284
540
  return E_INVALIDARG;
285
541
  size = prop.uhVal.QuadPart;
286
542
  }
287
- return UpdateArchive(outStream, size, _method, updateCallback);
543
+ return UpdateArchive(outStream, size, _lzmaMode, _props, updateCallback);
288
544
  }
289
545
 
290
546
  if (indexInArchive != 0)
@@ -302,29 +558,40 @@ STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, UInt32 numIt
302
558
  return NCompress::CopyStream(_seqStream, outStream, NULL);
303
559
  }
304
560
 
305
- STDMETHODIMP CHandler::SetProperties(const wchar_t **names, const PROPVARIANT *values, Int32 numProps)
561
+ STDMETHODIMP CHandler::SetProperties(const wchar_t * const *names, const PROPVARIANT *values, UInt32 numProps)
306
562
  {
307
- return _method.SetProperties(names, values, numProps);
563
+ _lzmaMode = false;
564
+ RINOK(_props.SetProperties(names, values, numProps));
565
+ AString m = _props.MethodName;
566
+ m.MakeLower_Ascii();
567
+ if (m.IsEqualTo("lzma"))
568
+ {
569
+ return E_NOTIMPL;
570
+ // _lzmaMode = true;
571
+ }
572
+ else if (m.IsEqualTo("deflate") || m.IsEmpty())
573
+ _lzmaMode = false;
574
+ else
575
+ return E_INVALIDARG;
576
+ return S_OK;
308
577
  }
309
578
 
310
- static IInArchive *CreateArc() { return new CHandler; }
311
- #ifndef EXTRACT_ONLY
312
- static IOutArchive *CreateArcOut() { return new CHandler; }
313
- #else
314
- #define CreateArcOut 0
315
- #endif
316
-
317
- static CArcInfo g_ArcInfo =
318
- { L"SWFc", L"swf", L"~.swf", 0xD8, { 'C', 'W', 'S' }, 3, true, CreateArc, CreateArcOut };
579
+ static const Byte k_Signature[] = {
580
+ 3, 'C', 'W', 'S',
581
+ 3, 'Z', 'W', 'S' };
319
582
 
320
- REGISTER_ARC(Swfc)
583
+ REGISTER_ARC_IO(
584
+ "SWFc", "swf", "~.swf", 0xD8,
585
+ k_Signature,
586
+ 0,
587
+ NArcInfoFlags::kMultiSignature,
588
+ IsArc_Swfc)
321
589
 
322
590
  }
323
591
 
324
592
  namespace NSwf {
325
593
 
326
- static const UInt32 kFileSizeMax = (UInt32)1 << 30;
327
- static const int kNumTagsMax = (UInt32)1 << 23;
594
+ static const unsigned kNumTagsMax = 1 << 23;
328
595
 
329
596
  struct CTag
330
597
  {
@@ -339,7 +606,7 @@ class CHandler:
339
606
  {
340
607
  CObjectVector<CTag> _tags;
341
608
  NSwfc::CItem _item;
342
- UInt64 _packSize;
609
+ UInt64 _phySize;
343
610
 
344
611
  HRESULT OpenSeq3(ISequentialInStream *stream, IArchiveOpenCallback *callback);
345
612
  HRESULT OpenSeq2(ISequentialInStream *stream, IArchiveOpenCallback *callback);
@@ -350,11 +617,11 @@ public:
350
617
  STDMETHOD(OpenSeq)(ISequentialInStream *stream);
351
618
  };
352
619
 
353
- STATPROPSTG kProps[] =
620
+ static const Byte kProps[] =
354
621
  {
355
- { NULL, kpidPath, VT_BSTR},
356
- { NULL, kpidSize, VT_UI8},
357
- { NULL, kpidComment, VT_BSTR}
622
+ kpidPath,
623
+ kpidSize,
624
+ kpidComment,
358
625
  };
359
626
 
360
627
  IMP_IInArchive_Props
@@ -363,9 +630,10 @@ IMP_IInArchive_ArcProps_NO_Table
363
630
  STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
364
631
  {
365
632
  NCOM::CPropVariant prop;
366
- switch(propID)
633
+ switch (propID)
367
634
  {
368
- case kpidPhySize: prop = _packSize; break;
635
+ case kpidPhySize: prop = _phySize; break;
636
+ case kpidIsNotArcType: prop = true; break;
369
637
  }
370
638
  prop.Detach(value);
371
639
  return S_OK;
@@ -380,105 +648,105 @@ STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
380
648
 
381
649
  static const char *g_TagDesc[92] =
382
650
  {
383
- "End",
384
- "ShowFrame",
385
- "DefineShape",
386
- NULL,
387
- "PlaceObject",
388
- "RemoveObject",
389
- "DefineBits",
390
- "DefineButton",
391
- "JPEGTables",
392
- "SetBackgroundColor",
393
- "DefineFont",
394
- "DefineText",
395
- "DoAction",
396
- "DefineFontInfo",
397
- "DefineSound",
398
- "StartSound",
399
- NULL,
400
- "DefineButtonSound",
401
- "SoundStreamHead",
402
- "SoundStreamBlock",
403
- "DefineBitsLossless",
404
- "DefineBitsJPEG2",
405
- "DefineShape2",
406
- "DefineButtonCxform",
407
- "Protect",
408
- NULL,
409
- "PlaceObject2",
410
- NULL,
411
- "RemoveObject2",
412
- NULL,
413
- NULL,
414
- NULL,
415
- "DefineShape3",
416
- "DefineText2",
417
- "DefineButton2",
418
- "DefineBitsJPEG3",
419
- "DefineBitsLossless2",
420
- "DefineEditText",
421
- NULL,
422
- "DefineSprite",
423
- NULL,
424
- "41",
425
- NULL,
426
- "FrameLabel",
427
- NULL,
428
- "SoundStreamHead2",
429
- "DefineMorphShape",
430
- NULL,
431
- "DefineFont2",
432
- NULL,
433
- NULL,
434
- NULL,
435
- NULL,
436
- NULL,
437
- NULL,
438
- NULL,
439
- "ExportAssets",
440
- "ImportAssets",
441
- "EnableDebugger",
442
- "DoInitAction",
443
- "DefineVideoStream",
444
- "VideoFrame",
445
- "DefineFontInfo2",
446
- NULL,
447
- "EnableDebugger2",
448
- "ScriptLimits",
449
- "SetTabIndex",
450
- NULL,
451
- NULL,
452
- "FileAttributes",
453
- "PlaceObject3",
454
- "ImportAssets2",
455
- NULL,
456
- "DefineFontAlignZones",
457
- "CSMTextSettings",
458
- "DefineFont3",
459
- "SymbolClass",
460
- "Metadata",
461
- "DefineScalingGrid",
462
- NULL,
463
- NULL,
464
- NULL,
465
- "DoABC",
466
- "DefineShape4",
467
- "DefineMorphShape2",
468
- NULL,
469
- "DefineSceneAndFrameLabelData",
470
- "DefineBinaryData",
471
- "DefineFontName",
472
- "StartSound2",
473
- "DefineBitsJPEG4",
474
- "DefineFont4"
651
+ "End"
652
+ , "ShowFrame"
653
+ , "DefineShape"
654
+ , NULL
655
+ , "PlaceObject"
656
+ , "RemoveObject"
657
+ , "DefineBits"
658
+ , "DefineButton"
659
+ , "JPEGTables"
660
+ , "SetBackgroundColor"
661
+ , "DefineFont"
662
+ , "DefineText"
663
+ , "DoAction"
664
+ , "DefineFontInfo"
665
+ , "DefineSound"
666
+ , "StartSound"
667
+ , NULL
668
+ , "DefineButtonSound"
669
+ , "SoundStreamHead"
670
+ , "SoundStreamBlock"
671
+ , "DefineBitsLossless"
672
+ , "DefineBitsJPEG2"
673
+ , "DefineShape2"
674
+ , "DefineButtonCxform"
675
+ , "Protect"
676
+ , NULL
677
+ , "PlaceObject2"
678
+ , NULL
679
+ , "RemoveObject2"
680
+ , NULL
681
+ , NULL
682
+ , NULL
683
+ , "DefineShape3"
684
+ , "DefineText2"
685
+ , "DefineButton2"
686
+ , "DefineBitsJPEG3"
687
+ , "DefineBitsLossless2"
688
+ , "DefineEditText"
689
+ , NULL
690
+ , "DefineSprite"
691
+ , NULL
692
+ , "41"
693
+ , NULL
694
+ , "FrameLabel"
695
+ , NULL
696
+ , "SoundStreamHead2"
697
+ , "DefineMorphShape"
698
+ , NULL
699
+ , "DefineFont2"
700
+ , NULL
701
+ , NULL
702
+ , NULL
703
+ , NULL
704
+ , NULL
705
+ , NULL
706
+ , NULL
707
+ , "ExportAssets"
708
+ , "ImportAssets"
709
+ , "EnableDebugger"
710
+ , "DoInitAction"
711
+ , "DefineVideoStream"
712
+ , "VideoFrame"
713
+ , "DefineFontInfo2"
714
+ , NULL
715
+ , "EnableDebugger2"
716
+ , "ScriptLimits"
717
+ , "SetTabIndex"
718
+ , NULL
719
+ , NULL
720
+ , "FileAttributes"
721
+ , "PlaceObject3"
722
+ , "ImportAssets2"
723
+ , NULL
724
+ , "DefineFontAlignZones"
725
+ , "CSMTextSettings"
726
+ , "DefineFont3"
727
+ , "SymbolClass"
728
+ , "Metadata"
729
+ , "DefineScalingGrid"
730
+ , NULL
731
+ , NULL
732
+ , NULL
733
+ , "DoABC"
734
+ , "DefineShape4"
735
+ , "DefineMorphShape2"
736
+ , NULL
737
+ , "DefineSceneAndFrameLabelData"
738
+ , "DefineBinaryData"
739
+ , "DefineFontName"
740
+ , "StartSound2"
741
+ , "DefineBitsJPEG4"
742
+ , "DefineFont4"
475
743
  };
476
744
 
477
745
  STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)
478
746
  {
479
747
  NWindows::NCOM::CPropVariant prop;
480
748
  const CTag &tag = _tags[index];
481
- switch(propID)
749
+ switch (propID)
482
750
  {
483
751
  case kpidPath:
484
752
  {
@@ -492,9 +760,9 @@ STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *val
492
760
  }
493
761
  case kpidSize:
494
762
  case kpidPackSize:
495
- prop = (UInt64)tag.Buf.GetCapacity(); break;
763
+ prop = (UInt64)tag.Buf.Size(); break;
496
764
  case kpidComment:
497
- if (tag.Type < sizeof(g_TagDesc) / sizeof(g_TagDesc[0]))
765
+ if (tag.Type < ARRAY_SIZE(g_TagDesc))
498
766
  {
499
767
  const char *s = g_TagDesc[tag.Type];
500
768
  if (s != NULL)
@@ -580,8 +848,12 @@ UInt32 CBitReader::ReadBits(unsigned numBits)
580
848
  HRESULT CHandler::OpenSeq3(ISequentialInStream *stream, IArchiveOpenCallback *callback)
581
849
  {
582
850
  RINOK(_item.ReadHeader(stream))
583
- if (!_item.IsUncompressed())
851
+ if (!_item.IsSwf() || !_item.IsUncompressed())
584
852
  return S_FALSE;
853
+ UInt32 uncompressedSize = _item.GetSize();
854
+ if (uncompressedSize > kFileSizeMax)
855
+ return S_FALSE;
856
+
585
857
 
586
858
  CInBuffer s;
587
859
  if (!s.Create(1 << 20))
@@ -611,13 +883,12 @@ HRESULT CHandler::OpenSeq3(ISequentialInStream *stream, IArchiveOpenCallback *ca
611
883
  length = Read32(s);
612
884
  if (type == 0)
613
885
  break;
614
- UInt64 offset = s.GetProcessedSize() + NSwfc::kHeaderSize + length;
615
- if (offset > kFileSizeMax || _tags.Size() >= kNumTagsMax)
886
+ UInt64 offset = s.GetProcessedSize() + NSwfc::kHeaderBaseSize + length;
887
+ if (offset > uncompressedSize || _tags.Size() >= kNumTagsMax)
616
888
  return S_FALSE;
617
- _tags.Add(CTag());
618
- CTag &tag = _tags.Back();
889
+ CTag &tag = _tags.AddNew();
619
890
  tag.Type = type;
620
- tag.Buf.SetCapacity(length);
891
+ tag.Buf.Alloc(length);
621
892
  if (s.ReadBytes(tag.Buf, length) != length)
622
893
  return S_FALSE;
623
894
  if (callback && offset >= offsetPrev + (1 << 20))
@@ -627,7 +898,12 @@ HRESULT CHandler::OpenSeq3(ISequentialInStream *stream, IArchiveOpenCallback *ca
627
898
  offsetPrev = offset;
628
899
  }
629
900
  }
630
- _packSize = s.GetProcessedSize() + NSwfc::kHeaderSize;
901
+ _phySize = s.GetProcessedSize() + NSwfc::kHeaderBaseSize;
902
+ if (_phySize != uncompressedSize)
903
+ {
904
+ // do we need to support files extracted from SFW-LZMA with additional 8 bytes?
905
+ return S_FALSE;
906
+ }
631
907
  return S_OK;
632
908
  }
633
909
 
@@ -646,6 +922,7 @@ STDMETHODIMP CHandler::OpenSeq(ISequentialInStream *stream)
646
922
 
647
923
  STDMETHODIMP CHandler::Close()
648
924
  {
925
+ _phySize = 0;
649
926
  return S_OK;
650
927
  }
651
928
 
@@ -653,7 +930,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
653
930
  Int32 testMode, IArchiveExtractCallback *extractCallback)
654
931
  {
655
932
  COM_TRY_BEGIN
656
- bool allFilesMode = (numItems == (UInt32)-1);
933
+ bool allFilesMode = (numItems == (UInt32)(Int32)-1);
657
934
  if (allFilesMode)
658
935
  numItems = _tags.Size();
659
936
  if (numItems == 0)
@@ -661,7 +938,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
661
938
  UInt64 totalSize = 0;
662
939
  UInt32 i;
663
940
  for (i = 0; i < numItems; i++)
664
- totalSize += _tags[allFilesMode ? i : indices[i]].Buf.GetCapacity();
941
+ totalSize += _tags[allFilesMode ? i : indices[i]].Buf.Size();
665
942
  extractCallback->SetTotal(totalSize);
666
943
 
667
944
  CLocalProgress *lps = new CLocalProgress;
@@ -679,7 +956,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
679
956
  NExtract::NAskMode::kExtract;
680
957
  UInt32 index = allFilesMode ? i : indices[i];
681
958
  const CByteBuffer &buf = _tags[index].Buf;
682
- totalSize += buf.GetCapacity();
959
+ totalSize += buf.Size();
683
960
 
684
961
  CMyComPtr<ISequentialOutStream> outStream;
685
962
  RINOK(extractCallback->GetStream(index, &outStream, askMode));
@@ -688,7 +965,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
688
965
 
689
966
  RINOK(extractCallback->PrepareOperation(askMode));
690
967
  if (outStream)
691
- RINOK(WriteStream(outStream, buf, buf.GetCapacity()));
968
+ RINOK(WriteStream(outStream, buf, buf.Size()));
692
969
  outStream.Release();
693
970
  RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK));
694
971
  }
@@ -696,11 +973,13 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
696
973
  COM_TRY_END
697
974
  }
698
975
 
699
- static IInArchive *CreateArc() { return new CHandler; }
700
-
701
- static CArcInfo g_ArcInfo =
702
- { L"SWF", L"swf", 0, 0xD7, { 'F', 'W', 'S' }, 3, true, CreateArc, 0 };
976
+ static const Byte k_Signature[] = { 'F', 'W', 'S' };
703
977
 
704
- REGISTER_ARC(Swf)
978
+ REGISTER_ARC_I(
979
+ "SWF", "swf", 0, 0xD7,
980
+ k_Signature,
981
+ 0,
982
+ NArcInfoFlags::kKeepName,
983
+ NSwfc::IsArc_Swf)
705
984
 
706
985
  }}