seven-zip 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (739) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +31 -0
  3. data/.github/workflows/release.yml +30 -0
  4. data/.gitignore +27 -0
  5. data/.travis.yml +35 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.md +204 -0
  9. data/Rakefile +79 -0
  10. data/ext/C/Types.h +254 -0
  11. data/ext/CPP/7zip/Archive/IArchive.h +234 -0
  12. data/ext/CPP/7zip/IDecl.h +15 -0
  13. data/ext/CPP/7zip/IPassword.h +24 -0
  14. data/ext/CPP/7zip/IProgress.h +33 -0
  15. data/ext/CPP/7zip/IStream.h +58 -0
  16. data/ext/CPP/7zip/PropID.h +76 -0
  17. data/ext/CPP/Common/MyCom.h +225 -0
  18. data/ext/CPP/Common/MyGuidDef.h +54 -0
  19. data/ext/CPP/Common/MyInitGuid.h +22 -0
  20. data/ext/CPP/Common/MyUnknown.h +13 -0
  21. data/ext/CPP/Common/MyWindows.h +204 -0
  22. data/ext/CPP/Common/Types.h +11 -0
  23. data/ext/CPP/Windows/PropVariant.h +56 -0
  24. data/ext/CPP/include_windows/basetyps.h +19 -0
  25. data/ext/CPP/include_windows/tchar.h +89 -0
  26. data/ext/CPP/include_windows/windows.h +194 -0
  27. data/ext/p7zip/Asm/x64/7zCrcT8U.asm +103 -0
  28. data/ext/p7zip/Asm/x86/7zCrcT8U.asm +101 -0
  29. data/ext/p7zip/C/7zBuf.h +39 -0
  30. data/ext/p7zip/C/7zBuf2.c +45 -0
  31. data/ext/p7zip/C/7zCrc.c +76 -0
  32. data/ext/p7zip/C/7zCrc.h +25 -0
  33. data/ext/p7zip/C/7zCrcOpt.c +34 -0
  34. data/ext/p7zip/C/7zCrcT8.c +43 -0
  35. data/ext/p7zip/C/7zStream.c +169 -0
  36. data/ext/p7zip/C/7zVersion.h +7 -0
  37. data/ext/p7zip/C/Aes.c +284 -0
  38. data/ext/p7zip/C/Aes.h +38 -0
  39. data/ext/p7zip/C/Alloc.back3 +238 -0
  40. data/ext/p7zip/C/Alloc.c +280 -0
  41. data/ext/p7zip/C/Alloc.c.back +243 -0
  42. data/ext/p7zip/C/Alloc.c.back2 +222 -0
  43. data/ext/p7zip/C/Alloc.h +27 -0
  44. data/ext/p7zip/C/Bra.c +133 -0
  45. data/ext/p7zip/C/Bra.h +68 -0
  46. data/ext/p7zip/C/Bra86.c +85 -0
  47. data/ext/p7zip/C/BraIA64.c +67 -0
  48. data/ext/p7zip/C/BwtSort.c +516 -0
  49. data/ext/p7zip/C/BwtSort.h +30 -0
  50. data/ext/p7zip/C/CpuArch.c +168 -0
  51. data/ext/p7zip/C/CpuArch.h +155 -0
  52. data/ext/p7zip/C/Delta.c +62 -0
  53. data/ext/p7zip/C/Delta.h +23 -0
  54. data/ext/p7zip/C/HuffEnc.c +146 -0
  55. data/ext/p7zip/C/HuffEnc.h +27 -0
  56. data/ext/p7zip/C/LzFind.c +761 -0
  57. data/ext/p7zip/C/LzFind.h +115 -0
  58. data/ext/p7zip/C/LzFindMt.c +793 -0
  59. data/ext/p7zip/C/LzFindMt.h +105 -0
  60. data/ext/p7zip/C/LzHash.h +54 -0
  61. data/ext/p7zip/C/Lzma2Dec.c +356 -0
  62. data/ext/p7zip/C/Lzma2Dec.h +84 -0
  63. data/ext/p7zip/C/Lzma2Enc.c +477 -0
  64. data/ext/p7zip/C/Lzma2Enc.h +66 -0
  65. data/ext/p7zip/C/LzmaDec.c +999 -0
  66. data/ext/p7zip/C/LzmaDec.h +231 -0
  67. data/ext/p7zip/C/LzmaEnc.c +2268 -0
  68. data/ext/p7zip/C/LzmaEnc.h +80 -0
  69. data/ext/p7zip/C/LzmaUtil/Lzma86Dec.c +61 -0
  70. data/ext/p7zip/C/LzmaUtil/Lzma86Dec.h +51 -0
  71. data/ext/p7zip/C/LzmaUtil/Lzma86Enc.c +113 -0
  72. data/ext/p7zip/C/LzmaUtil/Lzma86Enc.h +78 -0
  73. data/ext/p7zip/C/MtCoder.c +327 -0
  74. data/ext/p7zip/C/MtCoder.h +98 -0
  75. data/ext/p7zip/C/Ppmd.h +85 -0
  76. data/ext/p7zip/C/Ppmd7.c +708 -0
  77. data/ext/p7zip/C/Ppmd7.h +140 -0
  78. data/ext/p7zip/C/Ppmd7Dec.c +187 -0
  79. data/ext/p7zip/C/Ppmd7Enc.c +185 -0
  80. data/ext/p7zip/C/Ppmd8.c +1120 -0
  81. data/ext/p7zip/C/Ppmd8.h +133 -0
  82. data/ext/p7zip/C/Ppmd8Dec.c +155 -0
  83. data/ext/p7zip/C/Ppmd8Enc.c +161 -0
  84. data/ext/p7zip/C/RotateDefs.h +20 -0
  85. data/ext/p7zip/C/Sha256.c +204 -0
  86. data/ext/p7zip/C/Sha256.h +26 -0
  87. data/ext/p7zip/C/Sort.c +93 -0
  88. data/ext/p7zip/C/Sort.h +20 -0
  89. data/ext/p7zip/C/Threads.c +582 -0
  90. data/ext/p7zip/C/Threads.h +123 -0
  91. data/ext/p7zip/C/Types.h +254 -0
  92. data/ext/p7zip/C/Xz.c +88 -0
  93. data/ext/p7zip/C/Xz.h +252 -0
  94. data/ext/p7zip/C/XzCrc64.c +33 -0
  95. data/ext/p7zip/C/XzCrc64.h +26 -0
  96. data/ext/p7zip/C/XzDec.c +875 -0
  97. data/ext/p7zip/C/XzEnc.c +497 -0
  98. data/ext/p7zip/C/XzEnc.h +25 -0
  99. data/ext/p7zip/C/XzIn.c +306 -0
  100. data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  101. data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +50 -0
  102. data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.cpp +332 -0
  103. data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.h +68 -0
  104. data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.cpp +444 -0
  105. data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.h +55 -0
  106. data/ext/p7zip/CPP/7zip/Archive/7z/7zExtract.cpp +270 -0
  107. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +123 -0
  108. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +58 -0
  109. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.cpp +149 -0
  110. data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.h +58 -0
  111. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.cpp +482 -0
  112. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.h +119 -0
  113. data/ext/p7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +483 -0
  114. data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.cpp +14 -0
  115. data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.h +97 -0
  116. data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.cpp +1276 -0
  117. data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.h +245 -0
  118. data/ext/p7zip/CPP/7zip/Archive/7z/7zItem.h +268 -0
  119. data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.cpp +866 -0
  120. data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.h +152 -0
  121. data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.cpp +164 -0
  122. data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.h +22 -0
  123. data/ext/p7zip/CPP/7zip/Archive/7z/7zRegister.cpp +18 -0
  124. data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +24 -0
  125. data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.h +35 -0
  126. data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +1216 -0
  127. data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.h +88 -0
  128. data/ext/p7zip/CPP/7zip/Archive/ApmHandler.cpp +356 -0
  129. data/ext/p7zip/CPP/7zip/Archive/ArchiveExports.cpp +135 -0
  130. data/ext/p7zip/CPP/7zip/Archive/ArjHandler.cpp +798 -0
  131. data/ext/p7zip/CPP/7zip/Archive/Bz2Handler.cpp +423 -0
  132. data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +189 -0
  133. data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +44 -0
  134. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +929 -0
  135. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.h +28 -0
  136. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +15 -0
  137. data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.h +44 -0
  138. data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.cpp +272 -0
  139. data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.h +161 -0
  140. data/ext/p7zip/CPP/7zip/Archive/Cab/CabItem.h +63 -0
  141. data/ext/p7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +13 -0
  142. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +721 -0
  143. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.h +29 -0
  144. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.cpp +24 -0
  145. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.h +28 -0
  146. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +937 -0
  147. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.h +244 -0
  148. data/ext/p7zip/CPP/7zip/Archive/Chm/ChmRegister.cpp +13 -0
  149. data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.cpp +239 -0
  150. data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.h +28 -0
  151. data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.cpp +389 -0
  152. data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.h +119 -0
  153. data/ext/p7zip/CPP/7zip/Archive/Com/ComRegister.cpp +13 -0
  154. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +121 -0
  155. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.h +174 -0
  156. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.cpp +240 -0
  157. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.h +80 -0
  158. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.cpp +239 -0
  159. data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.h +88 -0
  160. data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.cpp +15 -0
  161. data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.h +37 -0
  162. data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +22 -0
  163. data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.h +24 -0
  164. data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.cpp +62 -0
  165. data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.h +12 -0
  166. data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +623 -0
  167. data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.h +87 -0
  168. data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +42 -0
  169. data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.h +67 -0
  170. data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +61 -0
  171. data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +24 -0
  172. data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.cpp +190 -0
  173. data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.h +84 -0
  174. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  175. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +36 -0
  176. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +18 -0
  177. data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +36 -0
  178. data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +177 -0
  179. data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.h +18 -0
  180. data/ext/p7zip/CPP/7zip/Archive/CpioHandler.cpp +624 -0
  181. data/ext/p7zip/CPP/7zip/Archive/CramfsHandler.cpp +644 -0
  182. data/ext/p7zip/CPP/7zip/Archive/DebHandler.cpp +413 -0
  183. data/ext/p7zip/CPP/7zip/Archive/DeflateProps.cpp +118 -0
  184. data/ext/p7zip/CPP/7zip/Archive/DeflateProps.h +35 -0
  185. data/ext/p7zip/CPP/7zip/Archive/DllExports2.cpp +76 -0
  186. data/ext/p7zip/CPP/7zip/Archive/DmgHandler.cpp +918 -0
  187. data/ext/p7zip/CPP/7zip/Archive/ElfHandler.cpp +534 -0
  188. data/ext/p7zip/CPP/7zip/Archive/FatHandler.cpp +996 -0
  189. data/ext/p7zip/CPP/7zip/Archive/FlvHandler.cpp +544 -0
  190. data/ext/p7zip/CPP/7zip/Archive/GzHandler.cpp +698 -0
  191. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.cpp +243 -0
  192. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.h +26 -0
  193. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.cpp +480 -0
  194. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.h +154 -0
  195. data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsRegister.cpp +13 -0
  196. data/ext/p7zip/CPP/7zip/Archive/IArchive.h +234 -0
  197. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +326 -0
  198. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.h +30 -0
  199. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +21 -0
  200. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.h +61 -0
  201. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +453 -0
  202. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.h +315 -0
  203. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoItem.h +141 -0
  204. data/ext/p7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +13 -0
  205. data/ext/p7zip/CPP/7zip/Archive/LzhHandler.cpp +775 -0
  206. data/ext/p7zip/CPP/7zip/Archive/LzmaHandler.cpp +430 -0
  207. data/ext/p7zip/CPP/7zip/Archive/MachoHandler.cpp +500 -0
  208. data/ext/p7zip/CPP/7zip/Archive/MbrHandler.cpp +507 -0
  209. data/ext/p7zip/CPP/7zip/Archive/MslzHandler.cpp +257 -0
  210. data/ext/p7zip/CPP/7zip/Archive/MubHandler.cpp +266 -0
  211. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +130 -0
  212. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +47 -0
  213. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +510 -0
  214. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +43 -0
  215. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +1461 -0
  216. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.h +181 -0
  217. data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +13 -0
  218. data/ext/p7zip/CPP/7zip/Archive/NtfsHandler.cpp +1764 -0
  219. data/ext/p7zip/CPP/7zip/Archive/PeHandler.cpp +1752 -0
  220. data/ext/p7zip/CPP/7zip/Archive/PpmdHandler.cpp +456 -0
  221. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +869 -0
  222. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.h +66 -0
  223. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.cpp +21 -0
  224. data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.h +205 -0
  225. data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.cpp +478 -0
  226. data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.h +123 -0
  227. data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.cpp +55 -0
  228. data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.h +79 -0
  229. data/ext/p7zip/CPP/7zip/Archive/Rar/RarRegister.cpp +13 -0
  230. data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp +78 -0
  231. data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.h +49 -0
  232. data/ext/p7zip/CPP/7zip/Archive/RpmHandler.cpp +292 -0
  233. data/ext/p7zip/CPP/7zip/Archive/SplitHandler.cpp +366 -0
  234. data/ext/p7zip/CPP/7zip/Archive/SquashfsHandler.cpp +2155 -0
  235. data/ext/p7zip/CPP/7zip/Archive/SwfHandler.cpp +706 -0
  236. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +386 -0
  237. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.h +61 -0
  238. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +122 -0
  239. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +25 -0
  240. data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.h +108 -0
  241. data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.cpp +207 -0
  242. data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.h +17 -0
  243. data/ext/p7zip/CPP/7zip/Archive/Tar/TarItem.h +72 -0
  244. data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.cpp +187 -0
  245. data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.h +28 -0
  246. data/ext/p7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +18 -0
  247. data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +139 -0
  248. data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.h +34 -0
  249. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +451 -0
  250. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.h +37 -0
  251. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +876 -0
  252. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.h +375 -0
  253. data/ext/p7zip/CPP/7zip/Archive/Udf/UdfRegister.cpp +13 -0
  254. data/ext/p7zip/CPP/7zip/Archive/VhdHandler.cpp +734 -0
  255. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +660 -0
  256. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.h +77 -0
  257. data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +639 -0
  258. data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.cpp +855 -0
  259. data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.h +297 -0
  260. data/ext/p7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +18 -0
  261. data/ext/p7zip/CPP/7zip/Archive/XarHandler.cpp +588 -0
  262. data/ext/p7zip/CPP/7zip/Archive/XzHandler.cpp +707 -0
  263. data/ext/p7zip/CPP/7zip/Archive/ZHandler.cpp +161 -0
  264. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +379 -0
  265. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +56 -0
  266. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +42 -0
  267. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +822 -0
  268. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.h +101 -0
  269. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +537 -0
  270. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.cpp +36 -0
  271. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.h +284 -0
  272. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +893 -0
  273. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.h +125 -0
  274. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +181 -0
  275. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.h +281 -0
  276. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItemEx.h +34 -0
  277. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +289 -0
  278. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.h +56 -0
  279. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +18 -0
  280. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +1076 -0
  281. data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +58 -0
  282. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile +328 -0
  283. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.depend +4962 -0
  284. data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.list +265 -0
  285. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zFM.txt +163 -0
  286. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zG.txt +131 -0
  287. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7za.txt +253 -0
  288. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_ALL.txt +32 -0
  289. data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_Format7zFree.txt +290 -0
  290. data/ext/p7zip/CPP/7zip/CMAKE/generate.sh +37 -0
  291. data/ext/p7zip/CPP/7zip/CMAKE/generate_xcode.sh +32 -0
  292. data/ext/p7zip/CPP/7zip/Common/CWrappers.cpp +226 -0
  293. data/ext/p7zip/CPP/7zip/Common/CWrappers.h +109 -0
  294. data/ext/p7zip/CPP/7zip/Common/CreateCoder.cpp +293 -0
  295. data/ext/p7zip/CPP/7zip/Common/CreateCoder.h +98 -0
  296. data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.cpp +55 -0
  297. data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  298. data/ext/p7zip/CPP/7zip/Common/FileStreams.cpp +273 -0
  299. data/ext/p7zip/CPP/7zip/Common/FileStreams.h +134 -0
  300. data/ext/p7zip/CPP/7zip/Common/FilterCoder.cpp +247 -0
  301. data/ext/p7zip/CPP/7zip/Common/FilterCoder.h +128 -0
  302. data/ext/p7zip/CPP/7zip/Common/InBuffer.cpp +83 -0
  303. data/ext/p7zip/CPP/7zip/Common/InBuffer.h +81 -0
  304. data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.cpp +122 -0
  305. data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.h +48 -0
  306. data/ext/p7zip/CPP/7zip/Common/LimitedStreams.cpp +154 -0
  307. data/ext/p7zip/CPP/7zip/Common/LimitedStreams.h +125 -0
  308. data/ext/p7zip/CPP/7zip/Common/LockedStream.cpp +23 -0
  309. data/ext/p7zip/CPP/7zip/Common/LockedStream.h +38 -0
  310. data/ext/p7zip/CPP/7zip/Common/MemBlocks.cpp +183 -0
  311. data/ext/p7zip/CPP/7zip/Common/MemBlocks.h +71 -0
  312. data/ext/p7zip/CPP/7zip/Common/MethodId.cpp +27 -0
  313. data/ext/p7zip/CPP/7zip/Common/MethodId.h +10 -0
  314. data/ext/p7zip/CPP/7zip/Common/MethodProps.cpp +99 -0
  315. data/ext/p7zip/CPP/7zip/Common/MethodProps.h +41 -0
  316. data/ext/p7zip/CPP/7zip/Common/OffsetStream.cpp +35 -0
  317. data/ext/p7zip/CPP/7zip/Common/OffsetStream.h +25 -0
  318. data/ext/p7zip/CPP/7zip/Common/OutBuffer.cpp +116 -0
  319. data/ext/p7zip/CPP/7zip/Common/OutBuffer.h +64 -0
  320. data/ext/p7zip/CPP/7zip/Common/OutMemStream.cpp +142 -0
  321. data/ext/p7zip/CPP/7zip/Common/OutMemStream.h +96 -0
  322. data/ext/p7zip/CPP/7zip/Common/ProgressMt.cpp +53 -0
  323. data/ext/p7zip/CPP/7zip/Common/ProgressMt.h +46 -0
  324. data/ext/p7zip/CPP/7zip/Common/ProgressUtils.cpp +42 -0
  325. data/ext/p7zip/CPP/7zip/Common/ProgressUtils.h +34 -0
  326. data/ext/p7zip/CPP/7zip/Common/RegisterArc.h +32 -0
  327. data/ext/p7zip/CPP/7zip/Common/RegisterCodec.h +33 -0
  328. data/ext/p7zip/CPP/7zip/Common/StreamBinder.cpp +152 -0
  329. data/ext/p7zip/CPP/7zip/Common/StreamBinder.h +38 -0
  330. data/ext/p7zip/CPP/7zip/Common/StreamObjects.cpp +221 -0
  331. data/ext/p7zip/CPP/7zip/Common/StreamObjects.h +135 -0
  332. data/ext/p7zip/CPP/7zip/Common/StreamUtils.cpp +56 -0
  333. data/ext/p7zip/CPP/7zip/Common/StreamUtils.h +13 -0
  334. data/ext/p7zip/CPP/7zip/Common/VirtThread.cpp +46 -0
  335. data/ext/p7zip/CPP/7zip/Common/VirtThread.h +23 -0
  336. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.cpp +309 -0
  337. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.h +98 -0
  338. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.cpp +90 -0
  339. data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.h +59 -0
  340. data/ext/p7zip/CPP/7zip/Compress/BZip2Const.h +54 -0
  341. data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.cpp +26 -0
  342. data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.h +31 -0
  343. data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.cpp +943 -0
  344. data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.h +205 -0
  345. data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.cpp +895 -0
  346. data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.h +245 -0
  347. data/ext/p7zip/CPP/7zip/Compress/BZip2Register.cpp +20 -0
  348. data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.cpp +386 -0
  349. data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.h +115 -0
  350. data/ext/p7zip/CPP/7zip/Compress/Bcj2Register.cpp +19 -0
  351. data/ext/p7zip/CPP/7zip/Compress/BcjCoder.cpp +15 -0
  352. data/ext/p7zip/CPP/7zip/Compress/BcjCoder.h +19 -0
  353. data/ext/p7zip/CPP/7zip/Compress/BcjRegister.cpp +19 -0
  354. data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.cpp +24 -0
  355. data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.h +141 -0
  356. data/ext/p7zip/CPP/7zip/Compress/BitlEncoder.h +57 -0
  357. data/ext/p7zip/CPP/7zip/Compress/BitmDecoder.h +66 -0
  358. data/ext/p7zip/CPP/7zip/Compress/BitmEncoder.h +50 -0
  359. data/ext/p7zip/CPP/7zip/Compress/BranchCoder.cpp +19 -0
  360. data/ext/p7zip/CPP/7zip/Compress/BranchCoder.h +44 -0
  361. data/ext/p7zip/CPP/7zip/Compress/BranchMisc.cpp +37 -0
  362. data/ext/p7zip/CPP/7zip/Compress/BranchMisc.h +14 -0
  363. data/ext/p7zip/CPP/7zip/Compress/BranchRegister.cpp +30 -0
  364. data/ext/p7zip/CPP/7zip/Compress/ByteSwap.cpp +73 -0
  365. data/ext/p7zip/CPP/7zip/Compress/CodecExports.cpp +160 -0
  366. data/ext/p7zip/CPP/7zip/Compress/CopyCoder.cpp +67 -0
  367. data/ext/p7zip/CPP/7zip/Compress/CopyCoder.h +34 -0
  368. data/ext/p7zip/CPP/7zip/Compress/CopyRegister.cpp +14 -0
  369. data/ext/p7zip/CPP/7zip/Compress/Deflate64Register.cpp +20 -0
  370. data/ext/p7zip/CPP/7zip/Compress/DeflateConst.h +134 -0
  371. data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.cpp +353 -0
  372. data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.h +157 -0
  373. data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.cpp +986 -0
  374. data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.h +211 -0
  375. data/ext/p7zip/CPP/7zip/Compress/DeflateRegister.cpp +21 -0
  376. data/ext/p7zip/CPP/7zip/Compress/DeltaFilter.cpp +112 -0
  377. data/ext/p7zip/CPP/7zip/Compress/DllExports.cpp +39 -0
  378. data/ext/p7zip/CPP/7zip/Compress/DllExports2.cpp +28 -0
  379. data/ext/p7zip/CPP/7zip/Compress/HuffmanDecoder.h +89 -0
  380. data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +219 -0
  381. data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.h +57 -0
  382. data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +89 -0
  383. data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +34 -0
  384. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaAlone.cpp +531 -0
  385. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.cpp +1018 -0
  386. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.h +48 -0
  387. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.cpp +311 -0
  388. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.h +20 -0
  389. data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/makefile +173 -0
  390. data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.cpp +14 -0
  391. data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.h +66 -0
  392. data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.cpp +220 -0
  393. data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.h +106 -0
  394. data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +189 -0
  395. data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.h +73 -0
  396. data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +94 -0
  397. data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.h +36 -0
  398. data/ext/p7zip/CPP/7zip/Compress/Lzma2Register.cpp +20 -0
  399. data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.cpp +252 -0
  400. data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.h +84 -0
  401. data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.cpp +149 -0
  402. data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.h +36 -0
  403. data/ext/p7zip/CPP/7zip/Compress/LzmaRegister.cpp +20 -0
  404. data/ext/p7zip/CPP/7zip/Compress/Lzx.h +61 -0
  405. data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.cpp +90 -0
  406. data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.h +46 -0
  407. data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.cpp +387 -0
  408. data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.h +159 -0
  409. data/ext/p7zip/CPP/7zip/Compress/Mtf8.h +193 -0
  410. data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.cpp +167 -0
  411. data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.h +78 -0
  412. data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.cpp +119 -0
  413. data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.h +48 -0
  414. data/ext/p7zip/CPP/7zip/Compress/PpmdRegister.cpp +21 -0
  415. data/ext/p7zip/CPP/7zip/Compress/PpmdZip.cpp +223 -0
  416. data/ext/p7zip/CPP/7zip/Compress/PpmdZip.h +72 -0
  417. data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.cpp +175 -0
  418. data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.h +264 -0
  419. data/ext/p7zip/CPP/7zip/Compress/RangeCoder.h +205 -0
  420. data/ext/p7zip/CPP/7zip/Compress/RangeCoderBit.h +114 -0
  421. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile +34 -0
  422. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.depend +158 -0
  423. data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.list +64 -0
  424. data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.cpp +480 -0
  425. data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.h +88 -0
  426. data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.cpp +391 -0
  427. data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.h +174 -0
  428. data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.cpp +897 -0
  429. data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.h +267 -0
  430. data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.cpp +1091 -0
  431. data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.h +179 -0
  432. data/ext/p7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +26 -0
  433. data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +145 -0
  434. data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.h +38 -0
  435. data/ext/p7zip/CPP/7zip/Compress/ZDecoder.cpp +159 -0
  436. data/ext/p7zip/CPP/7zip/Compress/ZDecoder.h +42 -0
  437. data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.cpp +89 -0
  438. data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.h +48 -0
  439. data/ext/p7zip/CPP/7zip/Compress/ZlibEncoder.cpp +61 -0
  440. data/ext/p7zip/CPP/7zip/Compress/ZlibEncoder.h +48 -0
  441. data/ext/p7zip/CPP/7zip/Crypto/7zAes.cpp +244 -0
  442. data/ext/p7zip/CPP/7zip/Crypto/7zAes.h +117 -0
  443. data/ext/p7zip/CPP/7zip/Crypto/7zAesRegister.cpp +18 -0
  444. data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.cpp +109 -0
  445. data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.h +39 -0
  446. data/ext/p7zip/CPP/7zip/Crypto/MyAes.cpp +48 -0
  447. data/ext/p7zip/CPP/7zip/Crypto/MyAes.h +38 -0
  448. data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +83 -0
  449. data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +21 -0
  450. data/ext/p7zip/CPP/7zip/Crypto/RandGen.cpp +107 -0
  451. data/ext/p7zip/CPP/7zip/Crypto/RandGen.h +21 -0
  452. data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +133 -0
  453. data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.h +50 -0
  454. data/ext/p7zip/CPP/7zip/Crypto/RarAes.cpp +134 -0
  455. data/ext/p7zip/CPP/7zip/Crypto/RarAes.h +47 -0
  456. data/ext/p7zip/CPP/7zip/Crypto/Sha1.cpp +229 -0
  457. data/ext/p7zip/CPP/7zip/Crypto/Sha1.h +68 -0
  458. data/ext/p7zip/CPP/7zip/Crypto/WzAes.cpp +221 -0
  459. data/ext/p7zip/CPP/7zip/Crypto/WzAes.h +125 -0
  460. data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.cpp +88 -0
  461. data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.h +56 -0
  462. data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.cpp +164 -0
  463. data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.h +47 -0
  464. data/ext/p7zip/CPP/7zip/Guid.txt +170 -0
  465. data/ext/p7zip/CPP/7zip/ICoder.h +186 -0
  466. data/ext/p7zip/CPP/7zip/IDecl.h +15 -0
  467. data/ext/p7zip/CPP/7zip/IPassword.h +24 -0
  468. data/ext/p7zip/CPP/7zip/IProgress.h +33 -0
  469. data/ext/p7zip/CPP/7zip/IStream.h +58 -0
  470. data/ext/p7zip/CPP/7zip/MyVersion.h +11 -0
  471. data/ext/p7zip/CPP/7zip/PREMAKE/generate.sh +18 -0
  472. data/ext/p7zip/CPP/7zip/PREMAKE/premake4.lua +263 -0
  473. data/ext/p7zip/CPP/7zip/PropID.h +76 -0
  474. data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA.pro +228 -0
  475. data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA_osx.pro +228 -0
  476. data/ext/p7zip/CPP/7zip/QMAKE/test_emul/test_emul.pro +26 -0
  477. data/ext/p7zip/CPP/7zip/TEST/TestUI/TestUI.cpp +560 -0
  478. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile +33 -0
  479. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.depend +577 -0
  480. data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.list +16 -0
  481. data/ext/p7zip/CPP/Common/AutoPtr.h +35 -0
  482. data/ext/p7zip/CPP/Common/Buffer.h +77 -0
  483. data/ext/p7zip/CPP/Common/CRC.cpp +7 -0
  484. data/ext/p7zip/CPP/Common/C_FileIO.cpp +88 -0
  485. data/ext/p7zip/CPP/Common/C_FileIO.h +47 -0
  486. data/ext/p7zip/CPP/Common/ComTry.h +18 -0
  487. data/ext/p7zip/CPP/Common/CommandLineParser.cpp +230 -0
  488. data/ext/p7zip/CPP/Common/CommandLineParser.h +72 -0
  489. data/ext/p7zip/CPP/Common/Defs.h +20 -0
  490. data/ext/p7zip/CPP/Common/DynamicBuffer.h +50 -0
  491. data/ext/p7zip/CPP/Common/IntToString.cpp +77 -0
  492. data/ext/p7zip/CPP/Common/IntToString.h +19 -0
  493. data/ext/p7zip/CPP/Common/Lang.cpp +130 -0
  494. data/ext/p7zip/CPP/Common/Lang.h +28 -0
  495. data/ext/p7zip/CPP/Common/ListFileUtils.cpp +75 -0
  496. data/ext/p7zip/CPP/Common/ListFileUtils.h +11 -0
  497. data/ext/p7zip/CPP/Common/MyCom.h +225 -0
  498. data/ext/p7zip/CPP/Common/MyException.h +14 -0
  499. data/ext/p7zip/CPP/Common/MyGuidDef.h +54 -0
  500. data/ext/p7zip/CPP/Common/MyInitGuid.h +22 -0
  501. data/ext/p7zip/CPP/Common/MyMap.cpp +140 -0
  502. data/ext/p7zip/CPP/Common/MyMap.h +28 -0
  503. data/ext/p7zip/CPP/Common/MyString.cpp +206 -0
  504. data/ext/p7zip/CPP/Common/MyString.h +601 -0
  505. data/ext/p7zip/CPP/Common/MyUnknown.h +13 -0
  506. data/ext/p7zip/CPP/Common/MyVector.cpp +87 -0
  507. data/ext/p7zip/CPP/Common/MyVector.h +266 -0
  508. data/ext/p7zip/CPP/Common/MyWindows.cpp +111 -0
  509. data/ext/p7zip/CPP/Common/MyWindows.h +218 -0
  510. data/ext/p7zip/CPP/Common/MyXml.cpp +209 -0
  511. data/ext/p7zip/CPP/Common/MyXml.h +40 -0
  512. data/ext/p7zip/CPP/Common/NewHandler.h +16 -0
  513. data/ext/p7zip/CPP/Common/StdInStream.cpp +100 -0
  514. data/ext/p7zip/CPP/Common/StdInStream.h +32 -0
  515. data/ext/p7zip/CPP/Common/StdOutStream.cpp +93 -0
  516. data/ext/p7zip/CPP/Common/StdOutStream.h +35 -0
  517. data/ext/p7zip/CPP/Common/StringConvert.cpp +181 -0
  518. data/ext/p7zip/CPP/Common/StringConvert.h +73 -0
  519. data/ext/p7zip/CPP/Common/StringToInt.cpp +90 -0
  520. data/ext/p7zip/CPP/Common/StringToInt.h +18 -0
  521. data/ext/p7zip/CPP/Common/TextConfig.cpp +138 -0
  522. data/ext/p7zip/CPP/Common/TextConfig.h +22 -0
  523. data/ext/p7zip/CPP/Common/Types.h +11 -0
  524. data/ext/p7zip/CPP/Common/UTFConvert.cpp +145 -0
  525. data/ext/p7zip/CPP/Common/UTFConvert.h +11 -0
  526. data/ext/p7zip/CPP/Common/Wildcard.cpp +462 -0
  527. data/ext/p7zip/CPP/Common/Wildcard.h +80 -0
  528. data/ext/p7zip/CPP/Windows/COM.cpp +37 -0
  529. data/ext/p7zip/CPP/Windows/COM.h +69 -0
  530. data/ext/p7zip/CPP/Windows/Clipboard.cpp +160 -0
  531. data/ext/p7zip/CPP/Windows/Clipboard.h +28 -0
  532. data/ext/p7zip/CPP/Windows/CommonDialog.h +19 -0
  533. data/ext/p7zip/CPP/Windows/Control/ComboBox.h +82 -0
  534. data/ext/p7zip/CPP/Windows/Control/Controls.cpp +515 -0
  535. data/ext/p7zip/CPP/Windows/Control/Dialog.cpp +560 -0
  536. data/ext/p7zip/CPP/Windows/Control/Dialog.h +179 -0
  537. data/ext/p7zip/CPP/Windows/Control/DialogImpl.h +73 -0
  538. data/ext/p7zip/CPP/Windows/Control/Edit.h +24 -0
  539. data/ext/p7zip/CPP/Windows/Control/ListView.h +164 -0
  540. data/ext/p7zip/CPP/Windows/Control/ProgressBar.h +34 -0
  541. data/ext/p7zip/CPP/Windows/Control/Static.h +23 -0
  542. data/ext/p7zip/CPP/Windows/Control/StatusBar.h +56 -0
  543. data/ext/p7zip/CPP/Windows/Control/Window2.cpp +211 -0
  544. data/ext/p7zip/CPP/Windows/Control/Window2.h +111 -0
  545. data/ext/p7zip/CPP/Windows/DLL.cpp +193 -0
  546. data/ext/p7zip/CPP/Windows/DLL.h +48 -0
  547. data/ext/p7zip/CPP/Windows/Defs.h +17 -0
  548. data/ext/p7zip/CPP/Windows/Error.cpp +58 -0
  549. data/ext/p7zip/CPP/Windows/Error.h +33 -0
  550. data/ext/p7zip/CPP/Windows/FileDir.cpp +927 -0
  551. data/ext/p7zip/CPP/Windows/FileDir.h +115 -0
  552. data/ext/p7zip/CPP/Windows/FileFind.cpp +604 -0
  553. data/ext/p7zip/CPP/Windows/FileFind.h +126 -0
  554. data/ext/p7zip/CPP/Windows/FileIO.cpp +475 -0
  555. data/ext/p7zip/CPP/Windows/FileIO.h +110 -0
  556. data/ext/p7zip/CPP/Windows/FileName.cpp +50 -0
  557. data/ext/p7zip/CPP/Windows/FileName.h +27 -0
  558. data/ext/p7zip/CPP/Windows/Menu.h +4 -0
  559. data/ext/p7zip/CPP/Windows/NtCheck.h +44 -0
  560. data/ext/p7zip/CPP/Windows/PropVariant.cpp +243 -0
  561. data/ext/p7zip/CPP/Windows/PropVariant.h +56 -0
  562. data/ext/p7zip/CPP/Windows/PropVariantConversions.cpp +142 -0
  563. data/ext/p7zip/CPP/Windows/PropVariantConversions.h +14 -0
  564. data/ext/p7zip/CPP/Windows/PropVariantUtils.cpp +78 -0
  565. data/ext/p7zip/CPP/Windows/PropVariantUtils.h +28 -0
  566. data/ext/p7zip/CPP/Windows/Registry.cpp +313 -0
  567. data/ext/p7zip/CPP/Windows/Registry.h +113 -0
  568. data/ext/p7zip/CPP/Windows/ResourceString.h +22 -0
  569. data/ext/p7zip/CPP/Windows/Shell.h +21 -0
  570. data/ext/p7zip/CPP/Windows/Synchronization.cpp +157 -0
  571. data/ext/p7zip/CPP/Windows/Synchronization.h +187 -0
  572. data/ext/p7zip/CPP/Windows/Synchronization2.h +218 -0
  573. data/ext/p7zip/CPP/Windows/System.cpp +166 -0
  574. data/ext/p7zip/CPP/Windows/System.h +16 -0
  575. data/ext/p7zip/CPP/Windows/Thread.h +41 -0
  576. data/ext/p7zip/CPP/Windows/Time.cpp +88 -0
  577. data/ext/p7zip/CPP/Windows/Time.h +21 -0
  578. data/ext/p7zip/CPP/Windows/Window.cpp +101 -0
  579. data/ext/p7zip/CPP/Windows/Window.h +43 -0
  580. data/ext/p7zip/CPP/include_windows/basetyps.h +19 -0
  581. data/ext/p7zip/CPP/include_windows/tchar.h +89 -0
  582. data/ext/p7zip/CPP/include_windows/windows.h +194 -0
  583. data/ext/p7zip/CPP/myWindows/StdAfx.h +124 -0
  584. data/ext/p7zip/CPP/myWindows/config.h +67 -0
  585. data/ext/p7zip/CPP/myWindows/initguid.h +4 -0
  586. data/ext/p7zip/CPP/myWindows/makefile +21 -0
  587. data/ext/p7zip/CPP/myWindows/makefile.depend +32 -0
  588. data/ext/p7zip/CPP/myWindows/makefile.list +28 -0
  589. data/ext/p7zip/CPP/myWindows/myAddExeFlag.cpp +20 -0
  590. data/ext/p7zip/CPP/myWindows/myGetTickCount.cpp +8 -0
  591. data/ext/p7zip/CPP/myWindows/myPrivate.h +17 -0
  592. data/ext/p7zip/CPP/myWindows/mySplitCommandLine.cpp +82 -0
  593. data/ext/p7zip/CPP/myWindows/test_emul.cpp +745 -0
  594. data/ext/p7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp +741 -0
  595. data/ext/p7zip/CPP/myWindows/wine_date_and_time.cpp +434 -0
  596. data/ext/p7zip/ChangeLog +914 -0
  597. data/ext/p7zip/DOCS/7zC.txt +194 -0
  598. data/ext/p7zip/DOCS/7zFormat.txt +469 -0
  599. data/ext/p7zip/DOCS/License.txt +52 -0
  600. data/ext/p7zip/DOCS/MANUAL/commands/add.htm +87 -0
  601. data/ext/p7zip/DOCS/MANUAL/commands/bench.htm +79 -0
  602. data/ext/p7zip/DOCS/MANUAL/commands/delete.htm +59 -0
  603. data/ext/p7zip/DOCS/MANUAL/commands/extract.htm +91 -0
  604. data/ext/p7zip/DOCS/MANUAL/commands/extract_full.htm +68 -0
  605. data/ext/p7zip/DOCS/MANUAL/commands/index.htm +33 -0
  606. data/ext/p7zip/DOCS/MANUAL/commands/list.htm +77 -0
  607. data/ext/p7zip/DOCS/MANUAL/commands/style.css +232 -0
  608. data/ext/p7zip/DOCS/MANUAL/commands/test.htm +46 -0
  609. data/ext/p7zip/DOCS/MANUAL/commands/update.htm +66 -0
  610. data/ext/p7zip/DOCS/MANUAL/exit_codes.htm +27 -0
  611. data/ext/p7zip/DOCS/MANUAL/index.htm +29 -0
  612. data/ext/p7zip/DOCS/MANUAL/style.css +232 -0
  613. data/ext/p7zip/DOCS/MANUAL/switches/ar_exclude.htm +56 -0
  614. data/ext/p7zip/DOCS/MANUAL/switches/ar_include.htm +83 -0
  615. data/ext/p7zip/DOCS/MANUAL/switches/ar_no.htm +52 -0
  616. data/ext/p7zip/DOCS/MANUAL/switches/charset.htm +49 -0
  617. data/ext/p7zip/DOCS/MANUAL/switches/exclude.htm +60 -0
  618. data/ext/p7zip/DOCS/MANUAL/switches/include.htm +87 -0
  619. data/ext/p7zip/DOCS/MANUAL/switches/index.htm +64 -0
  620. data/ext/p7zip/DOCS/MANUAL/switches/large_pages.htm +50 -0
  621. data/ext/p7zip/DOCS/MANUAL/switches/list_tech.htm +36 -0
  622. data/ext/p7zip/DOCS/MANUAL/switches/method.htm +625 -0
  623. data/ext/p7zip/DOCS/MANUAL/switches/output_dir.htm +53 -0
  624. data/ext/p7zip/DOCS/MANUAL/switches/overwrite.htm +56 -0
  625. data/ext/p7zip/DOCS/MANUAL/switches/password.htm +54 -0
  626. data/ext/p7zip/DOCS/MANUAL/switches/recurse.htm +83 -0
  627. data/ext/p7zip/DOCS/MANUAL/switches/sfx.htm +156 -0
  628. data/ext/p7zip/DOCS/MANUAL/switches/ssc.htm +50 -0
  629. data/ext/p7zip/DOCS/MANUAL/switches/stdin.htm +55 -0
  630. data/ext/p7zip/DOCS/MANUAL/switches/stdout.htm +50 -0
  631. data/ext/p7zip/DOCS/MANUAL/switches/stop_switch.htm +31 -0
  632. data/ext/p7zip/DOCS/MANUAL/switches/style.css +232 -0
  633. data/ext/p7zip/DOCS/MANUAL/switches/type.htm +83 -0
  634. data/ext/p7zip/DOCS/MANUAL/switches/update.htm +176 -0
  635. data/ext/p7zip/DOCS/MANUAL/switches/volume.htm +49 -0
  636. data/ext/p7zip/DOCS/MANUAL/switches/working_dir.htm +55 -0
  637. data/ext/p7zip/DOCS/MANUAL/switches/yes.htm +48 -0
  638. data/ext/p7zip/DOCS/MANUAL/syntax.htm +120 -0
  639. data/ext/p7zip/DOCS/Methods.txt +152 -0
  640. data/ext/p7zip/DOCS/copying.txt +504 -0
  641. data/ext/p7zip/DOCS/history.txt +456 -0
  642. data/ext/p7zip/DOCS/lzma.txt +598 -0
  643. data/ext/p7zip/DOCS/readme.txt +181 -0
  644. data/ext/p7zip/DOCS/unRarLicense.txt +41 -0
  645. data/ext/p7zip/README +358 -0
  646. data/ext/p7zip/TODO +39 -0
  647. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/ChangeLog +41 -0
  648. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme +21 -0
  649. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme.u7z +30 -0
  650. data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/u7z +133 -0
  651. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/README +21 -0
  652. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/check.sh +117 -0
  653. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/files.tar +0 -0
  654. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/man1/p7zip.1 +33 -0
  655. data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/p7zip +144 -0
  656. data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-shared +14 -0
  657. data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-static +10 -0
  658. data/ext/p7zip/extconf.rb +101 -0
  659. data/ext/p7zip/install.sh +206 -0
  660. data/ext/p7zip/install_local_context_menu.sh +18 -0
  661. data/ext/p7zip/integration_context_menu.txt +51 -0
  662. data/ext/p7zip/makefile +181 -0
  663. data/ext/p7zip/makefile.aix_gcc +22 -0
  664. data/ext/p7zip/makefile.beos +18 -0
  665. data/ext/p7zip/makefile.crc32 +8 -0
  666. data/ext/p7zip/makefile.cygwin +20 -0
  667. data/ext/p7zip/makefile.cygwin_asm +21 -0
  668. data/ext/p7zip/makefile.djgpp_old +21 -0
  669. data/ext/p7zip/makefile.djgpp_watt +47 -0
  670. data/ext/p7zip/makefile.freebsd5 +20 -0
  671. data/ext/p7zip/makefile.freebsd6 +20 -0
  672. data/ext/p7zip/makefile.glb +39 -0
  673. data/ext/p7zip/makefile.gprof +18 -0
  674. data/ext/p7zip/makefile.hpux-acc +17 -0
  675. data/ext/p7zip/makefile.hpux-acc_64 +19 -0
  676. data/ext/p7zip/makefile.hpux-gcc +21 -0
  677. data/ext/p7zip/makefile.linux_amd64 +22 -0
  678. data/ext/p7zip/makefile.linux_amd64_asm +24 -0
  679. data/ext/p7zip/makefile.linux_amd64_asm_icc +27 -0
  680. data/ext/p7zip/makefile.linux_any_cpu +22 -0
  681. data/ext/p7zip/makefile.linux_any_cpu_gcc_4.X +24 -0
  682. data/ext/p7zip/makefile.linux_clang_amd64 +22 -0
  683. data/ext/p7zip/makefile.linux_cross_arm +22 -0
  684. data/ext/p7zip/makefile.linux_gcc_2.95_no_need_for_libstdc +20 -0
  685. data/ext/p7zip/makefile.linux_other +23 -0
  686. data/ext/p7zip/makefile.linux_s390x +23 -0
  687. data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X +26 -0
  688. data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X_fltk +26 -0
  689. data/ext/p7zip/makefile.linux_x86_asm_gcc_mudflap_4.X +26 -0
  690. data/ext/p7zip/makefile.linux_x86_asm_icc +25 -0
  691. data/ext/p7zip/makefile.linux_x86_icc +24 -0
  692. data/ext/p7zip/makefile.machine_base +22 -0
  693. data/ext/p7zip/makefile.macosx_32bits +20 -0
  694. data/ext/p7zip/makefile.macosx_32bits_asm +23 -0
  695. data/ext/p7zip/makefile.macosx_32bits_ppc +21 -0
  696. data/ext/p7zip/makefile.macosx_64bits +20 -0
  697. data/ext/p7zip/makefile.macosx_llvm_64bits +20 -0
  698. data/ext/p7zip/makefile.netbsd +21 -0
  699. data/ext/p7zip/makefile.netware_asm_gcc_3.X +41 -0
  700. data/ext/p7zip/makefile.oldmake +174 -0
  701. data/ext/p7zip/makefile.openbsd +20 -0
  702. data/ext/p7zip/makefile.openbsd_no_port +20 -0
  703. data/ext/p7zip/makefile.qnx_shared.bin +21 -0
  704. data/ext/p7zip/makefile.qnx_static +21 -0
  705. data/ext/p7zip/makefile.rules +661 -0
  706. data/ext/p7zip/makefile.solaris_sparc_CC_32 +21 -0
  707. data/ext/p7zip/makefile.solaris_sparc_CC_64 +23 -0
  708. data/ext/p7zip/makefile.solaris_sparc_gcc +21 -0
  709. data/ext/p7zip/makefile.solaris_x86 +19 -0
  710. data/ext/p7zip/makefile.tru64 +22 -0
  711. data/ext/seven_zip_ruby/extconf.rb +127 -0
  712. data/ext/seven_zip_ruby/guid_defs.h +29 -0
  713. data/ext/seven_zip_ruby/mutex.h +10 -0
  714. data/ext/seven_zip_ruby/posix/mutex.h +94 -0
  715. data/ext/seven_zip_ruby/seven_zip_archive.cpp +1876 -0
  716. data/ext/seven_zip_ruby/seven_zip_archive.h +548 -0
  717. data/ext/seven_zip_ruby/util_common.cpp +28 -0
  718. data/ext/seven_zip_ruby/util_common.h +515 -0
  719. data/ext/seven_zip_ruby/utils.cpp +575 -0
  720. data/ext/seven_zip_ruby/utils.h +25 -0
  721. data/ext/seven_zip_ruby/win32/mutex.h +130 -0
  722. data/lib/seven_zip_ruby/7z.dll +0 -0
  723. data/lib/seven_zip_ruby/7z.sfx +0 -0
  724. data/lib/seven_zip_ruby/7z64.dll +0 -0
  725. data/lib/seven_zip_ruby/7zCon.sfx +0 -0
  726. data/lib/seven_zip_ruby/archive_info.rb +21 -0
  727. data/lib/seven_zip_ruby/entry_info.rb +46 -0
  728. data/lib/seven_zip_ruby/exception.rb +10 -0
  729. data/lib/seven_zip_ruby/seven_zip_reader.rb +537 -0
  730. data/lib/seven_zip_ruby/seven_zip_writer.rb +502 -0
  731. data/lib/seven_zip_ruby/update_info.rb +116 -0
  732. data/lib/seven_zip_ruby/version.rb +3 -0
  733. data/lib/seven_zip_ruby.rb +34 -0
  734. data/seven-zip.gemspec +35 -0
  735. data/spec/seven_zip.7z +0 -0
  736. data/spec/seven_zip_password.7z +0 -0
  737. data/spec/seven_zip_ruby_spec.rb +703 -0
  738. data/spec/seven_zip_ruby_spec_helper.rb +144 -0
  739. metadata +829 -0
