diff options
Diffstat (limited to 'rbutil/rbutilqt/mspack/szddd.c')
-rw-r--r-- | rbutil/rbutilqt/mspack/szddd.c | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/rbutil/rbutilqt/mspack/szddd.c b/rbutil/rbutilqt/mspack/szddd.c index af77f15565..1d6d05f844 100644 --- a/rbutil/rbutilqt/mspack/szddd.c +++ b/rbutil/rbutilqt/mspack/szddd.c | |||
@@ -66,8 +66,8 @@ void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *base) | |||
66 | { | 66 | { |
67 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; | 67 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; |
68 | if (self) { | 68 | if (self) { |
69 | struct mspack_system *sys = self->system; | 69 | struct mspack_system *sys = self->system; |
70 | sys->free(self); | 70 | sys->free(self); |
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
@@ -77,7 +77,7 @@ void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *base) | |||
77 | * opens an SZDD file without decompressing, reads header | 77 | * opens an SZDD file without decompressing, reads header |
78 | */ | 78 | */ |
79 | static struct msszddd_header *szddd_open(struct msszdd_decompressor *base, | 79 | static struct msszddd_header *szddd_open(struct msszdd_decompressor *base, |
80 | const char *filename) | 80 | const char *filename) |
81 | { | 81 | { |
82 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; | 82 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; |
83 | struct msszddd_header *hdr; | 83 | struct msszddd_header *hdr; |
@@ -90,18 +90,18 @@ static struct msszddd_header *szddd_open(struct msszdd_decompressor *base, | |||
90 | fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ); | 90 | fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ); |
91 | hdr = (struct msszddd_header *) sys->alloc(sys, sizeof(struct msszddd_header_p)); | 91 | hdr = (struct msszddd_header *) sys->alloc(sys, sizeof(struct msszddd_header_p)); |
92 | if (fh && hdr) { | 92 | if (fh && hdr) { |
93 | ((struct msszddd_header_p *) hdr)->fh = fh; | 93 | ((struct msszddd_header_p *) hdr)->fh = fh; |
94 | self->error = szddd_read_headers(sys, fh, hdr); | 94 | self->error = szddd_read_headers(sys, fh, hdr); |
95 | } | 95 | } |
96 | else { | 96 | else { |
97 | if (!fh) self->error = MSPACK_ERR_OPEN; | 97 | if (!fh) self->error = MSPACK_ERR_OPEN; |
98 | if (!hdr) self->error = MSPACK_ERR_NOMEMORY; | 98 | if (!hdr) self->error = MSPACK_ERR_NOMEMORY; |
99 | } | 99 | } |
100 | 100 | ||
101 | if (self->error) { | 101 | if (self->error) { |
102 | if (fh) sys->close(fh); | 102 | if (fh) sys->close(fh); |
103 | if (hdr) sys->free(hdr); | 103 | sys->free(hdr); |
104 | hdr = NULL; | 104 | hdr = NULL; |
105 | } | 105 | } |
106 | 106 | ||
107 | return hdr; | 107 | return hdr; |
@@ -113,7 +113,7 @@ static struct msszddd_header *szddd_open(struct msszdd_decompressor *base, | |||
113 | * closes an SZDD file | 113 | * closes an SZDD file |
114 | */ | 114 | */ |
115 | static void szddd_close(struct msszdd_decompressor *base, | 115 | static void szddd_close(struct msszdd_decompressor *base, |
116 | struct msszddd_header *hdr) | 116 | struct msszddd_header *hdr) |
117 | { | 117 | { |
118 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; | 118 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; |
119 | struct msszddd_header_p *hdr_p = (struct msszddd_header_p *) hdr; | 119 | struct msszddd_header_p *hdr_p = (struct msszddd_header_p *) hdr; |
@@ -142,33 +142,33 @@ static unsigned char szdd_signature_qbasic[8] = { | |||
142 | }; | 142 | }; |
143 | 143 | ||
144 | static int szddd_read_headers(struct mspack_system *sys, | 144 | static int szddd_read_headers(struct mspack_system *sys, |
145 | struct mspack_file *fh, | 145 | struct mspack_file *fh, |
146 | struct msszddd_header *hdr) | 146 | struct msszddd_header *hdr) |
147 | { | 147 | { |
148 | unsigned char buf[8]; | 148 | unsigned char buf[8]; |
149 | 149 | ||
150 | /* read and check signature */ | 150 | /* read and check signature */ |
151 | if (sys->read(fh, buf, 8) != 8) return MSPACK_ERR_READ; | 151 | if (sys->read(fh, buf, 8) != 8) return MSPACK_ERR_READ; |
152 | 152 | ||
153 | if ((mspack_memcmp(buf, szdd_signature_expand, 8) == 0)) { | 153 | if ((memcmp(buf, szdd_signature_expand, 8) == 0)) { |
154 | /* common SZDD */ | 154 | /* common SZDD */ |
155 | hdr->format = MSSZDD_FMT_NORMAL; | 155 | hdr->format = MSSZDD_FMT_NORMAL; |
156 | 156 | ||
157 | /* read the rest of the header */ | 157 | /* read the rest of the header */ |
158 | if (sys->read(fh, buf, 6) != 6) return MSPACK_ERR_READ; | 158 | if (sys->read(fh, buf, 6) != 6) return MSPACK_ERR_READ; |
159 | if (buf[0] != 0x41) return MSPACK_ERR_DATAFORMAT; | 159 | if (buf[0] != 0x41) return MSPACK_ERR_DATAFORMAT; |
160 | hdr->missing_char = buf[1]; | 160 | hdr->missing_char = buf[1]; |
161 | hdr->length = EndGetI32(&buf[2]); | 161 | hdr->length = EndGetI32(&buf[2]); |
162 | } | 162 | } |
163 | else if ((mspack_memcmp(buf, szdd_signature_qbasic, 8) == 0)) { | 163 | else if ((memcmp(buf, szdd_signature_qbasic, 8) == 0)) { |
164 | /* special QBasic SZDD */ | 164 | /* special QBasic SZDD */ |
165 | hdr->format = MSSZDD_FMT_QBASIC; | 165 | hdr->format = MSSZDD_FMT_QBASIC; |
166 | if (sys->read(fh, buf, 4) != 4) return MSPACK_ERR_READ; | 166 | if (sys->read(fh, buf, 4) != 4) return MSPACK_ERR_READ; |
167 | hdr->missing_char = '\0'; | 167 | hdr->missing_char = '\0'; |
168 | hdr->length = EndGetI32(buf); | 168 | hdr->length = EndGetI32(buf); |
169 | } | 169 | } |
170 | else { | 170 | else { |
171 | return MSPACK_ERR_SIGNATURE; | 171 | return MSPACK_ERR_SIGNATURE; |
172 | } | 172 | } |
173 | return MSPACK_ERR_OK; | 173 | return MSPACK_ERR_OK; |
174 | } | 174 | } |
@@ -179,7 +179,7 @@ static int szddd_read_headers(struct mspack_system *sys, | |||
179 | * decompresses an SZDD file | 179 | * decompresses an SZDD file |
180 | */ | 180 | */ |
181 | static int szddd_extract(struct msszdd_decompressor *base, | 181 | static int szddd_extract(struct msszdd_decompressor *base, |
182 | struct msszddd_header *hdr, const char *filename) | 182 | struct msszddd_header *hdr, const char *filename) |
183 | { | 183 | { |
184 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; | 184 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; |
185 | struct mspack_file *fh, *outfh; | 185 | struct mspack_file *fh, *outfh; |
@@ -195,19 +195,19 @@ static int szddd_extract(struct msszdd_decompressor *base, | |||
195 | /* seek to the compressed data */ | 195 | /* seek to the compressed data */ |
196 | data_offset = (hdr->format == MSSZDD_FMT_NORMAL) ? 14 : 12; | 196 | data_offset = (hdr->format == MSSZDD_FMT_NORMAL) ? 14 : 12; |
197 | if (sys->seek(fh, data_offset, MSPACK_SYS_SEEK_START)) { | 197 | if (sys->seek(fh, data_offset, MSPACK_SYS_SEEK_START)) { |
198 | return self->error = MSPACK_ERR_SEEK; | 198 | return self->error = MSPACK_ERR_SEEK; |
199 | } | 199 | } |
200 | 200 | ||
201 | /* open file for output */ | 201 | /* open file for output */ |
202 | if (!(outfh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { | 202 | if (!(outfh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { |
203 | return self->error = MSPACK_ERR_OPEN; | 203 | return self->error = MSPACK_ERR_OPEN; |
204 | } | 204 | } |
205 | 205 | ||
206 | /* decompress the data */ | 206 | /* decompress the data */ |
207 | self->error = lzss_decompress(sys, fh, outfh, SZDD_INPUT_SIZE, | 207 | self->error = lzss_decompress(sys, fh, outfh, SZDD_INPUT_SIZE, |
208 | hdr->format == MSSZDD_FMT_NORMAL | 208 | hdr->format == MSSZDD_FMT_NORMAL |
209 | ? LZSS_MODE_EXPAND | 209 | ? LZSS_MODE_EXPAND |
210 | : LZSS_MODE_QBASIC); | 210 | : LZSS_MODE_QBASIC); |
211 | 211 | ||
212 | /* close output file */ | 212 | /* close output file */ |
213 | sys->close(outfh); | 213 | sys->close(outfh); |
@@ -221,7 +221,7 @@ static int szddd_extract(struct msszdd_decompressor *base, | |||
221 | * unpacks directly from input to output | 221 | * unpacks directly from input to output |
222 | */ | 222 | */ |
223 | static int szddd_decompress(struct msszdd_decompressor *base, | 223 | static int szddd_decompress(struct msszdd_decompressor *base, |
224 | const char *input, const char *output) | 224 | const char *input, const char *output) |
225 | { | 225 | { |
226 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; | 226 | struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; |
227 | struct msszddd_header *hdr; | 227 | struct msszddd_header *hdr; |