libmspack 0.0.5 → 0.10.1.2

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 (141) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/rake.yml +37 -0
  3. data/.gitignore +2 -0
  4. data/.yardopts +1 -1
  5. data/README.md +1 -1
  6. data/Rakefile +11 -5
  7. data/ext/Rakefile +1 -1
  8. data/ext/libmspack/AUTHORS +1 -0
  9. data/ext/libmspack/ChangeLog +321 -4
  10. data/ext/libmspack/INSTALL +368 -0
  11. data/ext/libmspack/Makefile.am +86 -95
  12. data/ext/libmspack/Makefile.in +1729 -0
  13. data/ext/libmspack/README +30 -30
  14. data/ext/libmspack/acinclude.m4 +99 -0
  15. data/ext/libmspack/aclocal.m4 +1218 -0
  16. data/ext/libmspack/ar-lib +270 -0
  17. data/ext/libmspack/compile +347 -0
  18. data/ext/libmspack/config.guess +1480 -0
  19. data/ext/libmspack/config.h.in +129 -0
  20. data/ext/libmspack/config.sub +1801 -0
  21. data/ext/libmspack/configure +15487 -0
  22. data/ext/libmspack/configure.ac +11 -13
  23. data/ext/libmspack/depcomp +791 -0
  24. data/ext/libmspack/install-sh +508 -0
  25. data/ext/libmspack/libmscabd.la +41 -0
  26. data/ext/libmspack/libmschmd.la +41 -0
  27. data/ext/libmspack/libmspack.la +41 -0
  28. data/ext/libmspack/ltmain.sh +11156 -0
  29. data/ext/libmspack/m4/libtool.m4 +8387 -0
  30. data/ext/libmspack/m4/ltoptions.m4 +437 -0
  31. data/ext/libmspack/m4/ltsugar.m4 +124 -0
  32. data/ext/libmspack/m4/ltversion.m4 +23 -0
  33. data/ext/libmspack/m4/lt~obsolete.m4 +99 -0
  34. data/ext/libmspack/missing +215 -0
  35. data/ext/libmspack/mspack/cab.h +20 -7
  36. data/ext/libmspack/mspack/cabd.c +301 -236
  37. data/ext/libmspack/mspack/chmd.c +304 -319
  38. data/ext/libmspack/mspack/crc32.c +52 -52
  39. data/ext/libmspack/mspack/crc32.h +1 -1
  40. data/ext/libmspack/mspack/kwajd.c +178 -172
  41. data/ext/libmspack/mspack/lzss.h +4 -4
  42. data/ext/libmspack/mspack/lzssd.c +42 -42
  43. data/ext/libmspack/mspack/lzx.h +11 -11
  44. data/ext/libmspack/mspack/lzxd.c +370 -361
  45. data/ext/libmspack/mspack/mspack.h +109 -77
  46. data/ext/libmspack/mspack/mszip.h +6 -6
  47. data/ext/libmspack/mspack/mszipd.c +140 -139
  48. data/ext/libmspack/mspack/oab.h +1 -0
  49. data/ext/libmspack/mspack/oabd.c +71 -73
  50. data/ext/libmspack/mspack/qtm.h +4 -4
  51. data/ext/libmspack/mspack/qtmd.c +118 -117
  52. data/ext/libmspack/mspack/readbits.h +52 -52
  53. data/ext/libmspack/mspack/readhuff.h +61 -61
  54. data/ext/libmspack/mspack/system.c +15 -9
  55. data/ext/libmspack/mspack/system.h +38 -50
  56. data/ext/libmspack/mspack/szddd.c +35 -35
  57. data/ext/libmspack/test-driver +148 -0
  58. data/ext/x86_64-linux/libmspack.so +0 -0
  59. data/ext/x86_64-windows/mspack.dll +0 -0
  60. data/lib/libmspack/version.rb +2 -1
  61. data/lib/libmspack.rb +1 -1
  62. data/libmspack.gemspec +4 -4
  63. data/spec/libmspack_spec.rb +5 -4
  64. metadata +38 -105
  65. data/.travis.yml +0 -5
  66. data/ext/i386-windows/libmspack.dll +0 -0
  67. data/ext/libmspack/cleanup.sh +0 -9
  68. data/ext/libmspack/debian/changelog +0 -6
  69. data/ext/libmspack/debian/control +0 -14
  70. data/ext/libmspack/debian/rules +0 -101
  71. data/ext/libmspack/doc/Doxyfile.in +0 -22
  72. data/ext/libmspack/doc/Makefile.in +0 -14
  73. data/ext/libmspack/doc/szdd_kwaj_format.html +0 -331
  74. data/ext/libmspack/mspack/mspack.def +0 -28
  75. data/ext/libmspack/mspack/qtmc.c +0 -18
  76. data/ext/libmspack/rebuild.sh +0 -8
  77. data/ext/libmspack/test/cabd_c10 +0 -19
  78. data/ext/libmspack/test/cabd_compare +0 -34
  79. data/ext/libmspack/test/cabd_md5.c +0 -161
  80. data/ext/libmspack/test/cabd_memory.c +0 -179
  81. data/ext/libmspack/test/cabd_test.c +0 -386
  82. data/ext/libmspack/test/cabrip.c +0 -81
  83. data/ext/libmspack/test/chmd_compare +0 -38
  84. data/ext/libmspack/test/chmd_find.c +0 -95
  85. data/ext/libmspack/test/chmd_md5.c +0 -67
  86. data/ext/libmspack/test/chmd_order.c +0 -144
  87. data/ext/libmspack/test/chminfo.c +0 -284
  88. data/ext/libmspack/test/chmx.c +0 -216
  89. data/ext/libmspack/test/error.h +0 -22
  90. data/ext/libmspack/test/expand.c +0 -79
  91. data/ext/libmspack/test/md5.c +0 -457
  92. data/ext/libmspack/test/md5.h +0 -165
  93. data/ext/libmspack/test/md5_fh.h +0 -123
  94. data/ext/libmspack/test/msdecompile_md5 +0 -24
  95. data/ext/libmspack/test/msexpand_md5 +0 -39
  96. data/ext/libmspack/test/multifh.c +0 -435
  97. data/ext/libmspack/test/oabx.c +0 -41
  98. data/ext/libmspack/test/test_files/cabd/1.pl +0 -84
  99. data/ext/libmspack/test/test_files/cabd/2.pl +0 -75
  100. data/ext/libmspack/test/test_files/cabd/bad_folderindex.cab +0 -0
  101. data/ext/libmspack/test/test_files/cabd/bad_nofiles.cab +0 -0
  102. data/ext/libmspack/test/test_files/cabd/bad_nofolders.cab +0 -0
  103. data/ext/libmspack/test/test_files/cabd/bad_signature.cab +0 -0
  104. data/ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab +0 -0
  105. data/ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab +0 -0
  106. data/ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab +0 -0
  107. data/ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab +0 -0
  108. data/ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab +0 -0
  109. data/ext/libmspack/test/test_files/cabd/normal_255c_filename.cab +0 -0
  110. data/ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab +0 -0
  111. data/ext/libmspack/test/test_files/cabd/partial_nodata.cab +0 -0
  112. data/ext/libmspack/test/test_files/cabd/partial_nofiles.cab +0 -0
  113. data/ext/libmspack/test/test_files/cabd/partial_nofolder.cab +0 -0
  114. data/ext/libmspack/test/test_files/cabd/partial_shortextheader.cab +0 -0
  115. data/ext/libmspack/test/test_files/cabd/partial_shortfile1.cab +0 -0
  116. data/ext/libmspack/test/test_files/cabd/partial_shortfile2.cab +0 -0
  117. data/ext/libmspack/test/test_files/cabd/partial_shortfolder.cab +0 -0
  118. data/ext/libmspack/test/test_files/cabd/partial_shortheader.cab +0 -0
  119. data/ext/libmspack/test/test_files/cabd/partial_str_nofname.cab +0 -0
  120. data/ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab +0 -0
  121. data/ext/libmspack/test/test_files/cabd/partial_str_nonname.cab +0 -0
  122. data/ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab +0 -0
  123. data/ext/libmspack/test/test_files/cabd/partial_str_nopname.cab +0 -0
  124. data/ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab +0 -0
  125. data/ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab +0 -0
  126. data/ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab +0 -0
  127. data/ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab +0 -0
  128. data/ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab +0 -0
  129. data/ext/libmspack/test/test_files/cabd/reserve_---.cab +0 -0
  130. data/ext/libmspack/test/test_files/cabd/reserve_--D.cab +0 -0
  131. data/ext/libmspack/test/test_files/cabd/reserve_-F-.cab +0 -0
  132. data/ext/libmspack/test/test_files/cabd/reserve_-FD.cab +0 -0
  133. data/ext/libmspack/test/test_files/cabd/reserve_H--.cab +0 -0
  134. data/ext/libmspack/test/test_files/cabd/reserve_H-D.cab +0 -0
  135. data/ext/libmspack/test/test_files/cabd/reserve_HF-.cab +0 -0
  136. data/ext/libmspack/test/test_files/cabd/reserve_HFD.cab +0 -0
  137. data/ext/libmspack/test/test_files/cabd/search_basic.cab +0 -0
  138. data/ext/libmspack/test/test_files/cabd/search_tricky1.cab +0 -0
  139. data/ext/libmspack/winbuild.sh +0 -26
  140. data/ext/libmspack.h +0 -259
  141. data/ext/x86_64-windows/libmspack.dll +0 -0
