libmspack 0.10.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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
-