libmspack 0.10.1 → 0.11.0

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 (391) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +37 -0
  3. data/.gitignore +2 -0
  4. data/Rakefile +1 -1
  5. data/ext/Rakefile +1 -1
  6. data/ext/libmspack/ChangeLog +145 -0
  7. data/ext/libmspack/INSTALL +3 -3
  8. data/ext/libmspack/Makefile.am +7 -4
  9. data/ext/libmspack/Makefile.in +265 -147
  10. data/ext/libmspack/README +3 -2
  11. data/ext/libmspack/aclocal.m4 +111 -113
  12. data/ext/libmspack/ar-lib +10 -9
  13. data/ext/libmspack/compile +9 -8
  14. data/ext/libmspack/config.guess +887 -613
  15. data/ext/libmspack/config.h.in +6 -9
  16. data/ext/libmspack/config.sub +1349 -1260
  17. data/ext/libmspack/configure +3035 -2490
  18. data/ext/libmspack/configure.ac +3 -3
  19. data/ext/libmspack/depcomp +4 -4
  20. data/ext/libmspack/install-sh +107 -74
  21. data/ext/libmspack/libmscabd.la +1 -1
  22. data/ext/libmspack/libmschmd.la +1 -1
  23. data/ext/libmspack/libmspack.la +1 -1
  24. data/ext/libmspack/ltmain.sh +156 -61
  25. data/ext/libmspack/m4/libtool.m4 +19 -12
  26. data/ext/libmspack/missing +8 -8
  27. data/ext/libmspack/mspack/cabd.c +21 -19
  28. data/ext/libmspack/mspack/chm.h +3 -2
  29. data/ext/libmspack/mspack/chmd.c +137 -57
  30. data/ext/libmspack/mspack/kwajd.c +29 -29
  31. data/ext/libmspack/mspack/lzx.h +0 -1
  32. data/ext/libmspack/mspack/lzxd.c +30 -154
  33. data/ext/libmspack/mspack/macros.h +64 -0
  34. data/ext/libmspack/mspack/mszipd.c +7 -18
  35. data/ext/libmspack/mspack/qtmd.c +3 -5
  36. data/ext/libmspack/mspack/readbits.h +14 -5
  37. data/ext/libmspack/mspack/readhuff.h +26 -21
  38. data/ext/libmspack/mspack/system.c +0 -5
  39. data/ext/libmspack/mspack/system.h +20 -67
  40. data/ext/libmspack/test-driver +16 -11
  41. data/ext/x86_64-linux/libmspack.so +0 -0
  42. data/ext/x86_64-windows/mspack.dll +0 -0
  43. data/lib/libmspack/version.rb +1 -1
  44. data/lib/libmspack.rb +1 -1
  45. data/libmspack.gemspec +1 -1
  46. metadata +7 -348
  47. data/.travis.yml +0 -5
  48. data/ext/i386-windows/libmspack.dll +0 -0
  49. data/ext/libmspack/doc/Doxyfile +0 -9
  50. data/ext/libmspack/doc/Makefile +0 -8
  51. data/ext/libmspack/doc/html/annotated.html +0 -104
  52. data/ext/libmspack/doc/html/bc_s.png +0 -0
  53. data/ext/libmspack/doc/html/bdwn.png +0 -0
  54. data/ext/libmspack/doc/html/classes.html +0 -85
  55. data/ext/libmspack/doc/html/closed.png +0 -0
  56. data/ext/libmspack/doc/html/dir_f4d90282fe865f947a460986b93b960a.html +0 -83
  57. data/ext/libmspack/doc/html/doc.png +0 -0
  58. data/ext/libmspack/doc/html/doxygen.css +0 -1596
  59. data/ext/libmspack/doc/html/doxygen.png +0 -0
  60. data/ext/libmspack/doc/html/dynsections.js +0 -97
  61. data/ext/libmspack/doc/html/files.html +0 -78
  62. data/ext/libmspack/doc/html/folderclosed.png +0 -0
  63. data/ext/libmspack/doc/html/folderopen.png +0 -0
  64. data/ext/libmspack/doc/html/functions.html +0 -454
  65. data/ext/libmspack/doc/html/functions_vars.html +0 -454
  66. data/ext/libmspack/doc/html/globals.html +0 -406
  67. data/ext/libmspack/doc/html/globals_defs.html +0 -316
  68. data/ext/libmspack/doc/html/globals_func.html +0 -161
  69. data/ext/libmspack/doc/html/graph_legend.html +0 -102
  70. data/ext/libmspack/doc/html/graph_legend.md5 +0 -1
  71. data/ext/libmspack/doc/html/graph_legend.png +0 -0
  72. data/ext/libmspack/doc/html/index.html +0 -167
  73. data/ext/libmspack/doc/html/jquery.js +0 -87
  74. data/ext/libmspack/doc/html/menu.js +0 -26
  75. data/ext/libmspack/doc/html/menudata.js +0 -56
  76. data/ext/libmspack/doc/html/mspack_8h.html +0 -2664
  77. data/ext/libmspack/doc/html/mspack_8h__incl.map +0 -2
  78. data/ext/libmspack/doc/html/mspack_8h__incl.md5 +0 -1
  79. data/ext/libmspack/doc/html/mspack_8h__incl.png +0 -0
  80. data/ext/libmspack/doc/html/mspack_8h_source.html +0 -238
  81. data/ext/libmspack/doc/html/nav_f.png +0 -0
  82. data/ext/libmspack/doc/html/nav_g.png +0 -0
  83. data/ext/libmspack/doc/html/nav_h.png +0 -0
  84. data/ext/libmspack/doc/html/open.png +0 -0
  85. data/ext/libmspack/doc/html/search/all_0.html +0 -26
  86. data/ext/libmspack/doc/html/search/all_0.js +0 -6
  87. data/ext/libmspack/doc/html/search/all_1.html +0 -26
  88. data/ext/libmspack/doc/html/search/all_1.js +0 -5
  89. data/ext/libmspack/doc/html/search/all_10.html +0 -26
  90. data/ext/libmspack/doc/html/search/all_10.js +0 -8
  91. data/ext/libmspack/doc/html/search/all_11.html +0 -26
  92. data/ext/libmspack/doc/html/search/all_11.js +0 -4
  93. data/ext/libmspack/doc/html/search/all_12.html +0 -26
  94. data/ext/libmspack/doc/html/search/all_12.js +0 -4
  95. data/ext/libmspack/doc/html/search/all_13.html +0 -26
  96. data/ext/libmspack/doc/html/search/all_13.js +0 -4
  97. data/ext/libmspack/doc/html/search/all_2.html +0 -26
  98. data/ext/libmspack/doc/html/search/all_2.js +0 -14
  99. data/ext/libmspack/doc/html/search/all_3.html +0 -26
  100. data/ext/libmspack/doc/html/search/all_3.js +0 -13
  101. data/ext/libmspack/doc/html/search/all_4.html +0 -26
  102. data/ext/libmspack/doc/html/search/all_4.js +0 -6
  103. data/ext/libmspack/doc/html/search/all_5.html +0 -26
  104. data/ext/libmspack/doc/html/search/all_5.js +0 -13
  105. data/ext/libmspack/doc/html/search/all_6.html +0 -26
  106. data/ext/libmspack/doc/html/search/all_6.js +0 -4
  107. data/ext/libmspack/doc/html/search/all_7.html +0 -26
  108. data/ext/libmspack/doc/html/search/all_7.js +0 -5
  109. data/ext/libmspack/doc/html/search/all_8.html +0 -26
  110. data/ext/libmspack/doc/html/search/all_8.js +0 -5
  111. data/ext/libmspack/doc/html/search/all_9.html +0 -26
  112. data/ext/libmspack/doc/html/search/all_9.js +0 -7
  113. data/ext/libmspack/doc/html/search/all_a.html +0 -26
  114. data/ext/libmspack/doc/html/search/all_a.js +0 -144
  115. data/ext/libmspack/doc/html/search/all_b.html +0 -26
  116. data/ext/libmspack/doc/html/search/all_b.js +0 -10
  117. data/ext/libmspack/doc/html/search/all_c.html +0 -26
  118. data/ext/libmspack/doc/html/search/all_c.js +0 -5
  119. data/ext/libmspack/doc/html/search/all_d.html +0 -26
  120. data/ext/libmspack/doc/html/search/all_d.js +0 -7
  121. data/ext/libmspack/doc/html/search/all_e.html +0 -26
  122. data/ext/libmspack/doc/html/search/all_e.js +0 -5
  123. data/ext/libmspack/doc/html/search/all_f.html +0 -26
  124. data/ext/libmspack/doc/html/search/all_f.js +0 -15
  125. data/ext/libmspack/doc/html/search/classes_0.html +0 -26
  126. data/ext/libmspack/doc/html/search/classes_0.js +0 -30
  127. data/ext/libmspack/doc/html/search/close.png +0 -0
  128. data/ext/libmspack/doc/html/search/defines_0.html +0 -26
  129. data/ext/libmspack/doc/html/search/defines_0.js +0 -84
  130. data/ext/libmspack/doc/html/search/files_0.html +0 -26
  131. data/ext/libmspack/doc/html/search/files_0.js +0 -4
  132. data/ext/libmspack/doc/html/search/functions_0.html +0 -26
  133. data/ext/libmspack/doc/html/search/functions_0.js +0 -33
  134. data/ext/libmspack/doc/html/search/mag_sel.png +0 -0
  135. data/ext/libmspack/doc/html/search/nomatches.html +0 -12
  136. data/ext/libmspack/doc/html/search/search.css +0 -271
  137. data/ext/libmspack/doc/html/search/search.js +0 -791
  138. data/ext/libmspack/doc/html/search/search_l.png +0 -0
  139. data/ext/libmspack/doc/html/search/search_m.png +0 -0
  140. data/ext/libmspack/doc/html/search/search_r.png +0 -0
  141. data/ext/libmspack/doc/html/search/searchdata.js +0 -30
  142. data/ext/libmspack/doc/html/search/variables_0.html +0 -26
  143. data/ext/libmspack/doc/html/search/variables_0.js +0 -6
  144. data/ext/libmspack/doc/html/search/variables_1.html +0 -26
  145. data/ext/libmspack/doc/html/search/variables_1.js +0 -5
  146. data/ext/libmspack/doc/html/search/variables_10.html +0 -26
  147. data/ext/libmspack/doc/html/search/variables_10.js +0 -8
  148. data/ext/libmspack/doc/html/search/variables_11.html +0 -26
  149. data/ext/libmspack/doc/html/search/variables_11.js +0 -4
  150. data/ext/libmspack/doc/html/search/variables_12.html +0 -26
  151. data/ext/libmspack/doc/html/search/variables_12.js +0 -4
  152. data/ext/libmspack/doc/html/search/variables_13.html +0 -26
  153. data/ext/libmspack/doc/html/search/variables_13.js +0 -4
  154. data/ext/libmspack/doc/html/search/variables_2.html +0 -26
  155. data/ext/libmspack/doc/html/search/variables_2.js +0 -14
  156. data/ext/libmspack/doc/html/search/variables_3.html +0 -26
  157. data/ext/libmspack/doc/html/search/variables_3.js +0 -13
  158. data/ext/libmspack/doc/html/search/variables_4.html +0 -26
  159. data/ext/libmspack/doc/html/search/variables_4.js +0 -6
  160. data/ext/libmspack/doc/html/search/variables_5.html +0 -26
  161. data/ext/libmspack/doc/html/search/variables_5.js +0 -13
  162. data/ext/libmspack/doc/html/search/variables_6.html +0 -26
  163. data/ext/libmspack/doc/html/search/variables_6.js +0 -4
  164. data/ext/libmspack/doc/html/search/variables_7.html +0 -26
  165. data/ext/libmspack/doc/html/search/variables_7.js +0 -5
  166. data/ext/libmspack/doc/html/search/variables_8.html +0 -26
  167. data/ext/libmspack/doc/html/search/variables_8.js +0 -5
  168. data/ext/libmspack/doc/html/search/variables_9.html +0 -26
  169. data/ext/libmspack/doc/html/search/variables_9.js +0 -7
  170. data/ext/libmspack/doc/html/search/variables_a.html +0 -26
  171. data/ext/libmspack/doc/html/search/variables_a.js +0 -5
  172. data/ext/libmspack/doc/html/search/variables_b.html +0 -26
  173. data/ext/libmspack/doc/html/search/variables_b.js +0 -10
  174. data/ext/libmspack/doc/html/search/variables_c.html +0 -26
  175. data/ext/libmspack/doc/html/search/variables_c.js +0 -5
  176. data/ext/libmspack/doc/html/search/variables_d.html +0 -26
  177. data/ext/libmspack/doc/html/search/variables_d.js +0 -7
  178. data/ext/libmspack/doc/html/search/variables_e.html +0 -26
  179. data/ext/libmspack/doc/html/search/variables_e.js +0 -5
  180. data/ext/libmspack/doc/html/search/variables_f.html +0 -26
  181. data/ext/libmspack/doc/html/search/variables_f.js +0 -15
  182. data/ext/libmspack/doc/html/splitbar.png +0 -0
  183. data/ext/libmspack/doc/html/structmscab__compressor.html +0 -106
  184. data/ext/libmspack/doc/html/structmscab__decompressor.html +0 -361
  185. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.map +0 -5
  186. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.md5 +0 -1
  187. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.png +0 -0
  188. data/ext/libmspack/doc/html/structmscabd__cabinet.html +0 -418
  189. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.map +0 -4
  190. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.md5 +0 -1
  191. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.png +0 -0
  192. data/ext/libmspack/doc/html/structmscabd__file.html +0 -337
  193. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.map +0 -3
  194. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.md5 +0 -1
  195. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.png +0 -0
  196. data/ext/libmspack/doc/html/structmscabd__folder.html +0 -159
  197. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.map +0 -2
  198. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.md5 +0 -1
  199. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.png +0 -0
  200. data/ext/libmspack/doc/html/structmschm__compressor.html +0 -226
  201. data/ext/libmspack/doc/html/structmschm__decompressor.html +0 -299
  202. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.map +0 -7
  203. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.md5 +0 -1
  204. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.png +0 -0
  205. data/ext/libmspack/doc/html/structmschmc__file.html +0 -169
  206. data/ext/libmspack/doc/html/structmschmd__file.html +0 -198
  207. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.map +0 -6
  208. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.md5 +0 -1
  209. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.png +0 -0
  210. data/ext/libmspack/doc/html/structmschmd__header.html +0 -458
  211. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.map +0 -6
  212. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.md5 +0 -1
  213. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.png +0 -0
  214. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed.html +0 -198
  215. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.map +0 -6
  216. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.md5 +0 -1
  217. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.png +0 -0
  218. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed.html +0 -140
  219. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.map +0 -6
  220. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.md5 +0 -1
  221. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.png +0 -0
  222. data/ext/libmspack/doc/html/structmschmd__section.html +0 -142
  223. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.map +0 -6
  224. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.md5 +0 -1
  225. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.png +0 -0
  226. data/ext/libmspack/doc/html/structmshlp__compressor.html +0 -106
  227. data/ext/libmspack/doc/html/structmshlp__decompressor.html +0 -106
  228. data/ext/libmspack/doc/html/structmskwaj__compressor.html +0 -243
  229. data/ext/libmspack/doc/html/structmskwaj__decompressor.html +0 -245
  230. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.map +0 -3
  231. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.md5 +0 -1
  232. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.png +0 -0
  233. data/ext/libmspack/doc/html/structmskwajd__header.html +0 -225
  234. data/ext/libmspack/doc/html/structmslit__compressor.html +0 -106
  235. data/ext/libmspack/doc/html/structmslit__decompressor.html +0 -106
  236. data/ext/libmspack/doc/html/structmsoab__compressor.html +0 -151
  237. data/ext/libmspack/doc/html/structmsoab__decompressor.html +0 -184
  238. data/ext/libmspack/doc/html/structmspack__file.html +0 -107
  239. data/ext/libmspack/doc/html/structmspack__system.html +0 -404
  240. data/ext/libmspack/doc/html/structmspack__system__coll__graph.map +0 -3
  241. data/ext/libmspack/doc/html/structmspack__system__coll__graph.md5 +0 -1
  242. data/ext/libmspack/doc/html/structmspack__system__coll__graph.png +0 -0
  243. data/ext/libmspack/doc/html/structmsszdd__compressor.html +0 -186
  244. data/ext/libmspack/doc/html/structmsszdd__decompressor.html +0 -246
  245. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.map +0 -3
  246. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.md5 +0 -1
  247. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.png +0 -0
  248. data/ext/libmspack/doc/html/structmsszddd__header.html +0 -149
  249. data/ext/libmspack/doc/html/sync_off.png +0 -0
  250. data/ext/libmspack/doc/html/sync_on.png +0 -0
  251. data/ext/libmspack/doc/html/szdd_kwaj_format.html +0 -331
  252. data/ext/libmspack/doc/html/tab_a.png +0 -0
  253. data/ext/libmspack/doc/html/tab_b.png +0 -0
  254. data/ext/libmspack/doc/html/tab_h.png +0 -0
  255. data/ext/libmspack/doc/html/tab_s.png +0 -0
  256. data/ext/libmspack/doc/html/tabs.css +0 -1
  257. data/ext/libmspack/doc/szdd_kwaj_format.html +0 -331
  258. data/ext/libmspack/examples/cabd_memory.c +0 -179
  259. data/ext/libmspack/examples/cabrip.c +0 -85
  260. data/ext/libmspack/examples/chmextract.c +0 -121
  261. data/ext/libmspack/examples/msexpand.c +0 -48
  262. data/ext/libmspack/examples/multifh.c +0 -435
  263. data/ext/libmspack/examples/oabextract.c +0 -41
  264. data/ext/libmspack/test/cabd_md5.c +0 -161
  265. data/ext/libmspack/test/cabd_test.c +0 -468
  266. data/ext/libmspack/test/chmd_find.c +0 -95
  267. data/ext/libmspack/test/chmd_md5.c +0 -67
  268. data/ext/libmspack/test/chmd_order.c +0 -144
  269. data/ext/libmspack/test/chmd_test.c +0 -134
  270. data/ext/libmspack/test/chminfo.c +0 -285
  271. data/ext/libmspack/test/error.h +0 -22
  272. data/ext/libmspack/test/kwajd_test.c +0 -119
  273. data/ext/libmspack/test/md5.c +0 -450
  274. data/ext/libmspack/test/md5.h +0 -166
  275. data/ext/libmspack/test/md5_fh.h +0 -123
  276. data/ext/libmspack/test/test_files/cabd/1.pl +0 -84
  277. data/ext/libmspack/test/test_files/cabd/2.pl +0 -75
  278. data/ext/libmspack/test/test_files/cabd/bad_folderindex.cab +0 -0
  279. data/ext/libmspack/test/test_files/cabd/bad_nofiles.cab +0 -0
  280. data/ext/libmspack/test/test_files/cabd/bad_nofolders.cab +0 -0
  281. data/ext/libmspack/test/test_files/cabd/bad_signature.cab +0 -0
  282. data/ext/libmspack/test/test_files/cabd/cve-2010-2800-mszip-infinite-loop.cab +0 -0
  283. data/ext/libmspack/test/test_files/cabd/cve-2014-9556-qtm-infinite-loop.cab +0 -0
  284. data/ext/libmspack/test/test_files/cabd/cve-2014-9732-folders-segfault.cab +0 -0
  285. data/ext/libmspack/test/test_files/cabd/cve-2015-4470-mszip-over-read.cab +0 -0
  286. data/ext/libmspack/test/test_files/cabd/cve-2015-4471-lzx-under-read.cab +0 -0
  287. data/ext/libmspack/test/test_files/cabd/filename-read-violation-1.cab +0 -0
  288. data/ext/libmspack/test/test_files/cabd/filename-read-violation-2.cab +0 -0
  289. data/ext/libmspack/test/test_files/cabd/filename-read-violation-3.cab +0 -0
  290. data/ext/libmspack/test/test_files/cabd/filename-read-violation-4.cab +0 -0
  291. data/ext/libmspack/test/test_files/cabd/lzx-main-tree-no-lengths.cab +0 -0
  292. data/ext/libmspack/test/test_files/cabd/lzx-premature-matches.cab +0 -0
  293. data/ext/libmspack/test/test_files/cabd/mszip_lzx_qtm.cab +0 -0
  294. data/ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab +0 -0
  295. data/ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab +0 -0
  296. data/ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab +0 -0
  297. data/ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab +0 -0
  298. data/ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab +0 -0
  299. data/ext/libmspack/test/test_files/cabd/normal_255c_filename.cab +0 -0
  300. data/ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab +0 -0
  301. data/ext/libmspack/test/test_files/cabd/normal_2files_2folders.cab +0 -0
  302. data/ext/libmspack/test/test_files/cabd/partial_nodata.cab +0 -0
  303. data/ext/libmspack/test/test_files/cabd/partial_nofiles.cab +0 -0
  304. data/ext/libmspack/test/test_files/cabd/partial_nofolder.cab +0 -0
  305. data/ext/libmspack/test/test_files/cabd/partial_shortextheader.cab +0 -0
  306. data/ext/libmspack/test/test_files/cabd/partial_shortfile1.cab +0 -0
  307. data/ext/libmspack/test/test_files/cabd/partial_shortfile2.cab +0 -0
  308. data/ext/libmspack/test/test_files/cabd/partial_shortfolder.cab +0 -0
  309. data/ext/libmspack/test/test_files/cabd/partial_shortheader.cab +0 -0
  310. data/ext/libmspack/test/test_files/cabd/partial_str_nofname.cab +0 -0
  311. data/ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab +0 -0
  312. data/ext/libmspack/test/test_files/cabd/partial_str_nonname.cab +0 -0
  313. data/ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab +0 -0
  314. data/ext/libmspack/test/test_files/cabd/partial_str_nopname.cab +0 -0
  315. data/ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab +0 -0
  316. data/ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab +0 -0
  317. data/ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab +0 -0
  318. data/ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab +0 -0
  319. data/ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab +0 -0
  320. data/ext/libmspack/test/test_files/cabd/qtm-max-size-block.cab +0 -0
  321. data/ext/libmspack/test/test_files/cabd/reserve_---.cab +0 -0
  322. data/ext/libmspack/test/test_files/cabd/reserve_--D.cab +0 -0
  323. data/ext/libmspack/test/test_files/cabd/reserve_-F-.cab +0 -0
  324. data/ext/libmspack/test/test_files/cabd/reserve_-FD.cab +0 -0
  325. data/ext/libmspack/test/test_files/cabd/reserve_H--.cab +0 -0
  326. data/ext/libmspack/test/test_files/cabd/reserve_H-D.cab +0 -0
  327. data/ext/libmspack/test/test_files/cabd/reserve_HF-.cab +0 -0
  328. data/ext/libmspack/test/test_files/cabd/reserve_HFD.cab +0 -0
  329. data/ext/libmspack/test/test_files/cabd/search_basic.cab +0 -0
  330. data/ext/libmspack/test/test_files/cabd/search_tricky1.cab +0 -0
  331. data/ext/libmspack/test/test_files/chmd/blank-filenames.chm +0 -0
  332. data/ext/libmspack/test/test_files/chmd/cve-2015-4467-reset-interval-zero.chm.xor +0 -0
  333. data/ext/libmspack/test/test_files/chmd/cve-2015-4468-namelen-bounds.chm +0 -0
  334. data/ext/libmspack/test/test_files/chmd/cve-2015-4469-namelen-bounds.chm +0 -0
  335. data/ext/libmspack/test/test_files/chmd/cve-2015-4472-namelen-bounds.chm +0 -0
  336. data/ext/libmspack/test/test_files/chmd/cve-2017-6419-lzx-negative-spaninfo.chm +0 -0
  337. data/ext/libmspack/test/test_files/chmd/short-system-filenames.chm +0 -0
  338. data/ext/libmspack/test/test_files/kwajd/f00.kwj +0 -0
  339. data/ext/libmspack/test/test_files/kwajd/f01.kwj +0 -0
  340. data/ext/libmspack/test/test_files/kwajd/f02.kwj +0 -0
  341. data/ext/libmspack/test/test_files/kwajd/f03.kwj +0 -0
  342. data/ext/libmspack/test/test_files/kwajd/f04.kwj +0 -0
  343. data/ext/libmspack/test/test_files/kwajd/f10.kwj +0 -0
  344. data/ext/libmspack/test/test_files/kwajd/f11.kwj +0 -0
  345. data/ext/libmspack/test/test_files/kwajd/f12.kwj +0 -0
  346. data/ext/libmspack/test/test_files/kwajd/f13.kwj +0 -0
  347. data/ext/libmspack/test/test_files/kwajd/f14.kwj +0 -0
  348. data/ext/libmspack/test/test_files/kwajd/f20.kwj +0 -0
  349. data/ext/libmspack/test/test_files/kwajd/f21.kwj +0 -0
  350. data/ext/libmspack/test/test_files/kwajd/f22.kwj +0 -0
  351. data/ext/libmspack/test/test_files/kwajd/f23.kwj +0 -0
  352. data/ext/libmspack/test/test_files/kwajd/f24.kwj +0 -0
  353. data/ext/libmspack/test/test_files/kwajd/f30.kwj +0 -0
  354. data/ext/libmspack/test/test_files/kwajd/f31.kwj +0 -0
  355. data/ext/libmspack/test/test_files/kwajd/f32.kwj +0 -0
  356. data/ext/libmspack/test/test_files/kwajd/f33.kwj +0 -0
  357. data/ext/libmspack/test/test_files/kwajd/f34.kwj +0 -0
  358. data/ext/libmspack/test/test_files/kwajd/f40.kwj +0 -0
  359. data/ext/libmspack/test/test_files/kwajd/f41.kwj +0 -0
  360. data/ext/libmspack/test/test_files/kwajd/f42.kwj +0 -0
  361. data/ext/libmspack/test/test_files/kwajd/f43.kwj +0 -0
  362. data/ext/libmspack/test/test_files/kwajd/f44.kwj +0 -0
  363. data/ext/libmspack/test/test_files/kwajd/f50.kwj +0 -0
  364. data/ext/libmspack/test/test_files/kwajd/f51.kwj +0 -0
  365. data/ext/libmspack/test/test_files/kwajd/f52.kwj +0 -0
  366. data/ext/libmspack/test/test_files/kwajd/f53.kwj +0 -0
  367. data/ext/libmspack/test/test_files/kwajd/f54.kwj +0 -0
  368. data/ext/libmspack/test/test_files/kwajd/f60.kwj +0 -0
  369. data/ext/libmspack/test/test_files/kwajd/f61.kwj +0 -0
  370. data/ext/libmspack/test/test_files/kwajd/f62.kwj +0 -0
  371. data/ext/libmspack/test/test_files/kwajd/f63.kwj +0 -0
  372. data/ext/libmspack/test/test_files/kwajd/f64.kwj +0 -0
  373. data/ext/libmspack/test/test_files/kwajd/f70.kwj +0 -0
  374. data/ext/libmspack/test/test_files/kwajd/f71.kwj +0 -0
  375. data/ext/libmspack/test/test_files/kwajd/f72.kwj +0 -0
  376. data/ext/libmspack/test/test_files/kwajd/f73.kwj +0 -0
  377. data/ext/libmspack/test/test_files/kwajd/f74.kwj +0 -0
  378. data/ext/libmspack/test/test_files/kwajd/f80.kwj +0 -0
  379. data/ext/libmspack/test/test_files/kwajd/f81.kwj +0 -0
  380. data/ext/libmspack/test/test_files/kwajd/f82.kwj +0 -0
  381. data/ext/libmspack/test/test_files/kwajd/f83.kwj +0 -0
  382. data/ext/libmspack/test/test_files/kwajd/f84.kwj +0 -0
  383. data/ext/libmspack/test/test_files/kwajd/f90.kwj +0 -0
  384. data/ext/libmspack/test/test_files/kwajd/f91.kwj +0 -0
  385. data/ext/libmspack/test/test_files/kwajd/f92.kwj +0 -0
  386. data/ext/libmspack/test/test_files/kwajd/f93.kwj +0 -0
  387. data/ext/libmspack/test/test_files/kwajd/f94.kwj +0 -0
  388. data/ext/libmspack/test/test_files/kwajd/make.pl +0 -17
  389. data/ext/x86_64-linux/liblibmspack.so +0 -0
  390. data/ext/x86_64-windows/libmspack.dll +0 -0
  391. data/ext/x86_64-windows-msys/libmspack.dll +0 -0
