libmspack 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.travis.yml +5 -0
- data/.yardopts +1 -0
- data/Gemfile +4 -0
- data/README.md +75 -0
- data/Rakefile +22 -0
- data/UNLICENSE +24 -0
- data/ext/Rakefile +16 -0
- data/ext/i386-windows/libmspack.dll +0 -0
- data/ext/libmspack/AUTHORS +12 -0
- data/ext/libmspack/COPYING.LIB +504 -0
- data/ext/libmspack/ChangeLog +491 -0
- data/ext/libmspack/Makefile.am +100 -0
- data/ext/libmspack/NEWS +0 -0
- data/ext/libmspack/README +130 -0
- data/ext/libmspack/TODO +8 -0
- data/ext/libmspack/cleanup.sh +9 -0
- data/ext/libmspack/configure.ac +50 -0
- data/ext/libmspack/debian/changelog +6 -0
- data/ext/libmspack/debian/control +14 -0
- data/ext/libmspack/debian/rules +101 -0
- data/ext/libmspack/doc/Doxyfile.in +22 -0
- data/ext/libmspack/doc/Makefile.in +14 -0
- data/ext/libmspack/doc/szdd_kwaj_format.html +331 -0
- data/ext/libmspack/libmspack.pc.in +10 -0
- data/ext/libmspack/mspack/cab.h +127 -0
- data/ext/libmspack/mspack/cabc.c +24 -0
- data/ext/libmspack/mspack/cabd.c +1444 -0
- data/ext/libmspack/mspack/chm.h +122 -0
- data/ext/libmspack/mspack/chmc.c +24 -0
- data/ext/libmspack/mspack/chmd.c +1392 -0
- data/ext/libmspack/mspack/crc32.c +95 -0
- data/ext/libmspack/mspack/crc32.h +17 -0
- data/ext/libmspack/mspack/des.h +15 -0
- data/ext/libmspack/mspack/hlp.h +33 -0
- data/ext/libmspack/mspack/hlpc.c +24 -0
- data/ext/libmspack/mspack/hlpd.c +24 -0
- data/ext/libmspack/mspack/kwaj.h +118 -0
- data/ext/libmspack/mspack/kwajc.c +24 -0
- data/ext/libmspack/mspack/kwajd.c +561 -0
- data/ext/libmspack/mspack/lit.h +35 -0
- data/ext/libmspack/mspack/litc.c +24 -0
- data/ext/libmspack/mspack/litd.c +24 -0
- data/ext/libmspack/mspack/lzss.h +66 -0
- data/ext/libmspack/mspack/lzssd.c +93 -0
- data/ext/libmspack/mspack/lzx.h +221 -0
- data/ext/libmspack/mspack/lzxc.c +18 -0
- data/ext/libmspack/mspack/lzxd.c +895 -0
- data/ext/libmspack/mspack/mspack.def +28 -0
- data/ext/libmspack/mspack/mspack.h +2353 -0
- data/ext/libmspack/mspack/mszip.h +126 -0
- data/ext/libmspack/mspack/mszipc.c +18 -0
- data/ext/libmspack/mspack/mszipd.c +514 -0
- data/ext/libmspack/mspack/oab.h +60 -0
- data/ext/libmspack/mspack/oabc.c +24 -0
- data/ext/libmspack/mspack/oabd.c +408 -0
- data/ext/libmspack/mspack/qtm.h +128 -0
- data/ext/libmspack/mspack/qtmc.c +18 -0
- data/ext/libmspack/mspack/qtmd.c +489 -0
- data/ext/libmspack/mspack/readbits.h +207 -0
- data/ext/libmspack/mspack/readhuff.h +173 -0
- data/ext/libmspack/mspack/sha.h +15 -0
- data/ext/libmspack/mspack/system.c +239 -0
- data/ext/libmspack/mspack/system.h +124 -0
- data/ext/libmspack/mspack/szdd.h +39 -0
- data/ext/libmspack/mspack/szddc.c +24 -0
- data/ext/libmspack/mspack/szddd.c +247 -0
- data/ext/libmspack/rebuild.sh +8 -0
- data/ext/libmspack/test/cabd_c10 +19 -0
- data/ext/libmspack/test/cabd_compare +34 -0
- data/ext/libmspack/test/cabd_md5.c +161 -0
- data/ext/libmspack/test/cabd_memory.c +179 -0
- data/ext/libmspack/test/cabd_test.c +386 -0
- data/ext/libmspack/test/cabrip.c +81 -0
- data/ext/libmspack/test/chmd_compare +38 -0
- data/ext/libmspack/test/chmd_find.c +95 -0
- data/ext/libmspack/test/chmd_md5.c +67 -0
- data/ext/libmspack/test/chmd_order.c +144 -0
- data/ext/libmspack/test/chminfo.c +284 -0
- data/ext/libmspack/test/chmx.c +216 -0
- data/ext/libmspack/test/error.h +22 -0
- data/ext/libmspack/test/expand.c +79 -0
- data/ext/libmspack/test/md5.c +457 -0
- data/ext/libmspack/test/md5.h +165 -0
- data/ext/libmspack/test/md5_fh.h +123 -0
- data/ext/libmspack/test/msdecompile_md5 +24 -0
- data/ext/libmspack/test/msexpand_md5 +39 -0
- data/ext/libmspack/test/multifh.c +435 -0
- data/ext/libmspack/test/oabx.c +41 -0
- data/ext/libmspack/test/test_files/cabd/1.pl +84 -0
- data/ext/libmspack/test/test_files/cabd/2.pl +75 -0
- data/ext/libmspack/test/test_files/cabd/bad_folderindex.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/bad_nofiles.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/bad_nofolders.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/bad_signature.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/normal_255c_filename.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_nodata.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_nofiles.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_nofolder.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_shortextheader.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_shortfile1.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_shortfile2.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_shortfolder.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_shortheader.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_nofname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_nonname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_nopname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_---.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_--D.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_-F-.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_-FD.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_H--.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_H-D.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_HF-.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/reserve_HFD.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/search_basic.cab +0 -0
- data/ext/libmspack/test/test_files/cabd/search_tricky1.cab +0 -0
- data/ext/libmspack/winbuild.sh +26 -0
- data/ext/x86_64-windows/libmspack.dll +0 -0
- data/lib/libmspack/constants.rb +9 -0
- data/lib/libmspack/exceptions.rb +12 -0
- data/lib/libmspack/mscab.rb +722 -0
- data/lib/libmspack/mschm.rb +301 -0
- data/lib/libmspack/mshlp.rb +15 -0
- data/lib/libmspack/mskwaj.rb +124 -0
- data/lib/libmspack/mslit.rb +18 -0
- data/lib/libmspack/msoab.rb +36 -0
- data/lib/libmspack/mspack.rb +208 -0
- data/lib/libmspack/msszdd.rb +81 -0
- data/lib/libmspack/system.rb +84 -0
- data/lib/libmspack/version.rb +4 -0
- data/lib/libmspack.rb +121 -0
- data/libmspack.gemspec +33 -0
- data/spec/libmspack_spec.rb +26 -0
- data/spec/spec_helper.rb +5 -0
- metadata +309 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or
|
|
3
|
+
* code or tables extracted from it, as desired without restriction.
|
|
4
|
+
*
|
|
5
|
+
* First, the polynomial itself and its table of feedback terms. The
|
|
6
|
+
* polynomial is
|
|
7
|
+
* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
|
|
8
|
+
*
|
|
9
|
+
* Note that we take it "backwards" and put the highest-order term in
|
|
10
|
+
* the lowest-order bit. The X^32 term is "implied"; the LSB is the
|
|
11
|
+
* X^31 term, etc. The X^0 term (usually shown as "+1") results in
|
|
12
|
+
* the MSB being 1
|
|
13
|
+
*
|
|
14
|
+
* Note that the usual hardware shift register implementation, which
|
|
15
|
+
* is what we're using (we're merely optimizing it by doing eight-bit
|
|
16
|
+
* chunks at a time) shifts bits into the lowest-order term. In our
|
|
17
|
+
* implementation, that means shifting towards the right. Why do we
|
|
18
|
+
* do it this way? Because the calculated CRC must be transmitted in
|
|
19
|
+
* order from highest-order term to lowest-order term. UARTs transmit
|
|
20
|
+
* characters in order from LSB to MSB. By storing the CRC this way
|
|
21
|
+
* we hand it to the UART in the order low-byte to high-byte; the UART
|
|
22
|
+
* sends each low-bit to hight-bit; and the result is transmission bit
|
|
23
|
+
* by bit from highest- to lowest-order term without requiring any bit
|
|
24
|
+
* shuffling on our part. Reception works similarly
|
|
25
|
+
*
|
|
26
|
+
* The feedback terms table consists of 256, 32-bit entries. Notes
|
|
27
|
+
*
|
|
28
|
+
* The table can be generated at runtime if desired; code to do so
|
|
29
|
+
* is shown later. It might not be obvious, but the feedback
|
|
30
|
+
* terms simply represent the results of eight shift/xor opera
|
|
31
|
+
* tions for all combinations of data and CRC register values
|
|
32
|
+
*
|
|
33
|
+
* The values must be right-shifted by eight bits by the "updcrc
|
|
34
|
+
* logic; the shift must be unsigned (bring in zeroes). On some
|
|
35
|
+
* hardware you could probably optimize the shift in assembler by
|
|
36
|
+
* using byte-swap instructions
|
|
37
|
+
* polynomial $edb88320
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
#include "crc32.h"
|
|
41
|
+
|
|
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
|
|
95
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#ifndef CRC32_H
|
|
2
|
+
#define CRC32_H
|
|
3
|
+
|
|
4
|
+
extern const unsigned int crc32_table[256];
|
|
5
|
+
|
|
6
|
+
/* Return a 32-bit CRC of the contents of the buffer. */
|
|
7
|
+
|
|
8
|
+
static inline unsigned int
|
|
9
|
+
crc32(unsigned int val, const void *ss, int len)
|
|
10
|
+
{
|
|
11
|
+
const unsigned char *s = ss;
|
|
12
|
+
while (--len >= 0)
|
|
13
|
+
val = crc32_table[(val ^ *s++) & 0xff] ^ (val >> 8);
|
|
14
|
+
return val;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
#endif
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2004 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef MSPACK_DES_H
|
|
11
|
+
#define MSPACK_DES_H 1
|
|
12
|
+
|
|
13
|
+
/* DES encryption / decryption definitions */
|
|
14
|
+
|
|
15
|
+
#endif
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2004 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef MSPACK_HLP_H
|
|
11
|
+
#define MSPACK_HLP_H 1
|
|
12
|
+
|
|
13
|
+
#include <lzss.h>
|
|
14
|
+
|
|
15
|
+
/* generic HLP definitions */
|
|
16
|
+
|
|
17
|
+
/* HLP compression definitions */
|
|
18
|
+
|
|
19
|
+
struct mshlp_compressor_p {
|
|
20
|
+
struct mshlp_compressor base;
|
|
21
|
+
struct mspack_system *system;
|
|
22
|
+
/* todo */
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/* HLP decompression definitions */
|
|
26
|
+
|
|
27
|
+
struct mshlp_decompressor_p {
|
|
28
|
+
struct mshlp_decompressor base;
|
|
29
|
+
struct mspack_system *system;
|
|
30
|
+
/* todo */
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2004 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* HLP compression implementation */
|
|
11
|
+
|
|
12
|
+
#include <system.h>
|
|
13
|
+
#include <hlp.h>
|
|
14
|
+
|
|
15
|
+
struct mshlp_compressor *
|
|
16
|
+
mspack_create_hlp_compressor(struct mspack_system *sys)
|
|
17
|
+
{
|
|
18
|
+
/* todo */
|
|
19
|
+
return NULL;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void mspack_destroy_hlp_compressor(struct mshlp_compressor *self) {
|
|
23
|
+
/* todo */
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2004 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* HLP decompression implementation */
|
|
11
|
+
|
|
12
|
+
#include <system.h>
|
|
13
|
+
#include <hlp.h>
|
|
14
|
+
|
|
15
|
+
struct mshlp_decompressor *
|
|
16
|
+
mspack_create_hlp_decompressor(struct mspack_system *sys)
|
|
17
|
+
{
|
|
18
|
+
/* todo */
|
|
19
|
+
return NULL;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *self) {
|
|
23
|
+
/* todo */
|
|
24
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2010 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef MSPACK_KWAJ_H
|
|
11
|
+
#define MSPACK_KWAJ_H 1
|
|
12
|
+
|
|
13
|
+
#include <lzss.h>
|
|
14
|
+
|
|
15
|
+
/* generic KWAJ definitions */
|
|
16
|
+
#define kwajh_Signature1 (0x00)
|
|
17
|
+
#define kwajh_Signature2 (0x04)
|
|
18
|
+
#define kwajh_CompMethod (0x08)
|
|
19
|
+
#define kwajh_DataOffset (0x0a)
|
|
20
|
+
#define kwajh_Flags (0x0c)
|
|
21
|
+
#define kwajh_SIZEOF (0x0e)
|
|
22
|
+
|
|
23
|
+
/* KWAJ compression definitions */
|
|
24
|
+
|
|
25
|
+
struct mskwaj_compressor_p {
|
|
26
|
+
struct mskwaj_compressor base;
|
|
27
|
+
struct mspack_system *system;
|
|
28
|
+
/* todo */
|
|
29
|
+
int param[2]; /* !!! MATCH THIS TO NUM OF PARAMS IN MSPACK.H !!! */
|
|
30
|
+
int error;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/* KWAJ decompression definitions */
|
|
34
|
+
|
|
35
|
+
struct mskwaj_decompressor_p {
|
|
36
|
+
struct mskwaj_decompressor base;
|
|
37
|
+
struct mspack_system *system;
|
|
38
|
+
int error;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
struct mskwajd_header_p {
|
|
42
|
+
struct mskwajd_header base;
|
|
43
|
+
struct mspack_file *fh;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/* input buffer size during decompression - not worth parameterising IMHO */
|
|
47
|
+
#define KWAJ_INPUT_SIZE (2048)
|
|
48
|
+
|
|
49
|
+
/* huffman codes that are 9 bits or less are decoded immediately */
|
|
50
|
+
#define KWAJ_TABLEBITS (9)
|
|
51
|
+
|
|
52
|
+
/* number of codes in each huffman table */
|
|
53
|
+
#define KWAJ_MATCHLEN1_SYMS (16)
|
|
54
|
+
#define KWAJ_MATCHLEN2_SYMS (16)
|
|
55
|
+
#define KWAJ_LITLEN_SYMS (32)
|
|
56
|
+
#define KWAJ_OFFSET_SYMS (64)
|
|
57
|
+
#define KWAJ_LITERAL_SYMS (256)
|
|
58
|
+
|
|
59
|
+
/* define decoding table sizes */
|
|
60
|
+
#define KWAJ_TABLESIZE (1 << KWAJ_TABLEBITS)
|
|
61
|
+
#if KWAJ_TABLESIZE < (KWAJ_MATCHLEN1_SYMS * 2)
|
|
62
|
+
# define KWAJ_MATCHLEN1_TBLSIZE (KWAJ_MATCHLEN1_SYMS * 4)
|
|
63
|
+
#else
|
|
64
|
+
# define KWAJ_MATCHLEN1_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_MATCHLEN1_SYMS * 2))
|
|
65
|
+
#endif
|
|
66
|
+
#if KWAJ_TABLESIZE < (KWAJ_MATCHLEN2_SYMS * 2)
|
|
67
|
+
# define KWAJ_MATCHLEN2_TBLSIZE (KWAJ_MATCHLEN2_SYMS * 4)
|
|
68
|
+
#else
|
|
69
|
+
# define KWAJ_MATCHLEN2_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_MATCHLEN2_SYMS * 2))
|
|
70
|
+
#endif
|
|
71
|
+
#if KWAJ_TABLESIZE < (KWAJ_LITLEN_SYMS * 2)
|
|
72
|
+
# define KWAJ_LITLEN_TBLSIZE (KWAJ_LITLEN_SYMS * 4)
|
|
73
|
+
#else
|
|
74
|
+
# define KWAJ_LITLEN_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_LITLEN_SYMS * 2))
|
|
75
|
+
#endif
|
|
76
|
+
#if KWAJ_TABLESIZE < (KWAJ_OFFSET_SYMS * 2)
|
|
77
|
+
# define KWAJ_OFFSET_TBLSIZE (KWAJ_OFFSET_SYMS * 4)
|
|
78
|
+
#else
|
|
79
|
+
# define KWAJ_OFFSET_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_OFFSET_SYMS * 2))
|
|
80
|
+
#endif
|
|
81
|
+
#if KWAJ_TABLESIZE < (KWAJ_LITERAL_SYMS * 2)
|
|
82
|
+
# define KWAJ_LITERAL_TBLSIZE (KWAJ_LITERAL_SYMS * 4)
|
|
83
|
+
#else
|
|
84
|
+
# define KWAJ_LITERAL_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_LITERAL_SYMS * 2))
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
struct kwajd_stream {
|
|
88
|
+
/* I/O buffering */
|
|
89
|
+
struct mspack_system *sys;
|
|
90
|
+
struct mspack_file *input;
|
|
91
|
+
struct mspack_file *output;
|
|
92
|
+
unsigned char *i_ptr, *i_end;
|
|
93
|
+
unsigned int bit_buffer, bits_left;
|
|
94
|
+
int input_end;
|
|
95
|
+
|
|
96
|
+
/* huffman code lengths */
|
|
97
|
+
unsigned char MATCHLEN1_len [KWAJ_MATCHLEN1_SYMS];
|
|
98
|
+
unsigned char MATCHLEN2_len [KWAJ_MATCHLEN2_SYMS];
|
|
99
|
+
unsigned char LITLEN_len [KWAJ_LITLEN_SYMS];
|
|
100
|
+
unsigned char OFFSET_len [KWAJ_OFFSET_SYMS];
|
|
101
|
+
unsigned char LITERAL_len [KWAJ_LITERAL_SYMS];
|
|
102
|
+
|
|
103
|
+
/* huffman decoding tables */
|
|
104
|
+
unsigned short MATCHLEN1_table [KWAJ_MATCHLEN1_TBLSIZE];
|
|
105
|
+
unsigned short MATCHLEN2_table [KWAJ_MATCHLEN2_TBLSIZE];
|
|
106
|
+
unsigned short LITLEN_table [KWAJ_LITLEN_TBLSIZE];
|
|
107
|
+
unsigned short OFFSET_table [KWAJ_OFFSET_TBLSIZE];
|
|
108
|
+
unsigned short LITERAL_table [KWAJ_LITERAL_TBLSIZE];
|
|
109
|
+
|
|
110
|
+
/* input buffer */
|
|
111
|
+
unsigned char inbuf[KWAJ_INPUT_SIZE];
|
|
112
|
+
|
|
113
|
+
/* history window */
|
|
114
|
+
unsigned char window[LZSS_WINDOW_SIZE];
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* This file is part of libmspack.
|
|
2
|
+
* (C) 2003-2004 Stuart Caie.
|
|
3
|
+
*
|
|
4
|
+
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
6
|
+
*
|
|
7
|
+
* For further details, see the file COPYING.LIB distributed with libmspack
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* KWAJ compression implementation */
|
|
11
|
+
|
|
12
|
+
#include <system.h>
|
|
13
|
+
#include <kwaj.h>
|
|
14
|
+
|
|
15
|
+
struct mskwaj_compressor *
|
|
16
|
+
mspack_create_kwaj_compressor(struct mspack_system *sys)
|
|
17
|
+
{
|
|
18
|
+
/* todo */
|
|
19
|
+
return NULL;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *self) {
|
|
23
|
+
/* todo */
|
|
24
|
+
}
|