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.
- checksums.yaml +5 -5
- data/.github/workflows/rake.yml +37 -0
- data/.gitignore +2 -0
- data/.yardopts +1 -1
- data/README.md +1 -1
- data/Rakefile +11 -5
- data/ext/Rakefile +1 -1
- data/ext/libmspack/AUTHORS +1 -0
- data/ext/libmspack/ChangeLog +321 -4
- data/ext/libmspack/INSTALL +368 -0
- data/ext/libmspack/Makefile.am +86 -95
- data/ext/libmspack/Makefile.in +1729 -0
- data/ext/libmspack/README +30 -30
- data/ext/libmspack/acinclude.m4 +99 -0
- data/ext/libmspack/aclocal.m4 +1218 -0
- data/ext/libmspack/ar-lib +270 -0
- data/ext/libmspack/compile +347 -0
- data/ext/libmspack/config.guess +1480 -0
- data/ext/libmspack/config.h.in +129 -0
- data/ext/libmspack/config.sub +1801 -0
- data/ext/libmspack/configure +15487 -0
- data/ext/libmspack/configure.ac +11 -13
- data/ext/libmspack/depcomp +791 -0
- data/ext/libmspack/install-sh +508 -0
- data/ext/libmspack/libmscabd.la +41 -0
- data/ext/libmspack/libmschmd.la +41 -0
- data/ext/libmspack/libmspack.la +41 -0
- data/ext/libmspack/ltmain.sh +11156 -0
- data/ext/libmspack/m4/libtool.m4 +8387 -0
- data/ext/libmspack/m4/ltoptions.m4 +437 -0
- data/ext/libmspack/m4/ltsugar.m4 +124 -0
- data/ext/libmspack/m4/ltversion.m4 +23 -0
- data/ext/libmspack/m4/lt~obsolete.m4 +99 -0
- data/ext/libmspack/missing +215 -0
- data/ext/libmspack/mspack/cab.h +20 -7
- data/ext/libmspack/mspack/cabd.c +301 -236
- data/ext/libmspack/mspack/chmd.c +304 -319
- data/ext/libmspack/mspack/crc32.c +52 -52
- data/ext/libmspack/mspack/crc32.h +1 -1
- data/ext/libmspack/mspack/kwajd.c +178 -172
- data/ext/libmspack/mspack/lzss.h +4 -4
- data/ext/libmspack/mspack/lzssd.c +42 -42
- data/ext/libmspack/mspack/lzx.h +11 -11
- data/ext/libmspack/mspack/lzxd.c +370 -361
- data/ext/libmspack/mspack/mspack.h +109 -77
- data/ext/libmspack/mspack/mszip.h +6 -6
- data/ext/libmspack/mspack/mszipd.c +140 -139
- data/ext/libmspack/mspack/oab.h +1 -0
- data/ext/libmspack/mspack/oabd.c +71 -73
- data/ext/libmspack/mspack/qtm.h +4 -4
- data/ext/libmspack/mspack/qtmd.c +118 -117
- data/ext/libmspack/mspack/readbits.h +52 -52
- data/ext/libmspack/mspack/readhuff.h +61 -61
- data/ext/libmspack/mspack/system.c +15 -9
- data/ext/libmspack/mspack/system.h +38 -50
- data/ext/libmspack/mspack/szddd.c +35 -35
- data/ext/libmspack/test-driver +148 -0
- data/ext/x86_64-linux/libmspack.so +0 -0
- data/ext/x86_64-windows/mspack.dll +0 -0
- data/lib/libmspack/version.rb +2 -1
- data/lib/libmspack.rb +1 -1
- data/libmspack.gemspec +4 -4
- data/spec/libmspack_spec.rb +5 -4
- metadata +38 -105
- data/.travis.yml +0 -5
- data/ext/i386-windows/libmspack.dll +0 -0
- data/ext/libmspack/cleanup.sh +0 -9
- data/ext/libmspack/debian/changelog +0 -6
- data/ext/libmspack/debian/control +0 -14
- data/ext/libmspack/debian/rules +0 -101
- data/ext/libmspack/doc/Doxyfile.in +0 -22
- data/ext/libmspack/doc/Makefile.in +0 -14
- data/ext/libmspack/doc/szdd_kwaj_format.html +0 -331
- data/ext/libmspack/mspack/mspack.def +0 -28
- data/ext/libmspack/mspack/qtmc.c +0 -18
- data/ext/libmspack/rebuild.sh +0 -8
- data/ext/libmspack/test/cabd_c10 +0 -19
- data/ext/libmspack/test/cabd_compare +0 -34
- data/ext/libmspack/test/cabd_md5.c +0 -161
- data/ext/libmspack/test/cabd_memory.c +0 -179
- data/ext/libmspack/test/cabd_test.c +0 -386
- data/ext/libmspack/test/cabrip.c +0 -81
- data/ext/libmspack/test/chmd_compare +0 -38
- data/ext/libmspack/test/chmd_find.c +0 -95
- data/ext/libmspack/test/chmd_md5.c +0 -67
- data/ext/libmspack/test/chmd_order.c +0 -144
- data/ext/libmspack/test/chminfo.c +0 -284
- data/ext/libmspack/test/chmx.c +0 -216
- data/ext/libmspack/test/error.h +0 -22
- data/ext/libmspack/test/expand.c +0 -79
- data/ext/libmspack/test/md5.c +0 -457
- data/ext/libmspack/test/md5.h +0 -165
- data/ext/libmspack/test/md5_fh.h +0 -123
- data/ext/libmspack/test/msdecompile_md5 +0 -24
- data/ext/libmspack/test/msexpand_md5 +0 -39
- data/ext/libmspack/test/multifh.c +0 -435
- data/ext/libmspack/test/oabx.c +0 -41
- data/ext/libmspack/test/test_files/cabd/1.pl +0 -84
- data/ext/libmspack/test/test_files/cabd/2.pl +0 -75
- 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 +0 -26
- data/ext/libmspack.h +0 -259
- data/ext/x86_64-windows/libmspack.dll +0 -0
|
@@ -14,31 +14,31 @@
|
|
|
14
14
|
#include <system.h>
|
|
15
15
|
#include <lzss.h>
|
|
16
16
|
|
|
17
|
-
#define ENSURE_BYTES do {
|
|
18
|
-
if (i_ptr >= i_end) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (read <= 0) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
i_ptr = &inbuf[0]; i_end = &inbuf[read];
|
|
27
|
-
}
|
|
17
|
+
#define ENSURE_BYTES do { \
|
|
18
|
+
if (i_ptr >= i_end) { \
|
|
19
|
+
read = system->read(input, &inbuf[0], \
|
|
20
|
+
input_buffer_size); \
|
|
21
|
+
if (read <= 0) { \
|
|
22
|
+
system->free(window); \
|
|
23
|
+
return (read < 0) ? MSPACK_ERR_READ \
|
|
24
|
+
: MSPACK_ERR_OK; \
|
|
25
|
+
} \
|
|
26
|
+
i_ptr = &inbuf[0]; i_end = &inbuf[read]; \
|
|
27
|
+
} \
|
|
28
28
|
} while (0)
|
|
29
29
|
|
|
30
|
-
#define WRITE_BYTE do {
|
|
31
|
-
if (system->write(output, &window[pos], 1) != 1) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
30
|
+
#define WRITE_BYTE do { \
|
|
31
|
+
if (system->write(output, &window[pos], 1) != 1) { \
|
|
32
|
+
system->free(window); \
|
|
33
|
+
return MSPACK_ERR_WRITE; \
|
|
34
|
+
} \
|
|
35
35
|
} while (0)
|
|
36
36
|
|
|
37
37
|
int lzss_decompress(struct mspack_system *system,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
struct mspack_file *input,
|
|
39
|
+
struct mspack_file *output,
|
|
40
|
+
int input_buffer_size,
|
|
41
|
+
int mode)
|
|
42
42
|
{
|
|
43
43
|
unsigned char *window, *inbuf, *i_ptr, *i_end;
|
|
44
44
|
unsigned int pos, i, c, invert, mpos, len;
|
|
@@ -48,7 +48,7 @@ int lzss_decompress(struct mspack_system *system,
|
|
|
48
48
|
if (!system || input_buffer_size < 1 || (mode != LZSS_MODE_EXPAND &&
|
|
49
49
|
mode != LZSS_MODE_MSHELP && mode != LZSS_MODE_QBASIC))
|
|
50
50
|
{
|
|
51
|
-
|
|
51
|
+
return MSPACK_ERR_ARGS;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/* allocate memory */
|
|
@@ -64,27 +64,27 @@ int lzss_decompress(struct mspack_system *system,
|
|
|
64
64
|
|
|
65
65
|
/* loop forever; exit condition is in ENSURE_BYTES macro */
|
|
66
66
|
for (;;) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
67
|
+
ENSURE_BYTES; c = *i_ptr++ ^ invert;
|
|
68
|
+
for (i = 0x01; i & 0xFF; i <<= 1) {
|
|
69
|
+
if (c & i) {
|
|
70
|
+
/* literal */
|
|
71
|
+
ENSURE_BYTES; window[pos] = *i_ptr++;
|
|
72
|
+
WRITE_BYTE;
|
|
73
|
+
pos++; pos &= LZSS_WINDOW_SIZE - 1;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
/* match */
|
|
77
|
+
ENSURE_BYTES; mpos = *i_ptr++;
|
|
78
|
+
ENSURE_BYTES; mpos |= (*i_ptr & 0xF0) << 4;
|
|
79
|
+
len = (*i_ptr++ & 0x0F) + 3;
|
|
80
|
+
while (len--) {
|
|
81
|
+
window[pos] = window[mpos];
|
|
82
|
+
WRITE_BYTE;
|
|
83
|
+
pos++; pos &= LZSS_WINDOW_SIZE - 1;
|
|
84
|
+
mpos++; mpos &= LZSS_WINDOW_SIZE - 1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/* not reached */
|
data/ext/libmspack/mspack/lzx.h
CHANGED
|
@@ -89,13 +89,13 @@ struct lzxd_stream {
|
|
|
89
89
|
|
|
90
90
|
/* huffman decoding tables */
|
|
91
91
|
unsigned short PRETREE_table [(1 << LZX_PRETREE_TABLEBITS) +
|
|
92
|
-
|
|
92
|
+
(LZX_PRETREE_MAXSYMBOLS * 2)];
|
|
93
93
|
unsigned short MAINTREE_table[(1 << LZX_MAINTREE_TABLEBITS) +
|
|
94
|
-
|
|
94
|
+
(LZX_MAINTREE_MAXSYMBOLS * 2)];
|
|
95
95
|
unsigned short LENGTH_table [(1 << LZX_LENGTH_TABLEBITS) +
|
|
96
|
-
|
|
96
|
+
(LZX_LENGTH_MAXSYMBOLS * 2)];
|
|
97
97
|
unsigned short ALIGNED_table [(1 << LZX_ALIGNED_TABLEBITS) +
|
|
98
|
-
|
|
98
|
+
(LZX_ALIGNED_MAXSYMBOLS * 2)];
|
|
99
99
|
unsigned char LENGTH_empty;
|
|
100
100
|
|
|
101
101
|
/* this is used purely for doing the intel E8 transform */
|
|
@@ -145,17 +145,17 @@ struct lzxd_stream {
|
|
|
145
145
|
* there was not enough memory or parameters to the function were wrong.
|
|
146
146
|
*/
|
|
147
147
|
extern struct lzxd_stream *lzxd_init(struct mspack_system *system,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
148
|
+
struct mspack_file *input,
|
|
149
|
+
struct mspack_file *output,
|
|
150
|
+
int window_bits,
|
|
151
|
+
int reset_interval,
|
|
152
|
+
int input_buffer_size,
|
|
153
|
+
off_t output_length,
|
|
154
154
|
char is_delta);
|
|
155
155
|
|
|
156
156
|
/* see description of output_length in lzxd_init() */
|
|
157
157
|
extern void lzxd_set_output_length(struct lzxd_stream *lzx,
|
|
158
|
-
|
|
158
|
+
off_t output_length);
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
161
|
* Reads LZX DELTA reference data into the window and allows
|