@@ -1,791 +0,0 @@
1
- function convertToId(search)
2
- {
3
- var result = '';
4
- for (i=0;i<search.length;i++)
5
- {
6
- var c = search.charAt(i);
7
- var cn = c.charCodeAt(0);
8
- if (c.match(/[a-z0-9\u0080-\uFFFF]/))
9
- {
10
- result+=c;
11
- }
12
- else if (cn<16)
13
- {
14
- result+="_0"+cn.toString(16);
15
- }
16
- else
17
- {
18
- result+="_"+cn.toString(16);
19
- }
20
- }
21
- return result;
22
- }
23
-
24
- function getXPos(item)
25
- {
26
- var x = 0;
27
- if (item.offsetWidth)
28
- {
29
- while (item && item!=document.body)
30
- {
31
- x += item.offsetLeft;
32
- item = item.offsetParent;
33
- }
34
- }
35
- return x;
36
- }
37
-
38
- function getYPos(item)
39
- {
40
- var y = 0;
41
- if (item.offsetWidth)
42
- {
43
- while (item && item!=document.body)
44
- {
45
- y += item.offsetTop;
46
- item = item.offsetParent;
47
- }
48
- }
49
- return y;
50
- }
51
-
52
- /* A class handling everything associated with the search panel.
53
-
54
- Parameters:
55
- name - The name of the global variable that will be
56
- storing this instance. Is needed to be able to set timeouts.
57
- resultPath - path to use for external files
58
- */
59
- function SearchBox(name, resultsPath, inFrame, label)
60
- {
61
- if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
62
-
63
- // ---------- Instance variables
64
- this.name = name;
65
- this.resultsPath = resultsPath;
66
- this.keyTimeout = 0;
67
- this.keyTimeoutLength = 500;
68
- this.closeSelectionTimeout = 300;
69
- this.lastSearchValue = "";
70
- this.lastResultsPage = "";
71
- this.hideTimeout = 0;
72
- this.searchIndex = 0;
73
- this.searchActive = false;
74
- this.insideFrame = inFrame;
75
- this.searchLabel = label;
76
-
77
- // ----------- DOM Elements
78
-
79
- this.DOMSearchField = function()
80
- { return document.getElementById("MSearchField"); }
81
-
82
- this.DOMSearchSelect = function()
83
- { return document.getElementById("MSearchSelect"); }
84
-
85
- this.DOMSearchSelectWindow = function()
86
- { return document.getElementById("MSearchSelectWindow"); }
87
-
88
- this.DOMPopupSearchResults = function()
89
- { return document.getElementById("MSearchResults"); }
90
-
91
- this.DOMPopupSearchResultsWindow = function()
92
- { return document.getElementById("MSearchResultsWindow"); }
93
-
94
- this.DOMSearchClose = function()
95
- { return document.getElementById("MSearchClose"); }
96
-
97
- this.DOMSearchBox = function()
98
- { return document.getElementById("MSearchBox"); }
99
-
100
- // ------------ Event Handlers
101
-
102
- // Called when focus is added or removed from the search field.
103
- this.OnSearchFieldFocus = function(isActive)
104
- {
105
- this.Activate(isActive);
106
- }
107
-
108
- this.OnSearchSelectShow = function()
109
- {
110
- var searchSelectWindow = this.DOMSearchSelectWindow();
111
- var searchField = this.DOMSearchSelect();
112
-
113
- if (this.insideFrame)
114
- {
115
- var left = getXPos(searchField);
116
- var top = getYPos(searchField);
117
- left += searchField.offsetWidth + 6;
118
- top += searchField.offsetHeight;
119
-
120
- // show search selection popup
121
- searchSelectWindow.style.display='block';
122
- left -= searchSelectWindow.offsetWidth;
123
- searchSelectWindow.style.left = left + 'px';
124
- searchSelectWindow.style.top = top + 'px';
125
- }
126
- else
127
- {
128
- var left = getXPos(searchField);
129
- var top = getYPos(searchField);
130
- top += searchField.offsetHeight;
131
-
132
- // show search selection popup
133
- searchSelectWindow.style.display='block';
134
- searchSelectWindow.style.left = left + 'px';
135
- searchSelectWindow.style.top = top + 'px';
136
- }
137
-
138
- // stop selection hide timer
139
- if (this.hideTimeout)
140
- {
141
- clearTimeout(this.hideTimeout);
142
- this.hideTimeout=0;
143
- }
144
- return false; // to avoid "image drag" default event
145
- }
146
-
147
- this.OnSearchSelectHide = function()
148
- {
149
- this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
150
- this.closeSelectionTimeout);
151
- }
152
-
153
- // Called when the content of the search field is changed.
154
- this.OnSearchFieldChange = function(evt)
155
- {
156
- if (this.keyTimeout) // kill running timer
157
- {
158
- clearTimeout(this.keyTimeout);
159
- this.keyTimeout = 0;
160
- }
161
-
162
- var e = (evt) ? evt : window.event; // for IE
163
- if (e.keyCode==40 || e.keyCode==13)
164
- {
165
- if (e.shiftKey==1)
166
- {
167
- this.OnSearchSelectShow();
168
- var win=this.DOMSearchSelectWindow();
169
- for (i=0;i<win.childNodes.length;i++)
170
- {
171
- var child = win.childNodes[i]; // get span within a
172
- if (child.className=='SelectItem')
173
- {
174
- child.focus();
175
- return;
176
- }
177
- }
178
- return;
179
- }
180
- else if (window.frames.MSearchResults.searchResults)
181
- {
182
- var elem = window.frames.MSearchResults.searchResults.NavNext(0);
183
- if (elem) elem.focus();
184
- }
185
- }
186
- else if (e.keyCode==27) // Escape out of the search field
187
- {
188
- this.DOMSearchField().blur();
189
- this.DOMPopupSearchResultsWindow().style.display = 'none';
190
- this.DOMSearchClose().style.display = 'none';
191
- this.lastSearchValue = '';
192
- this.Activate(false);
193
- return;
194
- }
195
-
196
- // strip whitespaces
197
- var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
198
-
199
- if (searchValue != this.lastSearchValue) // search value has changed
200
- {
201
- if (searchValue != "") // non-empty search
202
- {
203
- // set timer for search update
204
- this.keyTimeout = setTimeout(this.name + '.Search()',
205
- this.keyTimeoutLength);
206
- }
207
- else // empty search field
208
- {
209
- this.DOMPopupSearchResultsWindow().style.display = 'none';
210
- this.DOMSearchClose().style.display = 'none';
211
- this.lastSearchValue = '';
212
- }
213
- }
214
- }
215
-
216
- this.SelectItemCount = function(id)
217
- {
218
- var count=0;
219
- var win=this.DOMSearchSelectWindow();
220
- for (i=0;i<win.childNodes.length;i++)
221
- {
222
- var child = win.childNodes[i]; // get span within a
223
- if (child.className=='SelectItem')
224
- {
225
- count++;
226
- }
227
- }
228
- return count;
229
- }
230
-
231
- this.SelectItemSet = function(id)
232
- {
233
- var i,j=0;
234
- var win=this.DOMSearchSelectWindow();
235
- for (i=0;i<win.childNodes.length;i++)
236
- {
237
- var child = win.childNodes[i]; // get span within a
238
- if (child.className=='SelectItem')
239
- {
240
- var node = child.firstChild;
241
- if (j==id)
242
- {
243
- node.innerHTML='&#8226;';
244
- }
245
- else
246
- {
247
- node.innerHTML='&#160;';
248
- }
249
- j++;
250
- }
251
- }
252
- }
253
-
254
- // Called when an search filter selection is made.
255
- // set item with index id as the active item
256
- this.OnSelectItem = function(id)
257
- {
258
- this.searchIndex = id;
259
- this.SelectItemSet(id);
260
- var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
261
- if (searchValue!="" && this.searchActive) // something was found -> do a search
262
- {
263
- this.Search();
264
- }
265
- }
266
-
267
- this.OnSearchSelectKey = function(evt)
268
- {
269
- var e = (evt) ? evt : window.event; // for IE
270
- if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
271
- {
272
- this.searchIndex++;
273
- this.OnSelectItem(this.searchIndex);
274
- }
275
- else if (e.keyCode==38 && this.searchIndex>0) // Up
276
- {
277
- this.searchIndex--;
278
- this.OnSelectItem(this.searchIndex);
279
- }
280
- else if (e.keyCode==13 || e.keyCode==27)
281
- {
282
- this.OnSelectItem(this.searchIndex);
283
- this.CloseSelectionWindow();
284
- this.DOMSearchField().focus();
285
- }
286
- return false;
287
- }
288
-
289
- // --------- Actions
290
-
291
- // Closes the results window.
292
- this.CloseResultsWindow = function()
293
- {
294
- this.DOMPopupSearchResultsWindow().style.display = 'none';
295
- this.DOMSearchClose().style.display = 'none';
296
- this.Activate(false);
297
- }
298
-
299
- this.CloseSelectionWindow = function()
300
- {
301
- this.DOMSearchSelectWindow().style.display = 'none';
302
- }
303
-
304
- // Performs a search.
305
- this.Search = function()
306
- {
307
- this.keyTimeout = 0;
308
-
309
- // strip leading whitespace
310
- var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
311
-
312
- var code = searchValue.toLowerCase().charCodeAt(0);
313
- var idxChar = searchValue.substr(0, 1).toLowerCase();
314
- if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
315
- {
316
- idxChar = searchValue.substr(0, 2);
317
- }
318
-
319
- var resultsPage;
320
- var resultsPageWithSearch;
321
- var hasResultsPage;
322
-
323
- var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
324
- if (idx!=-1)
325
- {
326
- var hexCode=idx.toString(16);
327
- resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
328
- resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
329
- hasResultsPage = true;
330
- }
331
- else // nothing available for this search term
332
- {
333
- resultsPage = this.resultsPath + '/nomatches.html';
334
- resultsPageWithSearch = resultsPage;
335
- hasResultsPage = false;
336
- }
337
-
338
- window.frames.MSearchResults.location = resultsPageWithSearch;
339
- var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
340
-
341
- if (domPopupSearchResultsWindow.style.display!='block')
342
- {
343
- var domSearchBox = this.DOMSearchBox();
344
- this.DOMSearchClose().style.display = 'inline';
345
- if (this.insideFrame)
346
- {
347
- var domPopupSearchResults = this.DOMPopupSearchResults();
348
- domPopupSearchResultsWindow.style.position = 'relative';
349
- domPopupSearchResultsWindow.style.display = 'block';
350
- var width = document.body.clientWidth - 8; // the -8 is for IE :-(
351
- domPopupSearchResultsWindow.style.width = width + 'px';
352
- domPopupSearchResults.style.width = width + 'px';
353
- }
354
- else
355
- {
356
- var domPopupSearchResults = this.DOMPopupSearchResults();
357
- var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
358
- var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
359
- domPopupSearchResultsWindow.style.display = 'block';
360
- left -= domPopupSearchResults.offsetWidth;
361
- domPopupSearchResultsWindow.style.top = top + 'px';
362
- domPopupSearchResultsWindow.style.left = left + 'px';
363
- }
364
- }
365
-
366
- this.lastSearchValue = searchValue;
367
- this.lastResultsPage = resultsPage;
368
- }
369
-
370
- // -------- Activation Functions
371
-
372
- // Activates or deactivates the search panel, resetting things to
373
- // their default values if necessary.
374
- this.Activate = function(isActive)
375
- {
376
- if (isActive || // open it
377
- this.DOMPopupSearchResultsWindow().style.display == 'block'
378
- )
379
- {
380
- this.DOMSearchBox().className = 'MSearchBoxActive';
381
-
382
- var searchField = this.DOMSearchField();
383
-
384
- if (searchField.value == this.searchLabel) // clear "Search" term upon entry
385
- {
386
- searchField.value = '';
387
- this.searchActive = true;
388
- }
389
- }
390
- else if (!isActive) // directly remove the panel
391
- {
392
- this.DOMSearchBox().className = 'MSearchBoxInactive';
393
- this.DOMSearchField().value = this.searchLabel;
394
- this.searchActive = false;
395
- this.lastSearchValue = ''
396
- this.lastResultsPage = '';
397
- }
398
- }
399
- }
400
-
401
- // -----------------------------------------------------------------------
402
-
403
- // The class that handles everything on the search results page.
404
- function SearchResults(name)
405
- {
406
- // The number of matches from the last run of <Search()>.
407
- this.lastMatchCount = 0;
408
- this.lastKey = 0;
409
- this.repeatOn = false;
410
-
411
- // Toggles the visibility of the passed element ID.
412
- this.FindChildElement = function(id)
413
- {
414
- var parentElement = document.getElementById(id);
415
- var element = parentElement.firstChild;
416
-
417
- while (element && element!=parentElement)
418
- {
419
- if (element.nodeName == 'DIV' && element.className == 'SRChildren')
420
- {
421
- return element;
422
- }
423
-
424
- if (element.nodeName == 'DIV' && element.hasChildNodes())
425
- {
426
- element = element.firstChild;
427
- }
428
- else if (element.nextSibling)
429
- {
430
- element = element.nextSibling;
431
- }
432
- else
433
- {
434
- do
435
- {
436
- element = element.parentNode;
437
- }
438
- while (element && element!=parentElement && !element.nextSibling);
439
-
440
- if (element && element!=parentElement)
441
- {
442
- element = element.nextSibling;
443
- }
444
- }
445
- }
446
- }
447
-
448
- this.Toggle = function(id)
449
- {
450
- var element = this.FindChildElement(id);
451
- if (element)
452
- {
453
- if (element.style.display == 'block')
454
- {
455
- element.style.display = 'none';
456
- }
457
- else
458
- {
459
- element.style.display = 'block';
460
- }
461
- }
462
- }
463
-
464
- // Searches for the passed string. If there is no parameter,
465
- // it takes it from the URL query.
466
- //
467
- // Always returns true, since other documents may try to call it
468
- // and that may or may not be possible.
469
- this.Search = function(search)
470
- {
471
- if (!search) // get search word from URL
472
- {
473
- search = window.location.search;
474
- search = search.substring(1); // Remove the leading '?'
475
- search = unescape(search);
476
- }
477
-
478
- search = search.replace(/^ +/, ""); // strip leading spaces
479
- search = search.replace(/ +$/, ""); // strip trailing spaces
480
- search = search.toLowerCase();
481
- search = convertToId(search);
482
-
483
- var resultRows = document.getElementsByTagName("div");
484
- var matches = 0;
485
-
486
- var i = 0;
487
- while (i < resultRows.length)
488
- {
489
- var row = resultRows.item(i);
490
- if (row.className == "SRResult")
491
- {
492
- var rowMatchName = row.id.toLowerCase();
493
- rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
494
-
495
- if (search.length<=rowMatchName.length &&
496
- rowMatchName.substr(0, search.length)==search)
497
- {
498
- row.style.display = 'block';
499
- matches++;
500
- }
501
- else
502
- {
503
- row.style.display = 'none';
504
- }
505
- }
506
- i++;
507
- }
508
- document.getElementById("Searching").style.display='none';
509
- if (matches == 0) // no results
510
- {
511
- document.getElementById("NoMatches").style.display='block';
512
- }
513
- else // at least one result
514
- {
515
- document.getElementById("NoMatches").style.display='none';
516
- }
517
- this.lastMatchCount = matches;
518
- return true;
519
- }
520
-
521
- // return the first item with index index or higher that is visible
522
- this.NavNext = function(index)
523
- {
524
- var focusItem;
525
- while (1)
526
- {
527
- var focusName = 'Item'+index;
528
- focusItem = document.getElementById(focusName);
529
- if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
530
- {
531
- break;
532
- }
533
- else if (!focusItem) // last element
534
- {
535
- break;
536
- }
537
- focusItem=null;
538
- index++;
539
- }
540
- return focusItem;
541
- }
542
-
543
- this.NavPrev = function(index)
544
- {
545
- var focusItem;
546
- while (1)
547
- {
548
- var focusName = 'Item'+index;
549
- focusItem = document.getElementById(focusName);
550
- if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
551
- {
552
- break;
553
- }
554
- else if (!focusItem) // last element
555
- {
556
- break;
557
- }
558
- focusItem=null;
559
- index--;
560
- }
561
- return focusItem;
562
- }
563
-
564
- this.ProcessKeys = function(e)
565
- {
566
- if (e.type == "keydown")
567
- {
568
- this.repeatOn = false;
569
- this.lastKey = e.keyCode;
570
- }
571
- else if (e.type == "keypress")
572
- {
573
- if (!this.repeatOn)
574
- {
575
- if (this.lastKey) this.repeatOn = true;
576
- return false; // ignore first keypress after keydown
577
- }
578
- }
579
- else if (e.type == "keyup")
580
- {
581
- this.lastKey = 0;
582
- this.repeatOn = false;
583
- }
584
- return this.lastKey!=0;
585
- }
586
-
587
- this.Nav = function(evt,itemIndex)
588
- {
589
- var e = (evt) ? evt : window.event; // for IE
590
- if (e.keyCode==13) return true;
591
- if (!this.ProcessKeys(e)) return false;
592
-
593
- if (this.lastKey==38) // Up
594
- {
595
- var newIndex = itemIndex-1;
596
- var focusItem = this.NavPrev(newIndex);
597
- if (focusItem)
598
- {
599
- var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
600
- if (child && child.style.display == 'block') // children visible
601
- {
602
- var n=0;
603
- var tmpElem;
604
- while (1) // search for last child
605
- {
606
- tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
607
- if (tmpElem)
608
- {
609
- focusItem = tmpElem;
610
- }
611
- else // found it!
612
- {
613
- break;
614
- }
615
- n++;
616
- }
617
- }
618
- }
619
- if (focusItem)
620
- {
621
- focusItem.focus();
622
- }
623
- else // return focus to search field
624
- {
625
- parent.document.getElementById("MSearchField").focus();
626
- }
627
- }
628
- else if (this.lastKey==40) // Down
629
- {
630
- var newIndex = itemIndex+1;
631
- var focusItem;
632
- var item = document.getElementById('Item'+itemIndex);
633
- var elem = this.FindChildElement(item.parentNode.parentNode.id);
634
- if (elem && elem.style.display == 'block') // children visible
635
- {
636
- focusItem = document.getElementById('Item'+itemIndex+'_c0');
637
- }
638
- if (!focusItem) focusItem = this.NavNext(newIndex);
639
- if (focusItem) focusItem.focus();
640
- }
641
- else if (this.lastKey==39) // Right
642
- {
643
- var item = document.getElementById('Item'+itemIndex);
644
- var elem = this.FindChildElement(item.parentNode.parentNode.id);
645
- if (elem) elem.style.display = 'block';
646
- }
647
- else if (this.lastKey==37) // Left
648
- {
649
- var item = document.getElementById('Item'+itemIndex);
650
- var elem = this.FindChildElement(item.parentNode.parentNode.id);
651
- if (elem) elem.style.display = 'none';
652
- }
653
- else if (this.lastKey==27) // Escape
654
- {
655
- parent.searchBox.CloseResultsWindow();
656
- parent.document.getElementById("MSearchField").focus();
657
- }
658
- else if (this.lastKey==13) // Enter
659
- {
660
- return true;
661
- }
662
- return false;
663
- }
664
-
665
- this.NavChild = function(evt,itemIndex,childIndex)
666
- {
667
- var e = (evt) ? evt : window.event; // for IE
668
- if (e.keyCode==13) return true;
669
- if (!this.ProcessKeys(e)) return false;
670
-
671
- if (this.lastKey==38) // Up
672
- {
673
- if (childIndex>0)
674
- {
675
- var newIndex = childIndex-1;
676
- document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
677
- }
678
- else // already at first child, jump to parent
679
- {
680
- document.getElementById('Item'+itemIndex).focus();
681
- }
682
- }
683
- else if (this.lastKey==40) // Down
684
- {
685
- var newIndex = childIndex+1;
686
- var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
687
- if (!elem) // last child, jump to parent next parent
688
- {
689
- elem = this.NavNext(itemIndex+1);
690
- }
691
- if (elem)
692
- {
693
- elem.focus();
694
- }
695
- }
696
- else if (this.lastKey==27) // Escape
697
- {
698
- parent.searchBox.CloseResultsWindow();
699
- parent.document.getElementById("MSearchField").focus();
700
- }
701
- else if (this.lastKey==13) // Enter
702
- {
703
- return true;
704
- }
705
- return false;
706
- }
707
- }
708
-
709
- function setKeyActions(elem,action)
710
- {
711
- elem.setAttribute('onkeydown',action);
712
- elem.setAttribute('onkeypress',action);
713
- elem.setAttribute('onkeyup',action);
714
- }
715
-
716
- function setClassAttr(elem,attr)
717
- {
718
- elem.setAttribute('class',attr);
719
- elem.setAttribute('className',attr);
720
- }
721
-
722
- function createResults()
723
- {
724
- var results = document.getElementById("SRResults");
725
- for (var e=0; e<searchData.length; e++)
726
- {
727
- var id = searchData[e][0];
728
- var srResult = document.createElement('div');
729
- srResult.setAttribute('id','SR_'+id);
730
- setClassAttr(srResult,'SRResult');
731
- var srEntry = document.createElement('div');
732
- setClassAttr(srEntry,'SREntry');
733
- var srLink = document.createElement('a');
734
- srLink.setAttribute('id','Item'+e);
735
- setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
736
- setClassAttr(srLink,'SRSymbol');
737
- srLink.innerHTML = searchData[e][1][0];
738
- srEntry.appendChild(srLink);
739
- if (searchData[e][1].length==2) // single result
740
- {
741
- srLink.setAttribute('href',searchData[e][1][1][0]);
742
- if (searchData[e][1][1][1])
743
- {
744
- srLink.setAttribute('target','_parent');
745
- }
746
- var srScope = document.createElement('span');
747
- setClassAttr(srScope,'SRScope');
748
- srScope.innerHTML = searchData[e][1][1][2];
749
- srEntry.appendChild(srScope);
750
- }
751
- else // multiple results
752
- {
753
- srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
754
- var srChildren = document.createElement('div');
755
- setClassAttr(srChildren,'SRChildren');
756
- for (var c=0; c<searchData[e][1].length-1; c++)
757
- {
758
- var srChild = document.createElement('a');
759
- srChild.setAttribute('id','Item'+e+'_c'+c);
760
- setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
761
- setClassAttr(srChild,'SRScope');
762
- srChild.setAttribute('href',searchData[e][1][c+1][0]);
763
- if (searchData[e][1][c+1][1])
764
- {
765
- srChild.setAttribute('target','_parent');
766
- }
767
- srChild.innerHTML = searchData[e][1][c+1][2];
768
- srChildren.appendChild(srChild);
769
- }
770
- srEntry.appendChild(srChildren);
771
- }
772
- srResult.appendChild(srEntry);
773
- results.appendChild(srResult);
774
- }
775
- }
776
-
777
- function init_search()
778
- {
779
- var results = document.getElementById("MSearchSelectWindow");
780
- for (var key in indexSectionLabels)
781
- {
782
- var link = document.createElement('a');
783
- link.setAttribute('class','SelectItem');
784
- link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
785
- link.href='javascript:void(0)';
786
- link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
787
- results.appendChild(link);
788
- }
789
- searchBox.OnSelectItem(0);
790
- }
791
-