@@ -0,0 +1,1461 @@
1
+ // NsisIn.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ #include "../../../../C/CpuArch.h"
6
+
7
+ #include "Common/IntToString.h"
8
+
9
+ #include "../../Common/StreamUtils.h"
10
+
11
+ #include "NsisIn.h"
12
+
13
+ #define Get32(p) GetUi32(p)
14
+
15
+ namespace NArchive {
16
+ namespace NNsis {
17
+
18
+ Byte kSignature[kSignatureSize] = NSIS_SIGNATURE;
19
+
20
+ #ifdef NSIS_SCRIPT
21
+ static const char *kCrLf = "\x0D\x0A";
22
+ #endif
23
+
24
+ #define NS_UN_SKIP_CODE 0xE000
25
+ #define NS_UN_VAR_CODE 0xE001
26
+ #define NS_UN_SHELL_CODE 0xE002
27
+ #define NS_UN_LANG_CODE 0xE003
28
+ #define NS_UN_CODES_START NS_UN_SKIP_CODE
29
+ #define NS_UN_CODES_END NS_UN_LANG_CODE
30
+
31
+ Byte CInArchive::ReadByte()
32
+ {
33
+ if (_posInData >= _size)
34
+ throw 1;
35
+ return _data[_posInData++];
36
+ }
37
+
38
+ UInt32 CInArchive::ReadUInt32()
39
+ {
40
+ UInt32 value = 0;
41
+ for (int i = 0; i < 4; i++)
42
+ value |= ((UInt32)(ReadByte()) << (8 * i));
43
+ return value;
44
+ }
45
+
46
+ void CInArchive::ReadBlockHeader(CBlockHeader &bh)
47
+ {
48
+ bh.Offset = ReadUInt32();
49
+ bh.Num = ReadUInt32();
50
+ }
51
+
52
+ #define RINOZ(x) { int __tt = (x); if (__tt != 0) return __tt; }
53
+
54
+ static int CompareItems(void *const *p1, void *const *p2, void * /* param */)
55
+ {
56
+ const CItem &i1 = **(CItem **)p1;
57
+ const CItem &i2 = **(CItem **)p2;
58
+ RINOZ(MyCompare(i1.Pos, i2.Pos));
59
+ if (i1.IsUnicode)
60
+ {
61
+ RINOZ(i1.PrefixU.Compare(i2.PrefixU));
62
+ RINOZ(i1.NameU.Compare(i2.NameU));
63
+ }
64
+ else
65
+ {
66
+ RINOZ(i1.PrefixA.Compare(i2.PrefixA));
67
+ RINOZ(i1.NameA.Compare(i2.NameA));
68
+ }
69
+ return 0;
70
+ }
71
+
72
+ static AString UIntToString(UInt32 v)
73
+ {
74
+ char sz[32];
75
+ ConvertUInt64ToString(v, sz);
76
+ return sz;
77
+ }
78
+
79
+ static AString IntToString(Int32 v)
80
+ {
81
+ char sz[32];
82
+ ConvertInt64ToString(v, sz);
83
+ return sz;
84
+ }
85
+
86
+ AString CInArchive::ReadStringA(UInt32 pos) const
87
+ {
88
+ AString s;
89
+ if (pos >= _size)
90
+ return IntToString((Int32)pos);
91
+ UInt32 offset = GetOffset() + _stringsPos + pos;
92
+ for (;;)
93
+ {
94
+ if (offset >= _size)
95
+ break; // throw 1;
96
+ char c = _data[offset++];
97
+ if (c == 0)
98
+ break;
99
+ s += c;
100
+ }
101
+ return s;
102
+ }
103
+
104
+ UString CInArchive::ReadStringU(UInt32 pos) const
105
+ {
106
+ UString s;
107
+ UInt32 offset = GetOffset() + _stringsPos + (pos * 2);
108
+ for (;;)
109
+ {
110
+ if (offset >= _size || offset + 1 >= _size)
111
+ return s; // throw 1;
112
+ char c0 = _data[offset++];
113
+ char c1 = _data[offset++];
114
+ wchar_t c = (c0 | ((wchar_t)c1 << 8));
115
+ if (c == 0)
116
+ break;
117
+ s += c;
118
+ }
119
+ return s;
120
+ }
121
+
122
+ /*
123
+ static AString ParsePrefix(const AString &prefix)
124
+ {
125
+ AString res = prefix;
126
+ if (prefix.Length() >= 3)
127
+ {
128
+ if ((Byte)prefix[0] == 0xFD && (Byte)prefix[1] == 0x95 && (Byte)prefix[2] == 0x80)
129
+ res = "$INSTDIR" + prefix.Mid(3);
130
+ else if ((Byte)prefix[0] == 0xFD && (Byte)prefix[1] == 0x96 && (Byte)prefix[2] == 0x80)
131
+ res = "$OUTDIR" + prefix.Mid(3);
132
+ }
133
+ return res;
134
+ }
135
+ */
136
+
137
+ #define SYSREGKEY "Software\\Microsoft\\Windows\\CurrentVersion"
138
+
139
+ /*
140
+ # define CSIDL_PROGRAMS 0x2
141
+ # define CSIDL_PRINTERS 0x4
142
+ # define CSIDL_PERSONAL 0x5
143
+ # define CSIDL_FAVORITES 0x6
144
+ # define CSIDL_STARTUP 0x7
145
+ # define CSIDL_RECENT 0x8
146
+ # define CSIDL_SENDTO 0x9
147
+ # define CSIDL_STARTMENU 0xB
148
+ # define CSIDL_MYMUSIC 0xD
149
+ # define CSIDL_MYVIDEO 0xE
150
+
151
+ # define CSIDL_DESKTOPDIRECTORY 0x10
152
+ # define CSIDL_NETHOOD 0x13
153
+ # define CSIDL_FONTS 0x14
154
+ # define CSIDL_TEMPLATES 0x15
155
+ # define CSIDL_COMMON_STARTMENU 0x16
156
+ # define CSIDL_COMMON_PROGRAMS 0x17
157
+ # define CSIDL_COMMON_STARTUP 0x18
158
+ # define CSIDL_COMMON_DESKTOPDIRECTORY 0x19
159
+ # define CSIDL_APPDATA 0x1A
160
+ # define CSIDL_PRINTHOOD 0x1B
161
+ # define CSIDL_LOCAL_APPDATA 0x1C
162
+ # define CSIDL_ALTSTARTUP 0x1D
163
+ # define CSIDL_COMMON_ALTSTARTUP 0x1E
164
+ # define CSIDL_COMMON_FAVORITES 0x1F
165
+
166
+ # define CSIDL_INTERNET_CACHE 0x20
167
+ # define CSIDL_COOKIES 0x21
168
+ # define CSIDL_HISTORY 0x22
169
+ # define CSIDL_COMMON_APPDATA 0x23
170
+ # define CSIDL_WINDOWS 0x24
171
+ # define CSIDL_SYSTEM 0x25
172
+ # define CSIDL_PROGRAM_FILES 0x26
173
+ # define CSIDL_MYPICTURES 0x27
174
+ # define CSIDL_PROFILE 0x28
175
+ # define CSIDL_PROGRAM_FILES_COMMON 0x2B
176
+ # define CSIDL_COMMON_TEMPLATES 0x2D
177
+ # define CSIDL_COMMON_DOCUMENTS 0x2E
178
+ # define CSIDL_COMMON_ADMINTOOLS 0x2F
179
+
180
+ # define CSIDL_ADMINTOOLS 0x30
181
+ # define CSIDL_COMMON_MUSIC 0x35
182
+ # define CSIDL_COMMON_PICTURES 0x36
183
+ # define CSIDL_COMMON_VIDEO 0x37
184
+ # define CSIDL_RESOURCES 0x38
185
+ # define CSIDL_RESOURCES_LOCALIZED 0x39
186
+ # define CSIDL_CDBURN_AREA 0x3B
187
+ */
188
+
189
+ struct CCommandPair
190
+ {
191
+ int NumParams;
192
+ const char *Name;
193
+ };
194
+
195
+ enum
196
+ {
197
+ // 0
198
+ EW_INVALID_OPCODE, // zero is invalid. useful for catching errors. (otherwise an all zeroes instruction
199
+ // does nothing, which is easily ignored but means something is wrong.
200
+ EW_RET, // return from function call
201
+ EW_NOP, // Nop/Jump, do nothing: 1, [?new address+1:advance one]
202
+ EW_ABORT, // Abort: 1 [status]
203
+ EW_QUIT, // Quit: 0
204
+ EW_CALL, // Call: 1 [new address+1]
205
+ EW_UPDATETEXT, // Update status text: 2 [update str, ui_st_updateflag=?ui_st_updateflag:this]
206
+ EW_SLEEP, // Sleep: 1 [sleep time in milliseconds]
207
+ EW_BRINGTOFRONT, // BringToFront: 0
208
+ EW_CHDETAILSVIEW, // SetDetailsView: 2 [listaction,buttonaction]
209
+
210
+ // 10
211
+ EW_SETFILEATTRIBUTES, // SetFileAttributes: 2 [filename, attributes]
212
+ EW_CREATEDIR, // Create directory: 2, [path, ?update$INSTDIR]
213
+ EW_IFFILEEXISTS, // IfFileExists: 3, [file name, jump amount if exists, jump amount if not exists]
214
+ EW_SETFLAG, // Sets a flag: 2 [id, data]
215
+ EW_IFFLAG, // If a flag: 4 [on, off, id, new value mask]
216
+ EW_GETFLAG, // Gets a flag: 2 [output, id]
217
+ EW_RENAME, // Rename: 3 [old, new, rebootok]
218
+ EW_GETFULLPATHNAME, // GetFullPathName: 2 [output, input, ?lfn:sfn]
219
+ EW_SEARCHPATH, // SearchPath: 2 [output, filename]
220
+ EW_GETTEMPFILENAME, // GetTempFileName: 2 [output, base_dir]
221
+
222
+ // 20
223
+ EW_EXTRACTFILE, // File to extract: 6 [overwriteflag, output filename, compressed filedata, filedatetimelow, filedatetimehigh, allow ignore]
224
+ // overwriteflag: 0x1 = no. 0x0=force, 0x2=try, 0x3=if date is newer
225
+ EW_DELETEFILE, // Delete File: 2, [filename, rebootok]
226
+ EW_MESSAGEBOX, // MessageBox: 5,[MB_flags,text,retv1:retv2,moveonretv1:moveonretv2]
227
+ EW_RMDIR, // RMDir: 2 [path, recursiveflag]
228
+ EW_STRLEN, // StrLen: 2 [output, input]
229
+ EW_ASSIGNVAR, // Assign: 4 [variable (0-9) to assign, string to assign, maxlen, startpos]
230
+ EW_STRCMP, // StrCmp: 5 [str1, str2, jump_if_equal, jump_if_not_equal, case-sensitive?]
231
+ EW_READENVSTR, // ReadEnvStr/ExpandEnvStrings: 3 [output, string_with_env_variables, IsRead]
232
+ EW_INTCMP, // IntCmp: 6 [val1, val2, equal, val1<val2, val1>val2, unsigned?]
233
+ EW_INTOP, // IntOp: 4 [output, input1, input2, op] where op: 0=add, 1=sub, 2=mul, 3=div, 4=bor, 5=band, 6=bxor, 7=bnot input1, 8=lnot input1, 9=lor, 10=land], 11=1%2
234
+
235
+ // 30
236
+ EW_INTFMT, // IntFmt: [output, format, input]
237
+ EW_PUSHPOP, // Push/Pop/Exchange: 3 [variable/string, ?pop:push, ?exch]
238
+ EW_FINDWINDOW, // FindWindow: 5, [outputvar, window class,window name, window_parent, window_after]
239
+ EW_SENDMESSAGE, // SendMessage: 6 [output, hwnd, msg, wparam, lparam, [wparamstring?1:0 | lparamstring?2:0 | timeout<<2]
240
+ EW_ISWINDOW, // IsWindow: 3 [hwnd, jump_if_window, jump_if_notwindow]
241
+ EW_GETDLGITEM, // GetDlgItem: 3: [outputvar, dialog, item_id]
242
+ EW_SETCTLCOLORS, // SerCtlColors: 3: [hwnd, pointer to struct colors]
243
+ EW_SETBRANDINGIMAGE, // SetBrandingImage: 1: [Bitmap file]
244
+ EW_CREATEFONT, // CreateFont: 5: [handle output, face name, height, weight, flags]
245
+ EW_SHOWWINDOW, // ShowWindow: 2: [hwnd, show state]
246
+
247
+ // 40
248
+ EW_SHELLEXEC, // ShellExecute program: 4, [shell action, complete commandline, parameters, showwindow]
249
+ EW_EXECUTE, // Execute program: 3,[complete command line,waitflag,>=0?output errorcode]
250
+ EW_GETFILETIME, // GetFileTime; 3 [file highout lowout]
251
+ EW_GETDLLVERSION, // GetDLLVersion: 3 [file highout lowout]
252
+ EW_REGISTERDLL, // Register DLL: 3,[DLL file name, string ptr of function to call, text to put in display (<0 if none/pass parms), 1 - no unload, 0 - unload]
253
+ EW_CREATESHORTCUT, // Make Shortcut: 5, [link file, target file, parameters, icon file, iconindex|show mode<<8|hotkey<<16]
254
+ EW_COPYFILES, // CopyFiles: 3 [source mask, destination location, flags]
255
+ EW_REBOOT, // Reboot: 0
256
+ EW_WRITEINI, // Write INI String: 4, [Section, Name, Value, INI File]
257
+ EW_READINISTR, // ReadINIStr: 4 [output, section, name, ini_file]
258
+
259
+ // 50
260
+ EW_DELREG, // DeleteRegValue/DeleteRegKey: 4, [root key(int), KeyName, ValueName, delkeyonlyifempty]. ValueName is -1 if delete key
261
+ EW_WRITEREG, // Write Registry value: 5, [RootKey(int),KeyName,ItemName,ItemData,typelen]
262
+ // typelen=1 for str, 2 for dword, 3 for binary, 0 for expanded str
263
+ EW_READREGSTR, // ReadRegStr: 5 [output, rootkey(int), keyname, itemname, ==1?int::str]
264
+ EW_REGENUM, // RegEnum: 5 [output, rootkey, keyname, index, ?key:value]
265
+ EW_FCLOSE, // FileClose: 1 [handle]
266
+ EW_FOPEN, // FileOpen: 4 [name, openmode, createmode, outputhandle]
267
+ EW_FPUTS, // FileWrite: 3 [handle, string, ?int:string]
268
+ EW_FGETS, // FileRead: 4 [handle, output, maxlen, ?getchar:gets]
269
+ EW_FSEEK, // FileSeek: 4 [handle, offset, mode, >=0?positionoutput]
270
+ EW_FINDCLOSE, // FindClose: 1 [handle]
271
+
272
+ // 60
273
+ EW_FINDNEXT, // FindNext: 2 [output, handle]
274
+ EW_FINDFIRST, // FindFirst: 2 [filespec, output, handleoutput]
275
+ EW_WRITEUNINSTALLER, // WriteUninstaller: 3 [name, offset, icon_size]
276
+ EW_LOG, // LogText: 2 [0, text] / LogSet: [1, logstate]
277
+ EW_SECTIONSET, // SectionSetText: 3: [idx, 0, text]
278
+ // SectionGetText: 3: [idx, 1, output]
279
+ // SectionSetFlags: 3: [idx, 2, flags]
280
+ // SectionGetFlags: 3: [idx, 3, output]
281
+ EW_INSTTYPESET, // InstTypeSetFlags: 3: [idx, 0, flags]
282
+ // InstTypeGetFlags: 3: [idx, 1, output]
283
+ // instructions not actually implemented in exehead, but used in compiler.
284
+ EW_GETLABELADDR, // both of these get converted to EW_ASSIGNVAR
285
+ EW_GETFUNCTIONADDR,
286
+
287
+ EW_LOCKWINDOW
288
+ };
289
+
290
+ #ifdef NSIS_SCRIPT
291
+ static CCommandPair kCommandPairs[] =
292
+ {
293
+ { 0, "Invalid" },
294
+ { 0, "Return" },
295
+ { 1, "Goto" },
296
+ { 0, "Abort" },
297
+ { 0, "Quit" },
298
+ { 1, "Call" },
299
+ { 2, "UpdateSatusText" },
300
+ { 1, "Sleep" },
301
+ { 0, "BringToFront" },
302
+ { 2, "SetDetailsView" },
303
+
304
+ { 2, "SetFileAttributes" },
305
+ { 2, "SetOutPath" },
306
+ { 3, "IfFileExists" },
307
+ { 2, "SetFlag" },
308
+ { 4, "IfFlag" },
309
+ { 2, "GetFlag" },
310
+ { 3, "Rename" },
311
+ { 2, "GetFullPathName" },
312
+ { 2, "SearchPath" },
313
+ { 2, "GetTempFileName" },
314
+
315
+ { 6, "File" },
316
+ { 2, "Delete" },
317
+ { 5, "MessageBox" },
318
+ { 2, "RMDir" },
319
+ { 2, "StrLen" },
320
+ { 4, "StrCpy" },
321
+ { 5, "StrCmp" },
322
+ { 3, "ReadEnvStr" },
323
+ { 6, "IntCmp" },
324
+ { 4, "IntOp" },
325
+
326
+ { 3, "IntFmt" },
327
+ { 3, "PushPop" },
328
+ { 5, "FindWindow" },
329
+ { 6, "SendMessage" },
330
+ { 3, "IsWindow" },
331
+ { 3, "GetDlgItem" },
332
+ { 3, "SerCtlColors" },
333
+ { 1, "SetBrandingImage" },
334
+ { 5, "CreateFont" },
335
+ { 2, "ShowWindow" },
336
+
337
+ { 4, "ShellExecute" },
338
+ { 3, "Execute" },
339
+ { 3, "GetFileTime" },
340
+ { 3, "GetDLLVersion" },
341
+ { 3, "RegisterDLL" },
342
+ { 5, "CreateShortCut" },
343
+ { 3, "CopyFiles" },
344
+ { 0, "Reboot" },
345
+ { 4, "WriteINIStr" },
346
+ { 4, "ReadINIStr" },
347
+
348
+ { 4, "DelReg" },
349
+ { 5, "WriteReg" },
350
+ { 5, "ReadRegStr" },
351
+ { 5, "RegEnum" },
352
+ { 1, "FileClose" },
353
+ { 4, "FileOpen" },
354
+ { 3, "FileWrite" },
355
+ { 4, "FileRead" },
356
+ { 4, "FileSeek" },
357
+ { 1, "FindClose" },
358
+
359
+ { 2, "FindNext" },
360
+ { 2, "FindFirst" },
361
+ { 3, "WriteUninstaller" },
362
+ { 2, "LogText" },
363
+ { 3, "Section?etText" },
364
+ { 3, "InstType?etFlags" },
365
+ { 6, "GetLabelAddr" },
366
+ { 2, "GetFunctionAddress" },
367
+ { 6, "LockWindow" }
368
+ };
369
+
370
+ #endif
371
+
372
+ static const char *kShellStrings[] =
373
+ {
374
+ "",
375
+ "",
376
+
377
+ "SMPROGRAMS",
378
+ "",
379
+ "PRINTERS",
380
+ "DOCUMENTS",
381
+ "FAVORITES",
382
+ "SMSTARTUP",
383
+ "RECENT",
384
+ "SENDTO",
385
+ "",
386
+ "STARTMENU",
387
+ "",
388
+ "MUSIC",
389
+ "VIDEO",
390
+ "",
391
+
392
+ "DESKTOP",
393
+ "",
394
+ "",
395
+ "NETHOOD",
396
+ "FONTS",
397
+ "TEMPLATES",
398
+ "COMMONSTARTMENU",
399
+ "COMMONFILES",
400
+ "COMMON_STARTUP",
401
+ "COMMON_DESKTOPDIRECTORY",
402
+ "QUICKLAUNCH",
403
+ "PRINTHOOD",
404
+ "LOCALAPPDATA",
405
+ "ALTSTARTUP",
406
+ "ALTSTARTUP",
407
+ "FAVORITES",
408
+
409
+ "INTERNET_CACHE",
410
+ "COOKIES",
411
+ "HISTORY",
412
+ "APPDATA",
413
+ "WINDIR",
414
+ "SYSDIR",
415
+ "PROGRAMFILES",
416
+ "PICTURES",
417
+ "PROFILE",
418
+ "",
419
+ "",
420
+ "COMMONFILES",
421
+ "",
422
+ "TEMPLATES",
423
+ "DOCUMENTS",
424
+ "ADMINTOOLS",
425
+
426
+ "ADMINTOOLS",
427
+ "",
428
+ "",
429
+ "",
430
+ "",
431
+ "MUSIC",
432
+ "PICTURES",
433
+ "VIDEO",
434
+ "RESOURCES",
435
+ "RESOURCES_LOCALIZED",
436
+ "",
437
+ "CDBURN_AREA"
438
+ };
439
+
440
+ static const int kNumShellStrings = sizeof(kShellStrings) / sizeof(kShellStrings[0]);
441
+
442
+ /*
443
+ # define CMDLINE 20 // everything before here doesn't have trailing slash removal
444
+ # define INSTDIR 21
445
+ # define OUTDIR 22
446
+ # define EXEDIR 23
447
+ # define LANGUAGE 24
448
+ # define TEMP 25
449
+ # define PLUGINSDIR 26
450
+ # define HWNDPARENT 27
451
+ # define _CLICK 28
452
+ # define _OUTDIR 29
453
+ */
454
+
455
+ static const char *kVarStrings[] =
456
+ {
457
+ "CMDLINE",
458
+ "INSTDIR",
459
+ "OUTDIR",
460
+ "EXEDIR",
461
+ "LANGUAGE",
462
+ "TEMP",
463
+ "PLUGINSDIR",
464
+ "EXEPATH", // test it
465
+ "EXEFILE", // test it
466
+ "HWNDPARENT",
467
+ "_CLICK",
468
+ "_OUTDIR"
469
+ };
470
+
471
+ static const int kNumVarStrings = sizeof(kVarStrings) / sizeof(kVarStrings[0]);
472
+
473
+
474
+ static AString GetVar(UInt32 index)
475
+ {
476
+ AString res = "$";
477
+ if (index < 10)
478
+ res += UIntToString(index);
479
+ else if (index < 20)
480
+ {
481
+ res += "R";
482
+ res += UIntToString(index - 10);
483
+ }
484
+ else if (index < 20 + kNumVarStrings)
485
+ res += kVarStrings[index - 20];
486
+ else
487
+ {
488
+ res += "[";
489
+ res += UIntToString(index);
490
+ res += "]";
491
+ }
492
+ return res;
493
+ }
494
+
495
+ #define NS_SKIP_CODE 252
496
+ #define NS_VAR_CODE 253
497
+ #define NS_SHELL_CODE 254
498
+ #define NS_LANG_CODE 255
499
+ #define NS_CODES_START NS_SKIP_CODE
500
+
501
+ static AString GetShellString(int index)
502
+ {
503
+ AString res = "$";
504
+ if (index < kNumShellStrings)
505
+ {
506
+ const char *sz = kShellStrings[index];
507
+ if (sz[0] != 0)
508
+ return res + sz;
509
+ }
510
+ res += "SHELL[";
511
+ res += UIntToString(index);
512
+ res += "]";
513
+ return res;
514
+ }
515
+
516
+ // Based on Dave Laundon's simplified process_string
517
+ AString GetNsisString(const AString &s)
518
+ {
519
+ AString res;
520
+ for (int i = 0; i < s.Length();)
521
+ {
522
+ unsigned char nVarIdx = s[i++];
523
+ if (nVarIdx > NS_CODES_START && i + 2 <= s.Length())
524
+ {
525
+ int nData = s[i++] & 0x7F;
526
+ unsigned char c1 = s[i++];
527
+ nData |= (((int)(c1 & 0x7F)) << 7);
528
+
529
+ if (nVarIdx == NS_SHELL_CODE)
530
+ res += GetShellString(c1);
531
+ else if (nVarIdx == NS_VAR_CODE)
532
+ res += GetVar(nData);
533
+ else if (nVarIdx == NS_LANG_CODE)
534
+ res += "NS_LANG_CODE";
535
+ }
536
+ else if (nVarIdx == NS_SKIP_CODE)
537
+ {
538
+ if (i < s.Length())
539
+ res += s[i++];
540
+ }
541
+ else // Normal char
542
+ res += (char)nVarIdx;
543
+ }
544
+ return res;
545
+ }
546
+
547
+ UString GetNsisString(const UString &s)
548
+ {
549
+ UString res;
550
+ for (int i = 0; i < s.Length();)
551
+ {
552
+ wchar_t nVarIdx = s[i++];
553
+ if (nVarIdx > NS_UN_CODES_START && nVarIdx <= NS_UN_CODES_END)
554
+ {
555
+ if (i == s.Length())
556
+ break;
557
+ int nData = s[i++] & 0x7FFF;
558
+
559
+ if (nVarIdx == NS_UN_SHELL_CODE)
560
+ res += GetUnicodeString(GetShellString(nData >> 8));
561
+ else if (nVarIdx == NS_UN_VAR_CODE)
562
+ res += GetUnicodeString(GetVar(nData));
563
+ else if (nVarIdx == NS_UN_LANG_CODE)
564
+ res += L"NS_LANG_CODE";
565
+ }
566
+ else if (nVarIdx == NS_UN_SKIP_CODE)
567
+ {
568
+ if (i == s.Length())
569
+ break;
570
+ res += s[i++];
571
+ }
572
+ else // Normal char
573
+ res += (char)nVarIdx;
574
+ }
575
+ return res;
576
+ }
577
+
578
+ AString CInArchive::ReadString2A(UInt32 pos) const
579
+ {
580
+ return GetNsisString(ReadStringA(pos));
581
+ }
582
+
583
+ UString CInArchive::ReadString2U(UInt32 pos) const
584
+ {
585
+ return GetNsisString(ReadStringU(pos));
586
+ }
587
+
588
+ AString CInArchive::ReadString2(UInt32 pos) const
589
+ {
590
+ if (IsUnicode)
591
+ return UnicodeStringToMultiByte(ReadString2U(pos));
592
+ else
593
+ return ReadString2A(pos);
594
+ }
595
+
596
+ AString CInArchive::ReadString2Qw(UInt32 pos) const
597
+ {
598
+ return "\"" + ReadString2(pos) + "\"";
599
+ }
600
+
601
+ #define DEL_DIR 1
602
+ #define DEL_RECURSE 2
603
+ #define DEL_REBOOT 4
604
+ // #define DEL_SIMPLE 8
605
+
606
+ static const int kNumEntryParams = 6;
607
+
608
+ struct CEntry
609
+ {
610
+ UInt32 Which;
611
+ UInt32 Params[kNumEntryParams];
612
+ AString GetParamsString(int numParams);
613
+ CEntry()
614
+ {
615
+ Which = 0;
616
+ for (UInt32 j = 0; j < kNumEntryParams; j++)
617
+ Params[j] = 0;
618
+ }
619
+ };
620
+
621
+ AString CEntry::GetParamsString(int numParams)
622
+ {
623
+ AString s;
624
+ for (int i = 0; i < numParams; i++)
625
+ {
626
+ s += " ";
627
+ UInt32 v = Params[i];
628
+ if (v > 0xFFF00000)
629
+ s += IntToString((Int32)Params[i]);
630
+ else
631
+ s += UIntToString(Params[i]);
632
+ }
633
+ return s;
634
+ }
635
+
636
+ #ifdef NSIS_SCRIPT
637
+
638
+ static AString GetRegRootID(UInt32 val)
639
+ {
640
+ const char *s;
641
+ switch(val)
642
+ {
643
+ case 0: s = "SHCTX"; break;
644
+ case 0x80000000: s = "HKCR"; break;
645
+ case 0x80000001: s = "HKCU"; break;
646
+ case 0x80000002: s = "HKLM"; break;
647
+ case 0x80000003: s = "HKU"; break;
648
+ case 0x80000004: s = "HKPD"; break;
649
+ case 0x80000005: s = "HKCC"; break;
650
+ case 0x80000006: s = "HKDD"; break;
651
+ case 0x80000050: s = "HKPT"; break;
652
+ case 0x80000060: s = "HKPN"; break;
653
+ default:
654
+ return UIntToString(val); break;
655
+ }
656
+ return s;
657
+ }
658
+
659
+ #endif
660
+
661
+ HRESULT CInArchive::ReadEntries(const CBlockHeader &bh)
662
+ {
663
+ _posInData = bh.Offset + GetOffset();
664
+ AString prefixA;
665
+ UString prefixU;
666
+ for (UInt32 i = 0; i < bh.Num; i++)
667
+ {
668
+ CEntry e;
669
+ e.Which = ReadUInt32();
670
+ for (UInt32 j = 0; j < kNumEntryParams; j++)
671
+ e.Params[j] = ReadUInt32();
672
+ #ifdef NSIS_SCRIPT
673
+ if (e.Which != EW_PUSHPOP && e.Which < sizeof(kCommandPairs) / sizeof(kCommandPairs[0]))
674
+ {
675
+ const CCommandPair &pair = kCommandPairs[e.Which];
676
+ Script += pair.Name;
677
+ }
678
+ #endif
679
+
680
+ switch (e.Which)
681
+ {
682
+ case EW_CREATEDIR:
683
+ {
684
+ if (IsUnicode)
685
+ {
686
+ prefixU.Empty();
687
+ prefixU = ReadString2U(e.Params[0]);
688
+ }
689
+ else
690
+ {
691
+ prefixA.Empty();
692
+ prefixA = ReadString2A(e.Params[0]);
693
+ }
694
+ #ifdef NSIS_SCRIPT
695
+ Script += " ";
696
+ if (IsUnicode)
697
+ Script += UnicodeStringToMultiByte(prefixU);
698
+ else
699
+ Script += prefixA;
700
+ #endif
701
+ break;
702
+ }
703
+
704
+ case EW_EXTRACTFILE:
705
+ {
706
+ CItem item;
707
+ item.IsUnicode = IsUnicode;
708
+ if (IsUnicode)
709
+ {
710
+ item.PrefixU = prefixU;
711
+ item.NameU = ReadString2U(e.Params[1]);
712
+ }
713
+ else
714
+ {
715
+ item.PrefixA = prefixA;
716
+ item.NameA = ReadString2A(e.Params[1]);
717
+ }
718
+ /* UInt32 overwriteFlag = e.Params[0]; */
719
+ item.Pos = e.Params[2];
720
+ item.MTime.dwLowDateTime = e.Params[3];
721
+ item.MTime.dwHighDateTime = e.Params[4];
722
+ /* UInt32 allowIgnore = e.Params[5]; */
723
+ if (Items.Size() > 0)
724
+ {
725
+ /*
726
+ if (item.Pos == Items.Back().Pos)
727
+ continue;
728
+ */
729
+ }
730
+ Items.Add(item);
731
+ #ifdef NSIS_SCRIPT
732
+ Script += " ";
733
+
734
+ if (IsUnicode)
735
+ Script += UnicodeStringToMultiByte(item.NameU);
736
+ else
737
+ Script += item.NameA;
738
+ #endif
739
+ break;
740
+ }
741
+
742
+
743
+ #ifdef NSIS_SCRIPT
744
+ case EW_UPDATETEXT:
745
+ {
746
+ Script += " ";
747
+ Script += ReadString2(e.Params[0]);
748
+ Script += " ";
749
+ Script += UIntToString(e.Params[1]);
750
+ break;
751
+ }
752
+ case EW_SETFILEATTRIBUTES:
753
+ {
754
+ Script += " ";
755
+ Script += ReadString2(e.Params[0]);
756
+ Script += " ";
757
+ Script += UIntToString(e.Params[1]);
758
+ break;
759
+ }
760
+ case EW_IFFILEEXISTS:
761
+ {
762
+ Script += " ";
763
+ Script += ReadString2(e.Params[0]);
764
+ Script += " ";
765
+ Script += UIntToString(e.Params[1]);
766
+ Script += " ";
767
+ Script += UIntToString(e.Params[2]);
768
+ break;
769
+ }
770
+ case EW_RENAME:
771
+ {
772
+ Script += " ";
773
+ Script += ReadString2(e.Params[0]);
774
+ Script += " ";
775
+ Script += ReadString2(e.Params[1]);
776
+ Script += " ";
777
+ Script += UIntToString(e.Params[2]);
778
+ break;
779
+ }
780
+ case EW_GETFULLPATHNAME:
781
+ {
782
+ Script += " ";
783
+ Script += ReadString2(e.Params[0]);
784
+ Script += " ";
785
+ Script += ReadString2(e.Params[1]);
786
+ Script += " ";
787
+ Script += UIntToString(e.Params[2]);
788
+ break;
789
+ }
790
+ case EW_SEARCHPATH:
791
+ {
792
+ Script += " ";
793
+ Script += ReadString2(e.Params[0]);
794
+ Script += " ";
795
+ Script += ReadString2(e.Params[1]);
796
+ break;
797
+ }
798
+ case EW_GETTEMPFILENAME:
799
+ {
800
+ AString s;
801
+ Script += " ";
802
+ Script += ReadString2(e.Params[0]);
803
+ Script += " ";
804
+ Script += ReadString2(e.Params[1]);
805
+ break;
806
+ }
807
+
808
+ case EW_DELETEFILE:
809
+ {
810
+ UInt64 flag = e.Params[1];
811
+ if (flag != 0)
812
+ {
813
+ Script += " ";
814
+ if (flag == DEL_REBOOT)
815
+ Script += "/REBOOTOK";
816
+ else
817
+ Script += UIntToString(e.Params[1]);
818
+ }
819
+ Script += " ";
820
+ Script += ReadString2(e.Params[0]);
821
+ break;
822
+ }
823
+ case EW_RMDIR:
824
+ {
825
+ UInt64 flag = e.Params[1];
826
+ if (flag != 0)
827
+ {
828
+ if ((flag & DEL_REBOOT) != 0)
829
+ Script += " /REBOOTOK";
830
+ if ((flag & DEL_RECURSE) != 0)
831
+ Script += " /r";
832
+ }
833
+ Script += " ";
834
+ Script += ReadString2(e.Params[0]);
835
+ break;
836
+ }
837
+ case EW_STRLEN:
838
+ {
839
+ Script += " ";
840
+ Script += GetVar(e.Params[0]);;
841
+ Script += " ";
842
+ Script += ReadString2Qw(e.Params[1]);
843
+ break;
844
+ }
845
+ case EW_ASSIGNVAR:
846
+ {
847
+ Script += " ";
848
+ Script += GetVar(e.Params[0]);;
849
+ Script += " ";
850
+ Script += ReadString2Qw(e.Params[1]);
851
+ AString maxLen, startOffset;
852
+ if (e.Params[2] != 0)
853
+ maxLen = ReadString2(e.Params[2]);
854
+ if (e.Params[3] != 0)
855
+ startOffset = ReadString2(e.Params[3]);
856
+ if (!maxLen.IsEmpty() || !startOffset.IsEmpty())
857
+ {
858
+ Script += " ";
859
+ if (maxLen.IsEmpty())
860
+ Script += "\"\"";
861
+ else
862
+ Script += maxLen;
863
+ if (!startOffset.IsEmpty())
864
+ {
865
+ Script += " ";
866
+ Script += startOffset;
867
+ }
868
+ }
869
+ break;
870
+ }
871
+ case EW_STRCMP:
872
+ {
873
+ Script += " ";
874
+
875
+ Script += " ";
876
+ Script += ReadString2Qw(e.Params[0]);
877
+
878
+ Script += " ";
879
+ Script += ReadString2Qw(e.Params[1]);
880
+
881
+ for (int j = 2; j < 5; j++)
882
+ {
883
+ Script += " ";
884
+ Script += UIntToString(e.Params[j]);
885
+ }
886
+ break;
887
+ }
888
+ case EW_INTCMP:
889
+ {
890
+ if (e.Params[5] != 0)
891
+ Script += "U";
892
+
893
+ Script += " ";
894
+ Script += ReadString2(e.Params[0]);
895
+ Script += " ";
896
+ Script += ReadString2(e.Params[1]);
897
+
898
+ for (int i = 2; i < 5; i++)
899
+ {
900
+ Script += " ";
901
+ Script += UIntToString(e.Params[i]);
902
+ }
903
+ break;
904
+ }
905
+ case EW_INTOP:
906
+ {
907
+ Script += " ";
908
+ Script += GetVar(e.Params[0]);
909
+ Script += " ";
910
+ int numOps = 2;
911
+ AString op;
912
+ switch (e.Params[3])
913
+ {
914
+ case 0: op = '+'; break;
915
+ case 1: op = '-'; break;
916
+ case 2: op = '*'; break;
917
+ case 3: op = '/'; break;
918
+ case 4: op = '|'; break;
919
+ case 5: op = '&'; break;
920
+ case 6: op = '^'; break;
921
+ case 7: op = '~'; numOps = 1; break;
922
+ case 8: op = '!'; numOps = 1; break;
923
+ case 9: op = "||"; break;
924
+ case 10: op = "&&"; break;
925
+ case 11: op = '%'; break;
926
+ default: op = UIntToString(e.Params[3]);
927
+ }
928
+ AString p1 = ReadString2(e.Params[1]);
929
+ if (numOps == 1)
930
+ {
931
+ Script += op;
932
+ Script += p1;
933
+ }
934
+ else
935
+ {
936
+ Script += p1;
937
+ Script += " ";
938
+ Script += op;
939
+ Script += " ";
940
+ Script += ReadString2(e.Params[2]);
941
+ }
942
+ break;
943
+ }
944
+
945
+ case EW_PUSHPOP:
946
+ {
947
+ int isPop = (e.Params[1] != 0);
948
+ if (isPop)
949
+ {
950
+ Script += "Pop";
951
+ Script += " ";
952
+ Script += GetVar(e.Params[0]);;
953
+ }
954
+ else
955
+ {
956
+ int isExch = (e.Params[2] != 0);
957
+ if (isExch)
958
+ {
959
+ Script += "Exch";
960
+ }
961
+ else
962
+ {
963
+ Script += "Push";
964
+ Script += " ";
965
+ Script += ReadString2(e.Params[0]);
966
+ }
967
+ }
968
+ break;
969
+ }
970
+
971
+ case EW_SENDMESSAGE:
972
+ {
973
+ // SendMessage: 6 [output, hwnd, msg, wparam, lparam, [wparamstring?1:0 | lparamstring?2:0 | timeout<<2]
974
+ Script += " ";
975
+ // Script += ReadString2(e.Params[0]);
976
+ // Script += " ";
977
+ Script += ReadString2(e.Params[1]);
978
+ Script += " ";
979
+ Script += ReadString2(e.Params[2]);
980
+
981
+ Script += " ";
982
+ UInt32 spec = e.Params[5];
983
+ // if (spec & 1)
984
+ Script += IntToString(e.Params[3]);
985
+ // else
986
+ // Script += ReadString2(e.Params[3]);
987
+
988
+ Script += " ";
989
+ // if (spec & 2)
990
+ Script += IntToString(e.Params[4]);
991
+ // else
992
+ // Script += ReadString2(e.Params[4]);
993
+
994
+ if ((Int32)e.Params[0] >= 0)
995
+ {
996
+ Script += " ";
997
+ Script += GetVar(e.Params[1]);
998
+ }
999
+
1000
+ spec >>= 2;
1001
+ if (spec != 0)
1002
+ {
1003
+ Script += " /TIMEOUT=";
1004
+ Script += IntToString(spec);
1005
+ }
1006
+ break;
1007
+ }
1008
+
1009
+ case EW_GETDLGITEM:
1010
+ {
1011
+ Script += " ";
1012
+ Script += GetVar(e.Params[0]);;
1013
+ Script += " ";
1014
+ Script += ReadString2(e.Params[1]);
1015
+ Script += " ";
1016
+ Script += ReadString2(e.Params[2]);
1017
+ break;
1018
+ }
1019
+
1020
+
1021
+ case EW_REGISTERDLL:
1022
+ {
1023
+ Script += " ";
1024
+ Script += ReadString2(e.Params[0]);
1025
+ Script += " ";
1026
+ Script += ReadString2(e.Params[1]);
1027
+ Script += " ";
1028
+ Script += UIntToString(e.Params[2]);
1029
+ break;
1030
+ }
1031
+
1032
+ case EW_CREATESHORTCUT:
1033
+ {
1034
+ AString s;
1035
+
1036
+ Script += " ";
1037
+ Script += ReadString2Qw(e.Params[0]);
1038
+
1039
+ Script += " ";
1040
+ Script += ReadString2Qw(e.Params[1]);
1041
+
1042
+ for (int j = 2; j < 5; j++)
1043
+ {
1044
+ Script += " ";
1045
+ Script += UIntToString(e.Params[j]);
1046
+ }
1047
+ break;
1048
+ }
1049
+
1050
+ /*
1051
+ case EW_DELREG:
1052
+ {
1053
+ AString keyName, valueName;
1054
+ keyName = ReadString2(e.Params[1]);
1055
+ bool isValue = (e.Params[2] != -1);
1056
+ if (isValue)
1057
+ {
1058
+ valueName = ReadString2(e.Params[2]);
1059
+ Script += "Key";
1060
+ }
1061
+ else
1062
+ Script += "Value";
1063
+ Script += " ";
1064
+ Script += UIntToString(e.Params[0]);
1065
+ Script += " ";
1066
+ Script += keyName;
1067
+ if (isValue)
1068
+ {
1069
+ Script += " ";
1070
+ Script += valueName;
1071
+ }
1072
+ Script += " ";
1073
+ Script += UIntToString(e.Params[3]);
1074
+ break;
1075
+ }
1076
+ */
1077
+
1078
+ case EW_WRITEREG:
1079
+ {
1080
+ AString s;
1081
+ switch(e.Params[4])
1082
+ {
1083
+ case 1: s = "Str"; break;
1084
+ case 2: s = "ExpandStr"; break;
1085
+ case 3: s = "Bin"; break;
1086
+ case 4: s = "DWORD"; break;
1087
+ default: s = "?" + UIntToString(e.Params[4]); break;
1088
+ }
1089
+ Script += s;
1090
+ Script += " ";
1091
+ Script += GetRegRootID(e.Params[0]);
1092
+ Script += " ";
1093
+
1094
+ AString keyName, valueName;
1095
+ keyName = ReadString2Qw(e.Params[1]);
1096
+ Script += keyName;
1097
+ Script += " ";
1098
+
1099
+ valueName = ReadString2Qw(e.Params[2]);
1100
+ Script += valueName;
1101
+ Script += " ";
1102
+
1103
+ valueName = ReadString2Qw(e.Params[3]);
1104
+ Script += valueName;
1105
+ Script += " ";
1106
+
1107
+ break;
1108
+ }
1109
+
1110
+ case EW_WRITEUNINSTALLER:
1111
+ {
1112
+ Script += " ";
1113
+ Script += ReadString2(e.Params[0]);
1114
+ for (int j = 1; j < 3; j++)
1115
+ {
1116
+ Script += " ";
1117
+ Script += UIntToString(e.Params[j]);
1118
+ }
1119
+ break;
1120
+ }
1121
+
1122
+ default:
1123
+ {
1124
+ int numParams = kNumEntryParams;
1125
+ if (e.Which < sizeof(kCommandPairs) / sizeof(kCommandPairs[0]))
1126
+ {
1127
+ const CCommandPair &pair = kCommandPairs[e.Which];
1128
+ // Script += pair.Name;
1129
+ numParams = pair.NumParams;
1130
+ }
1131
+ else
1132
+ {
1133
+ Script += "Unknown";
1134
+ Script += UIntToString(e.Which);
1135
+ }
1136
+ Script += e.GetParamsString(numParams);
1137
+ }
1138
+ #endif
1139
+ }
1140
+ #ifdef NSIS_SCRIPT
1141
+ Script += kCrLf;
1142
+ #endif
1143
+ }
1144
+
1145
+ {
1146
+ Items.Sort(CompareItems, 0);
1147
+ int i;
1148
+ // if (IsSolid)
1149
+ for (i = 0; i + 1 < Items.Size();)
1150
+ {
1151
+ bool sameName = IsUnicode ?
1152
+ (Items[i].NameU == Items[i + 1].NameU) :
1153
+ (Items[i].NameA == Items[i + 1].NameA);
1154
+ if (Items[i].Pos == Items[i + 1].Pos && sameName)
1155
+ Items.Delete(i + 1);
1156
+ else
1157
+ i++;
1158
+ }
1159
+ for (i = 0; i < Items.Size(); i++)
1160
+ {
1161
+ CItem &item = Items[i];
1162
+ UInt32 curPos = item.Pos + 4;
1163
+ for (int nextIndex = i + 1; nextIndex < Items.Size(); nextIndex++)
1164
+ {
1165
+ UInt32 nextPos = Items[nextIndex].Pos;
1166
+ if (curPos <= nextPos)
1167
+ {
1168
+ item.EstimatedSizeIsDefined = true;
1169
+ item.EstimatedSize = nextPos - curPos;
1170
+ break;
1171
+ }
1172
+ }
1173
+ }
1174
+ if (!IsSolid)
1175
+ {
1176
+ for (i = 0; i < Items.Size(); i++)
1177
+ {
1178
+ CItem &item = Items[i];
1179
+ RINOK(_stream->Seek(GetPosOfNonSolidItem(i), STREAM_SEEK_SET, NULL));
1180
+ const UInt32 kSigSize = 4 + 1 + 5;
1181
+ BYTE sig[kSigSize];
1182
+ size_t processedSize = kSigSize;
1183
+ RINOK(ReadStream(_stream, sig, &processedSize));
1184
+ if (processedSize < 4)
1185
+ return S_FALSE;
1186
+ UInt32 size = Get32(sig);
1187
+ if ((size & 0x80000000) != 0)
1188
+ {
1189
+ item.IsCompressed = true;
1190
+ // is compressed;
1191
+ size &= ~0x80000000;
1192
+ if (Method == NMethodType::kLZMA)
1193
+ {
1194
+ if (processedSize < 9)
1195
+ return S_FALSE;
1196
+ if (FilterFlag)
1197
+ item.UseFilter = (sig[4] != 0);
1198
+ item.DictionarySize = Get32(sig + 5 + (FilterFlag ? 1 : 0));
1199
+ }
1200
+ }
1201
+ else
1202
+ {
1203
+ item.IsCompressed = false;
1204
+ item.Size = size;
1205
+ item.SizeIsDefined = true;
1206
+ }
1207
+ item.CompressedSize = size;
1208
+ item.CompressedSizeIsDefined = true;
1209
+ }
1210
+ }
1211
+ }
1212
+ return S_OK;
1213
+ }
1214
+
1215
+ HRESULT CInArchive::Parse()
1216
+ {
1217
+ // UInt32 offset = ReadUInt32();
1218
+ // ???? offset == FirstHeader.HeaderLength
1219
+ /* UInt32 ehFlags = */ ReadUInt32();
1220
+ CBlockHeader bhPages, bhSections, bhEntries, bhStrings, bhLangTables, bhCtlColors, bhData;
1221
+ // CBlockHeader bgFont;
1222
+ ReadBlockHeader(bhPages);
1223
+ ReadBlockHeader(bhSections);
1224
+ ReadBlockHeader(bhEntries);
1225
+ ReadBlockHeader(bhStrings);
1226
+ ReadBlockHeader(bhLangTables);
1227
+ ReadBlockHeader(bhCtlColors);
1228
+ // ReadBlockHeader(bgFont);
1229
+ ReadBlockHeader(bhData);
1230
+
1231
+ _stringsPos = bhStrings.Offset;
1232
+ UInt32 pos = GetOffset() + _stringsPos;
1233
+ int numZeros0 = 0;
1234
+ int numZeros1 = 0;
1235
+ int i;
1236
+ const int kBlockSize = 256;
1237
+ for (i = 0; i < kBlockSize; i++)
1238
+ {
1239
+ if (pos >= _size || pos + 1 >= _size)
1240
+ break;
1241
+ char c0 = _data[pos++];
1242
+ char c1 = _data[pos++];
1243
+ wchar_t c = (c0 | ((wchar_t)c1 << 8));
1244
+
1245
+ if (c >= NS_UN_CODES_START && c < NS_UN_CODES_END)
1246
+ {
1247
+ if (pos >= _size || pos + 1 >= _size)
1248
+ break;
1249
+ pos += 2;
1250
+ numZeros1++;
1251
+ }
1252
+ else
1253
+ {
1254
+ if (c0 == 0 && c1 != 0)
1255
+ numZeros0++;
1256
+ if (c1 == 0)
1257
+ numZeros1++;
1258
+ }
1259
+ // printf("\nnumZeros0 = %2x %2x", _data[pos + 0], _data[pos + 1]);
1260
+ }
1261
+ IsUnicode = (numZeros1 > numZeros0 * 3 + kBlockSize / 16);
1262
+ // printf("\nnumZeros0 = %3d numZeros1 = %3d", numZeros0, numZeros1);
1263
+ return ReadEntries(bhEntries);
1264
+ }
1265
+
1266
+ static bool IsLZMA(const Byte *p, UInt32 &dictionary)
1267
+ {
1268
+ dictionary = Get32(p + 1);
1269
+ return (p[0] == 0x5D && p[1] == 0x00 && p[2] == 0x00 && p[5] == 0x00);
1270
+ }
1271
+
1272
+ static bool IsLZMA(const Byte *p, UInt32 &dictionary, bool &thereIsFlag)
1273
+ {
1274
+ if (IsLZMA(p, dictionary))
1275
+ {
1276
+ thereIsFlag = false;
1277
+ return true;
1278
+ }
1279
+ if (IsLZMA(p + 1, dictionary))
1280
+ {
1281
+ thereIsFlag = true;
1282
+ return true;
1283
+ }
1284
+ return false;
1285
+ }
1286
+
1287
+ static bool IsBZip2(const Byte *p)
1288
+ {
1289
+ return (p[0] == 0x31 && p[1] < 14);
1290
+ }
1291
+
1292
+ HRESULT CInArchive::Open2(
1293
+ DECL_EXTERNAL_CODECS_LOC_VARS2
1294
+ )
1295
+ {
1296
+ RINOK(_stream->Seek(0, STREAM_SEEK_CUR, &StreamOffset));
1297
+
1298
+ const UInt32 kSigSize = 4 + 1 + 5 + 1; // size, flag, lzma props, lzma first byte
1299
+ BYTE sig[kSigSize];
1300
+ RINOK(ReadStream_FALSE(_stream, sig, kSigSize));
1301
+ UInt64 position;
1302
+ RINOK(_stream->Seek(StreamOffset, STREAM_SEEK_SET, &position));
1303
+
1304
+ _headerIsCompressed = true;
1305
+ IsSolid = true;
1306
+ FilterFlag = false;
1307
+ DictionarySize = 1;
1308
+
1309
+ UInt32 compressedHeaderSize = Get32(sig);
1310
+
1311
+ if (compressedHeaderSize == FirstHeader.HeaderLength)
1312
+ {
1313
+ _headerIsCompressed = false;
1314
+ IsSolid = false;
1315
+ Method = NMethodType::kCopy;
1316
+ }
1317
+ else if (IsLZMA(sig, DictionarySize, FilterFlag))
1318
+ {
1319
+ Method = NMethodType::kLZMA;
1320
+ }
1321
+ else if (IsLZMA(sig + 4, DictionarySize, FilterFlag))
1322
+ {
1323
+ IsSolid = false;
1324
+ Method = NMethodType::kLZMA;
1325
+ }
1326
+ else if (sig[3] == 0x80)
1327
+ {
1328
+ IsSolid = false;
1329
+ if (IsBZip2(sig + 4))
1330
+ Method = NMethodType::kBZip2;
1331
+ else
1332
+ Method = NMethodType::kDeflate;
1333
+ }
1334
+ else if (IsBZip2(sig))
1335
+ {
1336
+ Method = NMethodType::kBZip2;
1337
+ }
1338
+ else
1339
+ {
1340
+ Method = NMethodType::kDeflate;
1341
+ }
1342
+
1343
+ _posInData = 0;
1344
+ if (!IsSolid)
1345
+ {
1346
+ _headerIsCompressed = ((compressedHeaderSize & 0x80000000) != 0);
1347
+ if (_headerIsCompressed)
1348
+ compressedHeaderSize &= ~0x80000000;
1349
+ _nonSolidStartOffset = compressedHeaderSize;
1350
+ RINOK(_stream->Seek(StreamOffset + 4, STREAM_SEEK_SET, NULL));
1351
+ }
1352
+ UInt32 unpackSize = FirstHeader.HeaderLength;
1353
+ if (_headerIsCompressed)
1354
+ {
1355
+ // unpackSize = (1 << 23);
1356
+ _data.SetCapacity(unpackSize);
1357
+ RINOK(Decoder.Init(
1358
+ EXTERNAL_CODECS_LOC_VARS
1359
+ _stream, Method, FilterFlag, UseFilter));
1360
+ size_t processedSize = unpackSize;
1361
+ RINOK(Decoder.Read(_data, &processedSize));
1362
+ if (processedSize != unpackSize)
1363
+ return S_FALSE;
1364
+ _size = processedSize;
1365
+ if (IsSolid)
1366
+ {
1367
+ UInt32 size2 = ReadUInt32();
1368
+ if (size2 < _size)
1369
+ _size = size2;
1370
+ }
1371
+ }
1372
+ else
1373
+ {
1374
+ _data.SetCapacity(unpackSize);
1375
+ _size = (size_t)unpackSize;
1376
+ RINOK(ReadStream_FALSE(_stream, (Byte *)_data, unpackSize));
1377
+ }
1378
+ return Parse();
1379
+ }
1380
+
1381
+ /*
1382
+ NsisExe =
1383
+ {
1384
+ ExeStub
1385
+ Archive // must start from 512 * N
1386
+ #ifndef NSIS_CONFIG_CRC_ANAL
1387
+ {
1388
+ Some additional data
1389
+ }
1390
+ }
1391
+
1392
+ Archive
1393
+ {
1394
+ FirstHeader
1395
+ Data
1396
+ #ifdef NSIS_CONFIG_CRC_SUPPORT && FirstHeader.ThereIsCrc()
1397
+ {
1398
+ CRC
1399
+ }
1400
+ }
1401
+
1402
+ FirstHeader
1403
+ {
1404
+ UInt32 Flags;
1405
+ Byte Signature[16];
1406
+ // points to the header+sections+entries+stringtable in the datablock
1407
+ UInt32 HeaderLength;
1408
+ UInt32 ArchiveSize;
1409
+ }
1410
+ */
1411
+
1412
+ HRESULT CInArchive::Open(
1413
+ DECL_EXTERNAL_CODECS_LOC_VARS
1414
+ IInStream *inStream, const UInt64 *maxCheckStartPosition)
1415
+ {
1416
+ Clear();
1417
+ RINOK(inStream->Seek(0, STREAM_SEEK_SET, NULL));
1418
+ UInt64 maxSize = ((maxCheckStartPosition != 0) ? *maxCheckStartPosition : 0);
1419
+ const UInt32 kStep = 512;
1420
+ Byte buffer[kStep];
1421
+
1422
+ UInt64 position = 0;
1423
+ for (; position <= maxSize; position += kStep)
1424
+ {
1425
+ RINOK(ReadStream_FALSE(inStream, buffer, kStep));
1426
+ if (memcmp(buffer + 4, kSignature, kSignatureSize) == 0)
1427
+ break;
1428
+ }
1429
+ if (position > maxSize)
1430
+ return S_FALSE;
1431
+ const UInt32 kStartHeaderSize = 4 * 7;
1432
+ RINOK(inStream->Seek(0, STREAM_SEEK_END, &_archiveSize));
1433
+ RINOK(inStream->Seek(position + kStartHeaderSize, STREAM_SEEK_SET, 0));
1434
+ FirstHeader.Flags = Get32(buffer);
1435
+ FirstHeader.HeaderLength = Get32(buffer + kSignatureSize + 4);
1436
+ FirstHeader.ArchiveSize = Get32(buffer + kSignatureSize + 8);
1437
+ if (_archiveSize - position < FirstHeader.ArchiveSize)
1438
+ return S_FALSE;
1439
+
1440
+ try
1441
+ {
1442
+ _stream = inStream;
1443
+ HRESULT res = Open2(EXTERNAL_CODECS_LOC_VARS2);
1444
+ if (res != S_OK)
1445
+ Clear();
1446
+ _stream.Release();
1447
+ return res;
1448
+ }
1449
+ catch(...) { Clear(); return S_FALSE; }
1450
+ }
1451
+
1452
+ void CInArchive::Clear()
1453
+ {
1454
+ #ifdef NSIS_SCRIPT
1455
+ Script.Empty();
1456
+ #endif
1457
+ Items.Clear();
1458
+ _stream.Release();
1459
+ }
1460
+
1461
+ }}