@@ -40,56 +40,56 @@
40
40
  #include "crc32.h"
41
41
 
42
42
  const unsigned int crc32_table[256] = {
43
- 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
44
- 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
45
- 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
46
- 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
47
- 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
48
- 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
49
- 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
50
- 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
51
- 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
52
- 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
53
- 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
54
- 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
55
- 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
56
- 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
57
- 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
58
- 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
59
- 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
60
- 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
61
- 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
62
- 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
63
- 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
64
- 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
65
- 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
66
- 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
67
- 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
68
- 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
69
- 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
70
- 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
71
- 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
72
- 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
73
- 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
74
- 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
75
- 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
76
- 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
77
- 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
78
- 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
79
- 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
80
- 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
81
- 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
82
- 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
83
- 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
84
- 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
85
- 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
86
- 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
87
- 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
88
- 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
89
- 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
90
- 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
91
- 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
92
- 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
93
- 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
94
- 0x2d02ef8dL
43
+ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
44
+ 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
45
+ 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
46
+ 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
47
+ 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
48
+ 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
49
+ 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
50
+ 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
51
+ 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
52
+ 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
53
+ 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
54
+ 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
55
+ 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
56
+ 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
57
+ 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
58
+ 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
59
+ 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
60
+ 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
61
+ 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
62
+ 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
63
+ 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
64
+ 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
65
+ 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
66
+ 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
67
+ 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
68
+ 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
69
+ 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
70
+ 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
71
+ 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
72
+ 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
73
+ 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
74
+ 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
75
+ 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
76
+ 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
77
+ 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
78
+ 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
79
+ 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
80
+ 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
81
+ 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
82
+ 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
83
+ 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
84
+ 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
85
+ 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
86
+ 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
87
+ 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
88
+ 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
89
+ 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
90
+ 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
91
+ 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
92
+ 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
93
+ 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
94
+ 0x2d02ef8dL
95
95
  };
@@ -8,7 +8,7 @@ extern const unsigned int crc32_table[256];
8
8
  static inline unsigned int
9
9
  crc32(unsigned int val, const void *ss, int len)
10
10
  {
11
- const unsigned char *s = ss;
11
+ const unsigned char *s = ss;
12
12
  while (--len >= 0)
13
13
  val = crc32_table[(val ^ *s++) & 0xff] ^ (val >> 8);
14
14
  return val;
@@ -80,8 +80,8 @@ void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *base)
80
80
  {
81
81
  struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base;
82
82
  if (self) {
83
- struct mspack_system *sys = self->system;
84
- sys->free(self);
83
+ struct mspack_system *sys = self->system;
84
+ sys->free(self);
85
85
  }
86
86
  }
87
87
 
@@ -91,7 +91,7 @@ void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *base)
91
91
  * opens a KWAJ file without decompressing, reads header
92
92
  */
93
93
  static struct mskwajd_header *kwajd_open(struct mskwaj_decompressor *base,
94
- const char *filename)
94
+ const char *filename)
95
95
  {
96
96
  struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base;
97
97
  struct mskwajd_header *hdr;
@@ -104,18 +104,18 @@ static struct mskwajd_header *kwajd_open(struct mskwaj_decompressor *base,
104
104
  fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ);
105
105
  hdr = (struct mskwajd_header *) sys->alloc(sys, sizeof(struct mskwajd_header_p));
106
106
  if (fh && hdr) {
107
- ((struct mskwajd_header_p *) hdr)->fh = fh;
108
- self->error = kwajd_read_headers(sys, fh, hdr);
107
+ ((struct mskwajd_header_p *) hdr)->fh = fh;
108
+ self->error = kwajd_read_headers(sys, fh, hdr);
109
109
  }
110
110
  else {
111
- if (!fh) self->error = MSPACK_ERR_OPEN;
112
- if (!hdr) self->error = MSPACK_ERR_NOMEMORY;
111
+ if (!fh) self->error = MSPACK_ERR_OPEN;
112
+ if (!hdr) self->error = MSPACK_ERR_NOMEMORY;
113
113
  }
114
114
 
115
115
  if (self->error) {
116
- if (fh) sys->close(fh);
117
- if (hdr) sys->free(hdr);
118
- hdr = NULL;
116
+ if (fh) sys->close(fh);
117
+ sys->free(hdr);
118
+ hdr = NULL;
119
119
  }
120
120
 
121
121
  return hdr;
@@ -127,7 +127,7 @@ static struct mskwajd_header *kwajd_open(struct mskwaj_decompressor *base,
127
127
  * closes a KWAJ file
128
128
  */
129
129
  static void kwajd_close(struct mskwaj_decompressor *base,
130
- struct mskwajd_header *hdr)
130
+ struct mskwajd_header *hdr)
131
131
  {
132
132
  struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base;
133
133
  struct mskwajd_header_p *hdr_p = (struct mskwajd_header_p *) hdr;
@@ -149,22 +149,22 @@ static void kwajd_close(struct mskwaj_decompressor *base,
149
149
  * reads the headers of a KWAJ format file
150
150
  */
151
151
  static int kwajd_read_headers(struct mspack_system *sys,
152
- struct mspack_file *fh,
153
- struct mskwajd_header *hdr)
152
+ struct mspack_file *fh,
153
+ struct mskwajd_header *hdr)
154
154
  {
155
155
  unsigned char buf[16];
156
156
  int i;
157
157
 
158
158
  /* read in the header */
159
159
  if (sys->read(fh, &buf[0], kwajh_SIZEOF) != kwajh_SIZEOF) {
160
- return MSPACK_ERR_READ;
160
+ return MSPACK_ERR_READ;
161
161
  }
162
162
 
163
163
  /* check for "KWAJ" signature */
164
164
  if (((unsigned int) EndGetI32(&buf[kwajh_Signature1]) != 0x4A41574B) ||
165
- ((unsigned int) EndGetI32(&buf[kwajh_Signature2]) != 0xD127F088))
165
+ ((unsigned int) EndGetI32(&buf[kwajh_Signature2]) != 0xD127F088))
166
166
  {
167
- return MSPACK_ERR_SIGNATURE;
167
+ return MSPACK_ERR_SIGNATURE;
168
168
  }
169
169
 
170
170
  /* basic header fields */
@@ -180,61 +180,67 @@ static int kwajd_read_headers(struct mspack_system *sys,
180
180
 
181
181
  /* 4 bytes: length of unpacked file */
182
182
  if (hdr->headers & MSKWAJ_HDR_HASLENGTH) {
183
- if (sys->read(fh, &buf[0], 4) != 4) return MSPACK_ERR_READ;
184
- hdr->length = EndGetI32(&buf[0]);
183
+ if (sys->read(fh, &buf[0], 4) != 4) return MSPACK_ERR_READ;
184
+ hdr->length = EndGetI32(&buf[0]);
185
185
  }
186
186
 
187
187
  /* 2 bytes: unknown purpose */
188
188
  if (hdr->headers & MSKWAJ_HDR_HASUNKNOWN1) {
189
- if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
189
+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
190
190
  }
191
191
 
192
192
  /* 2 bytes: length of section, then [length] bytes: unknown purpose */
193
193
  if (hdr->headers & MSKWAJ_HDR_HASUNKNOWN2) {
194
- if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
195
- i = EndGetI16(&buf[0]);
196
- if (sys->seek(fh, (off_t)i, MSPACK_SYS_SEEK_CUR)) return MSPACK_ERR_SEEK;
194
+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
195
+ i = EndGetI16(&buf[0]);
196
+ if (sys->seek(fh, (off_t)i, MSPACK_SYS_SEEK_CUR)) return MSPACK_ERR_SEEK;
197
197
  }
198
198
 
199
199
  /* filename and extension */
200
200
  if (hdr->headers & (MSKWAJ_HDR_HASFILENAME | MSKWAJ_HDR_HASFILEEXT)) {
201
- off_t pos = sys->tell(fh);
202
- char *fn = (char *) sys->alloc(sys, (size_t) 13);
203
-
204
- /* allocate memory for maximum length filename */
205
- if (! fn) return MSPACK_ERR_NOMEMORY;
206
- hdr->filename = fn;
207
-
208
- /* copy filename if present */
209
- if (hdr->headers & MSKWAJ_HDR_HASFILENAME) {
210
- if (sys->read(fh, &buf[0], 9) != 9) return MSPACK_ERR_READ;
211
- for (i = 0; i < 9; i++, fn++) if (!(*fn = buf[i])) break;
212
- pos += (i < 9) ? i+1 : 9;
213
- if (sys->seek(fh, pos, MSPACK_SYS_SEEK_START))
214
- return MSPACK_ERR_SEEK;
215
- }
216
-
217
- /* copy extension if present */
218
- if (hdr->headers & MSKWAJ_HDR_HASFILEEXT) {
219
- *fn++ = '.';
220
- if (sys->read(fh, &buf[0], 4) != 4) return MSPACK_ERR_READ;
221
- for (i = 0; i < 4; i++, fn++) if (!(*fn = buf[i])) break;
222
- pos += (i < 4) ? i+1 : 4;
223
- if (sys->seek(fh, pos, MSPACK_SYS_SEEK_START))
224
- return MSPACK_ERR_SEEK;
225
- }
226
- *fn = '\0';
201
+ int len;
202
+ /* allocate memory for maximum length filename */
203
+ char *fn = (char *) sys->alloc(sys, (size_t) 13);
204
+ if (!(hdr->filename = fn)) return MSPACK_ERR_NOMEMORY;
205
+
206
+ /* copy filename if present */
207
+ if (hdr->headers & MSKWAJ_HDR_HASFILENAME) {
208
+ /* read and copy up to 9 bytes of a null terminated string */
209
+ if ((len = sys->read(fh, &buf[0], 9)) < 2) return MSPACK_ERR_READ;
210
+ for (i = 0; i < len; i++) if (!(*fn++ = buf[i])) break;
211
+ /* if string was 9 bytes with no null terminator, reject it */
212
+ if (i == 9 && buf[8] != '\0') return MSPACK_ERR_DATAFORMAT;
213
+ /* seek to byte after string ended in file */
214
+ if (sys->seek(fh, (off_t)(i + 1 - len), MSPACK_SYS_SEEK_CUR))
215
+ return MSPACK_ERR_SEEK;
216
+ fn--; /* remove the null terminator */
217
+ }
218
+
219
+ /* copy extension if present */
220
+ if (hdr->headers & MSKWAJ_HDR_HASFILEEXT) {
221
+ *fn++ = '.';
222
+ /* read and copy up to 4 bytes of a null terminated string */
223
+ if ((len = sys->read(fh, &buf[0], 4)) < 2) return MSPACK_ERR_READ;
224
+ for (i = 0; i < len; i++) if (!(*fn++ = buf[i])) break;
225
+ /* if string was 4 bytes with no null terminator, reject it */
226
+ if (i == 4 && buf[3] != '\0') return MSPACK_ERR_DATAFORMAT;
227
+ /* seek to byte after string ended in file */
228
+ if (sys->seek(fh, (off_t)(i + 1 - len), MSPACK_SYS_SEEK_CUR))
229
+ return MSPACK_ERR_SEEK;
230
+ fn--; /* remove the null terminator */
231
+ }
232
+ *fn = '\0';
227
233
  }
228
234
 
229
235
  /* 2 bytes: extra text length then [length] bytes of extra text data */
230
236
  if (hdr->headers & MSKWAJ_HDR_HASEXTRATEXT) {
231
- if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
232
- i = EndGetI16(&buf[0]);
233
- hdr->extra = (char *) sys->alloc(sys, (size_t)i+1);
234
- if (! hdr->extra) return MSPACK_ERR_NOMEMORY;
235
- if (sys->read(fh, hdr->extra, i) != i) return MSPACK_ERR_READ;
236
- hdr->extra[i] = '\0';
237
- hdr->extra_length = i;
237
+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ;
238
+ i = EndGetI16(&buf[0]);
239
+ hdr->extra = (char *) sys->alloc(sys, (size_t)i+1);
240
+ if (! hdr->extra) return MSPACK_ERR_NOMEMORY;
241
+ if (sys->read(fh, hdr->extra, i) != i) return MSPACK_ERR_READ;
242
+ hdr->extra[i] = '\0';
243
+ hdr->extra_length = i;
238
244
  }
239
245
  return MSPACK_ERR_OK;
240
246
  }
@@ -245,7 +251,7 @@ static int kwajd_read_headers(struct mspack_system *sys,
245
251
  * decompresses a KWAJ file
246
252
  */
247
253
  static int kwajd_extract(struct mskwaj_decompressor *base,
248
- struct mskwajd_header *hdr, const char *filename)
254
+ struct mskwajd_header *hdr, const char *filename)
249
255
  {
250
256
  struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base;
251
257
  struct mspack_system *sys;
@@ -259,48 +265,48 @@ static int kwajd_extract(struct mskwaj_decompressor *base,
259
265
 
260
266
  /* seek to the compressed data */
261
267
  if (sys->seek(fh, hdr->data_offset, MSPACK_SYS_SEEK_START)) {
262
- return self->error = MSPACK_ERR_SEEK;
268
+ return self->error = MSPACK_ERR_SEEK;
263
269
  }
264
270
 
265
271
  /* open file for output */
266
272
  if (!(outfh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) {
267
- return self->error = MSPACK_ERR_OPEN;
273
+ return self->error = MSPACK_ERR_OPEN;
268
274
  }
269
275
 
270
276
  self->error = MSPACK_ERR_OK;
271
277
 
272
278
  /* decompress based on format */
273
279
  if (hdr->comp_type == MSKWAJ_COMP_NONE ||
274
- hdr->comp_type == MSKWAJ_COMP_XOR)
280
+ hdr->comp_type == MSKWAJ_COMP_XOR)
275
281
  {
276
- /* NONE is a straight copy. XOR is a copy xored with 0xFF */
277
- unsigned char *buf = (unsigned char *) sys->alloc(sys, (size_t) KWAJ_INPUT_SIZE);
278
- if (buf) {
279
- int read, i;
280
- while ((read = sys->read(fh, buf, KWAJ_INPUT_SIZE)) > 0) {
281
- if (hdr->comp_type == MSKWAJ_COMP_XOR) {
282
- for (i = 0; i < read; i++) buf[i] ^= 0xFF;
283
- }
284
- if (sys->write(outfh, buf, read) != read) {
285
- self->error = MSPACK_ERR_WRITE;
286
- break;
287
- }
288
- }
289
- if (read < 0) self->error = MSPACK_ERR_READ;
290
- sys->free(buf);
291
- }
292
- else {
293
- self->error = MSPACK_ERR_NOMEMORY;
294
- }
282
+ /* NONE is a straight copy. XOR is a copy xored with 0xFF */
283
+ unsigned char *buf = (unsigned char *) sys->alloc(sys, (size_t) KWAJ_INPUT_SIZE);
284
+ if (buf) {
285
+ int read, i;
286
+ while ((read = sys->read(fh, buf, KWAJ_INPUT_SIZE)) > 0) {
287
+ if (hdr->comp_type == MSKWAJ_COMP_XOR) {
288
+ for (i = 0; i < read; i++) buf[i] ^= 0xFF;
289
+ }
290
+ if (sys->write(outfh, buf, read) != read) {
291
+ self->error = MSPACK_ERR_WRITE;
292
+ break;
293
+ }
294
+ }
295
+ if (read < 0) self->error = MSPACK_ERR_READ;
296
+ sys->free(buf);
297
+ }
298
+ else {
299
+ self->error = MSPACK_ERR_NOMEMORY;
300
+ }
295
301
  }
296
302
  else if (hdr->comp_type == MSKWAJ_COMP_SZDD) {
297
- self->error = lzss_decompress(sys, fh, outfh, KWAJ_INPUT_SIZE,
298
- LZSS_MODE_EXPAND);
303
+ self->error = lzss_decompress(sys, fh, outfh, KWAJ_INPUT_SIZE,
304
+ LZSS_MODE_EXPAND);
299
305
  }
300
306
  else if (hdr->comp_type == MSKWAJ_COMP_LZH) {
301
- struct kwajd_stream *lzh = lzh_init(sys, fh, outfh);
302
- self->error = (lzh) ? lzh_decompress(lzh) : MSPACK_ERR_NOMEMORY;
303
- lzh_free(lzh);
307
+ struct kwajd_stream *lzh = lzh_init(sys, fh, outfh);
308
+ self->error = (lzh) ? lzh_decompress(lzh) : MSPACK_ERR_NOMEMORY;
309
+ lzh_free(lzh);
304
310
  }
305
311
  else if (hdr->comp_type == MSKWAJ_COMP_MSZIP) {
306
312
  struct mszipd_stream *zip = mszipd_init(sys,fh,outfh,KWAJ_INPUT_SIZE,0);
@@ -308,7 +314,7 @@ static int kwajd_extract(struct mskwaj_decompressor *base,
308
314
  mszipd_free(zip);
309
315
  }
310
316
  else {
311
- self->error = MSPACK_ERR_DATAFORMAT;
317
+ self->error = MSPACK_ERR_DATAFORMAT;
312
318
  }
313
319
 
314
320
  /* close output file */
@@ -323,7 +329,7 @@ static int kwajd_extract(struct mskwaj_decompressor *base,
323
329
  * unpacks directly from input to output
324
330
  */
325
331
  static int kwajd_decompress(struct mskwaj_decompressor *base,
326
- const char *input, const char *output)
332
+ const char *input, const char *output)
327
333
  {
328
334
  struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base;
329
335
  struct mskwajd_header *hdr;
@@ -359,13 +365,13 @@ static int kwajd_error(struct mskwaj_decompressor *base)
359
365
  #define BITS_VAR lzh
360
366
  #define BITS_ORDER_MSB
361
367
  #define BITS_NO_READ_INPUT
362
- #define READ_BYTES do { \
363
- if (i_ptr >= i_end) { \
364
- if ((err = lzh_read_input(lzh))) return err; \
365
- i_ptr = lzh->i_ptr; \
366
- i_end = lzh->i_end; \
367
- } \
368
- INJECT_BITS(*i_ptr++, 8); \
368
+ #define READ_BYTES do { \
369
+ if (i_ptr >= i_end) { \
370
+ if ((err = lzh_read_input(lzh))) return err; \
371
+ i_ptr = lzh->i_ptr; \
372
+ i_end = lzh->i_end; \
373
+ } \
374
+ INJECT_BITS(*i_ptr++, 8); \
369
375
  } while (0)
370
376
  #include <readbits.h>
371
377
 
@@ -387,30 +393,30 @@ static int kwajd_error(struct mskwaj_decompressor *base)
387
393
  * isn't how the default readbits.h read_input() works (it simply lets
388
394
  * 2 fake bytes in then stops), so we implement our own.
389
395
  */
390
- #define READ_BITS_SAFE(val, n) do { \
391
- READ_BITS(val, n); \
392
- if (lzh->input_end && bits_left < lzh->input_end) \
393
- return MSPACK_ERR_OK; \
396
+ #define READ_BITS_SAFE(val, n) do { \
397
+ READ_BITS(val, n); \
398
+ if (lzh->input_end && bits_left < lzh->input_end) \
399
+ return MSPACK_ERR_OK; \
394
400
  } while (0)
395
401
 
396
- #define READ_HUFFSYM_SAFE(tbl, val) do { \
397
- READ_HUFFSYM(tbl, val); \
398
- if (lzh->input_end && bits_left < lzh->input_end) \
399
- return MSPACK_ERR_OK; \
402
+ #define READ_HUFFSYM_SAFE(tbl, val) do { \
403
+ READ_HUFFSYM(tbl, val); \
404
+ if (lzh->input_end && bits_left < lzh->input_end) \
405
+ return MSPACK_ERR_OK; \
400
406
  } while (0)
401
407
 
402
- #define BUILD_TREE(tbl, type) \
403
- STORE_BITS; \
404
- err = lzh_read_lens(lzh, type, MAXSYMBOLS(tbl), &HUFF_LEN(tbl,0)); \
405
- if (err) return err; \
406
- RESTORE_BITS; \
407
- if (make_decode_table(MAXSYMBOLS(tbl), TABLEBITS(tbl), \
408
- &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0))) \
409
- return MSPACK_ERR_DATAFORMAT;
410
-
411
- #define WRITE_BYTE do { \
412
- if (lzh->sys->write(lzh->output, &lzh->window[pos], 1) != 1) \
413
- return MSPACK_ERR_WRITE; \
408
+ #define BUILD_TREE(tbl, type) \
409
+ STORE_BITS; \
410
+ err = lzh_read_lens(lzh, type, MAXSYMBOLS(tbl), &HUFF_LEN(tbl,0)); \
411
+ if (err) return err; \
412
+ RESTORE_BITS; \
413
+ if (make_decode_table(MAXSYMBOLS(tbl), TABLEBITS(tbl), \
414
+ &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0))) \
415
+ return MSPACK_ERR_DATAFORMAT;
416
+
417
+ #define WRITE_BYTE do { \
418
+ if (lzh->sys->write(lzh->output, &lzh->window[pos], 1) != 1) \
419
+ return MSPACK_ERR_WRITE; \
414
420
  } while (0)
415
421
 
416
422
  static struct kwajd_stream *lzh_init(struct mspack_system *sys,
@@ -452,33 +458,33 @@ static int lzh_decompress(struct kwajd_stream *lzh)
452
458
  BUILD_TREE(LITERAL, types[4]);
453
459
 
454
460
  while (!lzh->input_end) {
455
- if (lit_run) READ_HUFFSYM_SAFE(MATCHLEN2, len);
456
- else READ_HUFFSYM_SAFE(MATCHLEN1, len);
457
-
458
- if (len > 0) {
459
- len += 2;
460
- lit_run = 0; /* not the end of a literal run */
461
- READ_HUFFSYM_SAFE(OFFSET, j); offset = j << 6;
462
- READ_BITS_SAFE(j, 6); offset |= j;
463
-
464
- /* copy match as output and into the ring buffer */
465
- while (len-- > 0) {
466
- lzh->window[pos] = lzh->window[(pos+4096-offset) & 4095];
467
- WRITE_BYTE;
468
- pos++; pos &= 4095;
469
- }
470
- }
471
- else {
472
- READ_HUFFSYM_SAFE(LITLEN, len); len++;
473
- lit_run = (len == 32) ? 0 : 1; /* end of a literal run? */
474
- while (len-- > 0) {
475
- READ_HUFFSYM_SAFE(LITERAL, j);
476
- /* copy as output and into the ring buffer */
477
- lzh->window[pos] = j;
478
- WRITE_BYTE;
479
- pos++; pos &= 4095;
480
- }
481
- }
461
+ if (lit_run) READ_HUFFSYM_SAFE(MATCHLEN2, len);
462
+ else READ_HUFFSYM_SAFE(MATCHLEN1, len);
463
+
464
+ if (len > 0) {
465
+ len += 2;
466
+ lit_run = 0; /* not the end of a literal run */
467
+ READ_HUFFSYM_SAFE(OFFSET, j); offset = j << 6;
468
+ READ_BITS_SAFE(j, 6); offset |= j;
469
+
470
+ /* copy match as output and into the ring buffer */
471
+ while (len-- > 0) {
472
+ lzh->window[pos] = lzh->window[(pos+4096-offset) & 4095];
473
+ WRITE_BYTE;
474
+ pos++; pos &= 4095;
475
+ }
476
+ }
477
+ else {
478
+ READ_HUFFSYM_SAFE(LITLEN, len); len++;
479
+ lit_run = (len == 32) ? 0 : 1; /* end of a literal run? */
480
+ while (len-- > 0) {
481
+ READ_HUFFSYM_SAFE(LITERAL, j);
482
+ /* copy as output and into the ring buffer */
483
+ lzh->window[pos] = j;
484
+ WRITE_BYTE;
485
+ pos++; pos &= 4095;
486
+ }
487
+ }
482
488
  }
483
489
  return MSPACK_ERR_OK;
484
490
  }
@@ -492,8 +498,8 @@ static void lzh_free(struct kwajd_stream *lzh)
492
498
  }
493
499
 
494
500
  static int lzh_read_lens(struct kwajd_stream *lzh,
495
- unsigned int type, unsigned int numsyms,
496
- unsigned char *lens)
501
+ unsigned int type, unsigned int numsyms,
502
+ unsigned char *lens)
497
503
  {
498
504
  register unsigned int bit_buffer;
499
505
  register int bits_left;
@@ -504,33 +510,33 @@ static int lzh_read_lens(struct kwajd_stream *lzh,
504
510
  RESTORE_BITS;
505
511
  switch (type) {
506
512
  case 0:
507
- i = numsyms; c = (i==16)?4: (i==32)?5: (i==64)?6: (i==256)?8 :0;
508
- for (i = 0; i < numsyms; i++) lens[i] = c;
509
- break;
513
+ i = numsyms; c = (i==16)?4: (i==32)?5: (i==64)?6: (i==256)?8 :0;
514
+ for (i = 0; i < numsyms; i++) lens[i] = c;
515
+ break;
510
516
 
511
517
  case 1:
512
- READ_BITS_SAFE(c, 4); lens[0] = c;
513
- for (i = 1; i < numsyms; i++) {
514
- READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = c;
515
- else { READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = ++c;
516
- else { READ_BITS_SAFE(c, 4); lens[i] = c; }}
517
- }
518
- break;
518
+ READ_BITS_SAFE(c, 4); lens[0] = c;
519
+ for (i = 1; i < numsyms; i++) {
520
+ READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = c;
521
+ else { READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = ++c;
522
+ else { READ_BITS_SAFE(c, 4); lens[i] = c; }}
523
+ }
524
+ break;
519
525
 
520
526
  case 2:
521
- READ_BITS_SAFE(c, 4); lens[0] = c;
522
- for (i = 1; i < numsyms; i++) {
523
- READ_BITS_SAFE(sel, 2);
524
- if (sel == 3) READ_BITS_SAFE(c, 4); else c += (char) sel-1;
525
- lens[i] = c;
526
- }
527
- break;
527
+ READ_BITS_SAFE(c, 4); lens[0] = c;
528
+ for (i = 1; i < numsyms; i++) {
529
+ READ_BITS_SAFE(sel, 2);
530
+ if (sel == 3) READ_BITS_SAFE(c, 4); else c += (char) sel-1;
531
+ lens[i] = c;
532
+ }
533
+ break;
528
534
 
529
535
  case 3:
530
- for (i = 0; i < numsyms; i++) {
531
- READ_BITS_SAFE(c, 4); lens[i] = c;
532
- }
533
- break;
536
+ for (i = 0; i < numsyms; i++) {
537
+ READ_BITS_SAFE(c, 4); lens[i] = c;
538
+ }
539
+ break;
534
540
  }
535
541
  STORE_BITS;
536
542
  return MSPACK_ERR_OK;
@@ -539,18 +545,18 @@ static int lzh_read_lens(struct kwajd_stream *lzh,
539
545
  static int lzh_read_input(struct kwajd_stream *lzh) {
540
546
  int read;
541
547
  if (lzh->input_end) {
542
- lzh->input_end += 8;
543
- lzh->inbuf[0] = 0;
544
- read = 1;
548
+ lzh->input_end += 8;
549
+ lzh->inbuf[0] = 0;
550
+ read = 1;
545
551
  }
546
552
  else {
547
- read = lzh->sys->read(lzh->input, &lzh->inbuf[0], KWAJ_INPUT_SIZE);
548
- if (read < 0) return MSPACK_ERR_READ;
549
- if (read == 0) {
550
- lzh->input_end = 8;
551
- lzh->inbuf[0] = 0;
552
- read = 1;
553
- }
553
+ read = lzh->sys->read(lzh->input, &lzh->inbuf[0], KWAJ_INPUT_SIZE);
554
+ if (read < 0) return MSPACK_ERR_READ;
555
+ if (read == 0) {
556
+ lzh->input_end = 8;
557
+ lzh->inbuf[0] = 0;
558
+ read = 1;
559
+ }
554
560
  }
555
561
 
556
562
  /* update i_ptr and i_end */
@@ -54,10 +54,10 @@ extern "C" {
54
54
  * @return an error code, or MSPACK_ERR_OK if successful
55
55
  */
56
56
  extern int lzss_decompress(struct mspack_system *system,
57
- struct mspack_file *input,
58
- struct mspack_file *output,
59
- int input_buffer_size,
60
- int mode);
57
+ struct mspack_file *input,
58
+ struct mspack_file *output,
59
+ int input_buffer_size,
60
+ int mode);
61
61
 
62
62
  #ifdef __cplusplus
63
63
  }