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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* libmspack -- a library for working with Microsoft compression formats.
|
|
2
|
-
* (C) 2003-
|
|
2
|
+
* (C) 2003-2019 Stuart Caie <kyzer@cabextract.org.uk>
|
|
3
3
|
*
|
|
4
4
|
* libmspack is free software; you can redistribute it and/or modify it under
|
|
5
5
|
* the terms of the GNU Lesser General Public License (LGPL) version 2.1
|
|
@@ -308,8 +308,8 @@ struct mspack_system {
|
|
|
308
308
|
* @see close(), read(), write(), seek(), tell(), message()
|
|
309
309
|
*/
|
|
310
310
|
struct mspack_file * (*open)(struct mspack_system *self,
|
|
311
|
-
|
|
312
|
-
|
|
311
|
+
const char *filename,
|
|
312
|
+
int mode);
|
|
313
313
|
|
|
314
314
|
/**
|
|
315
315
|
* Closes a previously opened file. If any memory was allocated for this
|
|
@@ -328,12 +328,14 @@ struct mspack_system {
|
|
|
328
328
|
* @param bytes the number of bytes to read from the file.
|
|
329
329
|
* @return the number of bytes successfully read (this can be less than
|
|
330
330
|
* the number requested), zero to mark the end of file, or less
|
|
331
|
-
* than zero to indicate an error.
|
|
331
|
+
* than zero to indicate an error. The library does not "retry"
|
|
332
|
+
* reads and assumes short reads are due to EOF, so you should
|
|
333
|
+
* avoid returning short reads because of transient errors.
|
|
332
334
|
* @see open(), write()
|
|
333
335
|
*/
|
|
334
336
|
int (*read)(struct mspack_file *file,
|
|
335
|
-
|
|
336
|
-
|
|
337
|
+
void *buffer,
|
|
338
|
+
int bytes);
|
|
337
339
|
|
|
338
340
|
/**
|
|
339
341
|
* Writes a given number of bytes to an open file.
|
|
@@ -349,8 +351,8 @@ struct mspack_system {
|
|
|
349
351
|
* @see open(), read()
|
|
350
352
|
*/
|
|
351
353
|
int (*write)(struct mspack_file *file,
|
|
352
|
-
|
|
353
|
-
|
|
354
|
+
void *buffer,
|
|
355
|
+
int bytes);
|
|
354
356
|
|
|
355
357
|
/**
|
|
356
358
|
* Seeks to a specific file offset within an open file.
|
|
@@ -376,8 +378,8 @@ struct mspack_system {
|
|
|
376
378
|
* @see open(), tell()
|
|
377
379
|
*/
|
|
378
380
|
int (*seek)(struct mspack_file *file,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
+
off_t offset,
|
|
382
|
+
int mode);
|
|
381
383
|
|
|
382
384
|
/**
|
|
383
385
|
* Returns the current file position (in bytes) of the given file.
|
|
@@ -403,8 +405,8 @@ struct mspack_system {
|
|
|
403
405
|
* @see open()
|
|
404
406
|
*/
|
|
405
407
|
void (*message)(struct mspack_file *file,
|
|
406
|
-
|
|
407
|
-
|
|
408
|
+
const char *format,
|
|
409
|
+
...);
|
|
408
410
|
|
|
409
411
|
/**
|
|
410
412
|
* Allocates memory.
|
|
@@ -417,12 +419,12 @@ struct mspack_system {
|
|
|
417
419
|
* @see free()
|
|
418
420
|
*/
|
|
419
421
|
void * (*alloc)(struct mspack_system *self,
|
|
420
|
-
|
|
422
|
+
size_t bytes);
|
|
421
423
|
|
|
422
424
|
/**
|
|
423
425
|
* Frees memory.
|
|
424
426
|
*
|
|
425
|
-
* @param ptr the memory to be freed.
|
|
427
|
+
* @param ptr the memory to be freed. NULL is accepted and ignored.
|
|
426
428
|
* @see alloc()
|
|
427
429
|
*/
|
|
428
430
|
void (*free)(void *ptr);
|
|
@@ -440,8 +442,8 @@ struct mspack_system {
|
|
|
440
442
|
* @param bytes the size of the memory region, in bytes
|
|
441
443
|
*/
|
|
442
444
|
void (*copy)(void *src,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
+
void *dest,
|
|
446
|
+
size_t bytes);
|
|
445
447
|
|
|
446
448
|
/**
|
|
447
449
|
* A null pointer to mark the end of mspack_system. It must equal NULL.
|
|
@@ -932,6 +934,13 @@ struct mscabd_file {
|
|
|
932
934
|
#define MSCABD_PARAM_FIXMSZIP (1)
|
|
933
935
|
/** mscab_decompressor::set_param() parameter: size of decompression buffer */
|
|
934
936
|
#define MSCABD_PARAM_DECOMPBUF (2)
|
|
937
|
+
/** mscab_decompressor::set_param() parameter: salvage data from bad cabinets?
|
|
938
|
+
* If enabled, open() will skip file with bad folder indices or filenames
|
|
939
|
+
* rather than reject the whole cabinet, and extract() will limit rather than
|
|
940
|
+
* reject files with invalid offsets and lengths, and bad data block checksums
|
|
941
|
+
* will be ignored. Available only in CAB decoder version 2 and above.
|
|
942
|
+
*/
|
|
943
|
+
#define MSCABD_PARAM_SALVAGE (3)
|
|
935
944
|
|
|
936
945
|
/** TODO */
|
|
937
946
|
struct mscab_compressor {
|
|
@@ -967,7 +976,7 @@ struct mscab_decompressor {
|
|
|
967
976
|
* @see close(), search(), last_error()
|
|
968
977
|
*/
|
|
969
978
|
struct mscabd_cabinet * (*open) (struct mscab_decompressor *self,
|
|
970
|
-
|
|
979
|
+
const char *filename);
|
|
971
980
|
|
|
972
981
|
/**
|
|
973
982
|
* Closes a previously opened cabinet or cabinet set.
|
|
@@ -999,7 +1008,7 @@ struct mscab_decompressor {
|
|
|
999
1008
|
* @see open(), search(), append(), prepend()
|
|
1000
1009
|
*/
|
|
1001
1010
|
void (*close)(struct mscab_decompressor *self,
|
|
1002
|
-
|
|
1011
|
+
struct mscabd_cabinet *cab);
|
|
1003
1012
|
|
|
1004
1013
|
/**
|
|
1005
1014
|
* Searches a regular file for embedded cabinets.
|
|
@@ -1036,7 +1045,7 @@ struct mscab_decompressor {
|
|
|
1036
1045
|
* @see close(), open(), last_error()
|
|
1037
1046
|
*/
|
|
1038
1047
|
struct mscabd_cabinet * (*search) (struct mscab_decompressor *self,
|
|
1039
|
-
|
|
1048
|
+
const char *filename);
|
|
1040
1049
|
|
|
1041
1050
|
/**
|
|
1042
1051
|
* Appends one mscabd_cabinet to another, forming or extending a cabinet
|
|
@@ -1079,8 +1088,8 @@ struct mscab_decompressor {
|
|
|
1079
1088
|
* @see prepend(), open(), close()
|
|
1080
1089
|
*/
|
|
1081
1090
|
int (*append) (struct mscab_decompressor *self,
|
|
1082
|
-
|
|
1083
|
-
|
|
1091
|
+
struct mscabd_cabinet *cab,
|
|
1092
|
+
struct mscabd_cabinet *nextcab);
|
|
1084
1093
|
|
|
1085
1094
|
/**
|
|
1086
1095
|
* Prepends one mscabd_cabinet to another, forming or extending a
|
|
@@ -1101,8 +1110,8 @@ struct mscab_decompressor {
|
|
|
1101
1110
|
* @see append(), open(), close()
|
|
1102
1111
|
*/
|
|
1103
1112
|
int (*prepend) (struct mscab_decompressor *self,
|
|
1104
|
-
|
|
1105
|
-
|
|
1113
|
+
struct mscabd_cabinet *cab,
|
|
1114
|
+
struct mscabd_cabinet *prevcab);
|
|
1106
1115
|
|
|
1107
1116
|
/**
|
|
1108
1117
|
* Extracts a file from a cabinet or cabinet set.
|
|
@@ -1127,8 +1136,8 @@ struct mscab_decompressor {
|
|
|
1127
1136
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
1128
1137
|
*/
|
|
1129
1138
|
int (*extract)(struct mscab_decompressor *self,
|
|
1130
|
-
|
|
1131
|
-
|
|
1139
|
+
struct mscabd_file *file,
|
|
1140
|
+
const char *filename);
|
|
1132
1141
|
|
|
1133
1142
|
/**
|
|
1134
1143
|
* Sets a CAB decompression engine parameter.
|
|
@@ -1153,8 +1162,8 @@ struct mscab_decompressor {
|
|
|
1153
1162
|
* @see search(), extract()
|
|
1154
1163
|
*/
|
|
1155
1164
|
int (*set_param)(struct mscab_decompressor *self,
|
|
1156
|
-
|
|
1157
|
-
|
|
1165
|
+
int param,
|
|
1166
|
+
int value);
|
|
1158
1167
|
|
|
1159
1168
|
/**
|
|
1160
1169
|
* Returns the error code set by the most recently called method.
|
|
@@ -1439,8 +1448,8 @@ struct mschm_compressor {
|
|
|
1439
1448
|
* @see use_temporary_file() set_param()
|
|
1440
1449
|
*/
|
|
1441
1450
|
int (*generate)(struct mschm_compressor *self,
|
|
1442
|
-
|
|
1443
|
-
|
|
1451
|
+
struct mschmc_file file_list[],
|
|
1452
|
+
const char *output_file);
|
|
1444
1453
|
|
|
1445
1454
|
/**
|
|
1446
1455
|
* Specifies whether a temporary file is used during CHM generation.
|
|
@@ -1496,8 +1505,8 @@ struct mschm_compressor {
|
|
|
1496
1505
|
* @see generate()
|
|
1497
1506
|
*/
|
|
1498
1507
|
int (*use_temporary_file)(struct mschm_compressor *self,
|
|
1499
|
-
|
|
1500
|
-
|
|
1508
|
+
int use_temp_file,
|
|
1509
|
+
const char *temp_file);
|
|
1501
1510
|
/**
|
|
1502
1511
|
* Sets a CHM compression engine parameter.
|
|
1503
1512
|
*
|
|
@@ -1544,8 +1553,8 @@ struct mschm_compressor {
|
|
|
1544
1553
|
* @see generate()
|
|
1545
1554
|
*/
|
|
1546
1555
|
int (*set_param)(struct mschm_compressor *self,
|
|
1547
|
-
|
|
1548
|
-
|
|
1556
|
+
int param,
|
|
1557
|
+
int value);
|
|
1549
1558
|
|
|
1550
1559
|
/**
|
|
1551
1560
|
* Returns the error code set by the most recently called method.
|
|
@@ -1587,7 +1596,7 @@ struct mschm_decompressor {
|
|
|
1587
1596
|
* @see close()
|
|
1588
1597
|
*/
|
|
1589
1598
|
struct mschmd_header *(*open)(struct mschm_decompressor *self,
|
|
1590
|
-
|
|
1599
|
+
const char *filename);
|
|
1591
1600
|
|
|
1592
1601
|
/**
|
|
1593
1602
|
* Closes a previously opened CHM helpfile.
|
|
@@ -1607,7 +1616,7 @@ struct mschm_decompressor {
|
|
|
1607
1616
|
* @see open(), fast_open()
|
|
1608
1617
|
*/
|
|
1609
1618
|
void (*close)(struct mschm_decompressor *self,
|
|
1610
|
-
|
|
1619
|
+
struct mschmd_header *chm);
|
|
1611
1620
|
|
|
1612
1621
|
/**
|
|
1613
1622
|
* Extracts a file from a CHM helpfile.
|
|
@@ -1628,8 +1637,8 @@ struct mschm_decompressor {
|
|
|
1628
1637
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
1629
1638
|
*/
|
|
1630
1639
|
int (*extract)(struct mschm_decompressor *self,
|
|
1631
|
-
|
|
1632
|
-
|
|
1640
|
+
struct mschmd_file *file,
|
|
1641
|
+
const char *filename);
|
|
1633
1642
|
|
|
1634
1643
|
/**
|
|
1635
1644
|
* Returns the error code set by the most recently called method.
|
|
@@ -1667,7 +1676,7 @@ struct mschm_decompressor {
|
|
|
1667
1676
|
* @see open(), close(), fast_find(), extract()
|
|
1668
1677
|
*/
|
|
1669
1678
|
struct mschmd_header *(*fast_open)(struct mschm_decompressor *self,
|
|
1670
|
-
|
|
1679
|
+
const char *filename);
|
|
1671
1680
|
|
|
1672
1681
|
/**
|
|
1673
1682
|
* Finds file details quickly.
|
|
@@ -1708,10 +1717,10 @@ struct mschm_decompressor {
|
|
|
1708
1717
|
* @see open(), close(), fast_find(), extract()
|
|
1709
1718
|
*/
|
|
1710
1719
|
int (*fast_find)(struct mschm_decompressor *self,
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1720
|
+
struct mschmd_header *chm,
|
|
1721
|
+
const char *filename,
|
|
1722
|
+
struct mschmd_file *f_ptr,
|
|
1723
|
+
int f_size);
|
|
1715
1724
|
};
|
|
1716
1725
|
|
|
1717
1726
|
/* --- support for .LIT (EBook) file format -------------------------------- */
|
|
@@ -1817,9 +1826,9 @@ struct msszdd_compressor {
|
|
|
1817
1826
|
* @see set_param()
|
|
1818
1827
|
*/
|
|
1819
1828
|
int (*compress)(struct msszdd_compressor *self,
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1829
|
+
const char *input,
|
|
1830
|
+
const char *output,
|
|
1831
|
+
off_t length);
|
|
1823
1832
|
|
|
1824
1833
|
/**
|
|
1825
1834
|
* Sets an SZDD compression engine parameter.
|
|
@@ -1843,8 +1852,8 @@ struct msszdd_compressor {
|
|
|
1843
1852
|
* @see compress()
|
|
1844
1853
|
*/
|
|
1845
1854
|
int (*set_param)(struct msszdd_compressor *self,
|
|
1846
|
-
|
|
1847
|
-
|
|
1855
|
+
int param,
|
|
1856
|
+
int value);
|
|
1848
1857
|
|
|
1849
1858
|
/**
|
|
1850
1859
|
* Returns the error code set by the most recently called method.
|
|
@@ -1885,7 +1894,7 @@ struct msszdd_decompressor {
|
|
|
1885
1894
|
* @see close()
|
|
1886
1895
|
*/
|
|
1887
1896
|
struct msszddd_header *(*open)(struct msszdd_decompressor *self,
|
|
1888
|
-
|
|
1897
|
+
const char *filename);
|
|
1889
1898
|
|
|
1890
1899
|
/**
|
|
1891
1900
|
* Closes a previously opened SZDD file.
|
|
@@ -1901,7 +1910,7 @@ struct msszdd_decompressor {
|
|
|
1901
1910
|
* @see open()
|
|
1902
1911
|
*/
|
|
1903
1912
|
void (*close)(struct msszdd_decompressor *self,
|
|
1904
|
-
|
|
1913
|
+
struct msszddd_header *szdd);
|
|
1905
1914
|
|
|
1906
1915
|
/**
|
|
1907
1916
|
* Extracts the compressed data from a SZDD file.
|
|
@@ -1917,8 +1926,8 @@ struct msszdd_decompressor {
|
|
|
1917
1926
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
1918
1927
|
*/
|
|
1919
1928
|
int (*extract)(struct msszdd_decompressor *self,
|
|
1920
|
-
|
|
1921
|
-
|
|
1929
|
+
struct msszddd_header *szdd,
|
|
1930
|
+
const char *filename);
|
|
1922
1931
|
|
|
1923
1932
|
/**
|
|
1924
1933
|
* Decompresses an SZDD file to an output file in one step.
|
|
@@ -1938,8 +1947,8 @@ struct msszdd_decompressor {
|
|
|
1938
1947
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
1939
1948
|
*/
|
|
1940
1949
|
int (*decompress)(struct msszdd_decompressor *self,
|
|
1941
|
-
|
|
1942
|
-
|
|
1950
|
+
const char *input,
|
|
1951
|
+
const char *output);
|
|
1943
1952
|
|
|
1944
1953
|
/**
|
|
1945
1954
|
* Returns the error code set by the most recently called method.
|
|
@@ -2053,9 +2062,9 @@ struct mskwaj_compressor {
|
|
|
2053
2062
|
* @see set_param()
|
|
2054
2063
|
*/
|
|
2055
2064
|
int (*compress)(struct mskwaj_compressor *self,
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2065
|
+
const char *input,
|
|
2066
|
+
const char *output,
|
|
2067
|
+
off_t length);
|
|
2059
2068
|
|
|
2060
2069
|
/**
|
|
2061
2070
|
* Sets an KWAJ compression engine parameter.
|
|
@@ -2081,8 +2090,8 @@ struct mskwaj_compressor {
|
|
|
2081
2090
|
* @see generate()
|
|
2082
2091
|
*/
|
|
2083
2092
|
int (*set_param)(struct mskwaj_compressor *self,
|
|
2084
|
-
|
|
2085
|
-
|
|
2093
|
+
int param,
|
|
2094
|
+
int value);
|
|
2086
2095
|
|
|
2087
2096
|
|
|
2088
2097
|
/**
|
|
@@ -2103,7 +2112,7 @@ struct mskwaj_compressor {
|
|
|
2103
2112
|
* filename is too long
|
|
2104
2113
|
*/
|
|
2105
2114
|
int (*set_filename)(struct mskwaj_compressor *self,
|
|
2106
|
-
|
|
2115
|
+
const char *filename);
|
|
2107
2116
|
|
|
2108
2117
|
/**
|
|
2109
2118
|
* Sets arbitrary data that will be stored in the header of the
|
|
@@ -2123,8 +2132,8 @@ struct mskwaj_compressor {
|
|
|
2123
2132
|
* is too long
|
|
2124
2133
|
*/
|
|
2125
2134
|
int (*set_extra_data)(struct mskwaj_compressor *self,
|
|
2126
|
-
|
|
2127
|
-
|
|
2135
|
+
void *data,
|
|
2136
|
+
size_t bytes);
|
|
2128
2137
|
|
|
2129
2138
|
/**
|
|
2130
2139
|
* Returns the error code set by the most recently called method.
|
|
@@ -2165,7 +2174,7 @@ struct mskwaj_decompressor {
|
|
|
2165
2174
|
* @see close()
|
|
2166
2175
|
*/
|
|
2167
2176
|
struct mskwajd_header *(*open)(struct mskwaj_decompressor *self,
|
|
2168
|
-
|
|
2177
|
+
const char *filename);
|
|
2169
2178
|
|
|
2170
2179
|
/**
|
|
2171
2180
|
* Closes a previously opened KWAJ file.
|
|
@@ -2180,7 +2189,7 @@ struct mskwaj_decompressor {
|
|
|
2180
2189
|
* @see open()
|
|
2181
2190
|
*/
|
|
2182
2191
|
void (*close)(struct mskwaj_decompressor *self,
|
|
2183
|
-
|
|
2192
|
+
struct mskwajd_header *kwaj);
|
|
2184
2193
|
|
|
2185
2194
|
/**
|
|
2186
2195
|
* Extracts the compressed data from a KWAJ file.
|
|
@@ -2196,8 +2205,8 @@ struct mskwaj_decompressor {
|
|
|
2196
2205
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2197
2206
|
*/
|
|
2198
2207
|
int (*extract)(struct mskwaj_decompressor *self,
|
|
2199
|
-
|
|
2200
|
-
|
|
2208
|
+
struct mskwajd_header *kwaj,
|
|
2209
|
+
const char *filename);
|
|
2201
2210
|
|
|
2202
2211
|
/**
|
|
2203
2212
|
* Decompresses an KWAJ file to an output file in one step.
|
|
@@ -2217,8 +2226,8 @@ struct mskwaj_decompressor {
|
|
|
2217
2226
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2218
2227
|
*/
|
|
2219
2228
|
int (*decompress)(struct mskwaj_decompressor *self,
|
|
2220
|
-
|
|
2221
|
-
|
|
2229
|
+
const char *input,
|
|
2230
|
+
const char *output);
|
|
2222
2231
|
|
|
2223
2232
|
/**
|
|
2224
2233
|
* Returns the error code set by the most recently called method.
|
|
@@ -2259,8 +2268,8 @@ struct msoab_compressor {
|
|
|
2259
2268
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2260
2269
|
*/
|
|
2261
2270
|
int (*compress) (struct msoab_compressor *self,
|
|
2262
|
-
|
|
2263
|
-
|
|
2271
|
+
const char *input,
|
|
2272
|
+
const char *output);
|
|
2264
2273
|
|
|
2265
2274
|
/**
|
|
2266
2275
|
* Generate a compressed incremental OAB patch file.
|
|
@@ -2283,9 +2292,9 @@ struct msoab_compressor {
|
|
|
2283
2292
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2284
2293
|
*/
|
|
2285
2294
|
int (*compress_incremental) (struct msoab_compressor *self,
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2295
|
+
const char *input,
|
|
2296
|
+
const char *base,
|
|
2297
|
+
const char *output);
|
|
2289
2298
|
};
|
|
2290
2299
|
|
|
2291
2300
|
/**
|
|
@@ -2312,8 +2321,8 @@ struct msoab_decompressor {
|
|
|
2312
2321
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2313
2322
|
*/
|
|
2314
2323
|
int (*decompress) (struct msoab_decompressor *self,
|
|
2315
|
-
|
|
2316
|
-
|
|
2324
|
+
const char *input,
|
|
2325
|
+
const char *output);
|
|
2317
2326
|
|
|
2318
2327
|
/**
|
|
2319
2328
|
* Decompresses an Offline Address Book with an incremental patch file.
|
|
@@ -2341,11 +2350,34 @@ struct msoab_decompressor {
|
|
|
2341
2350
|
* @return an error code, or MSPACK_ERR_OK if successful
|
|
2342
2351
|
*/
|
|
2343
2352
|
int (*decompress_incremental) (struct msoab_decompressor *self,
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2353
|
+
const char *input,
|
|
2354
|
+
const char *base,
|
|
2355
|
+
const char *output);
|
|
2356
|
+
|
|
2357
|
+
/**
|
|
2358
|
+
* Sets an OAB decompression engine parameter. Available only in OAB
|
|
2359
|
+
* decompressor version 2 and above.
|
|
2360
|
+
*
|
|
2361
|
+
* - #MSOABD_PARAM_DECOMPBUF: How many bytes should be used as an input
|
|
2362
|
+
* buffer by decompressors? The minimum value is 16. The default value
|
|
2363
|
+
* is 4096.
|
|
2364
|
+
*
|
|
2365
|
+
* @param self a self-referential pointer to the msoab_decompressor
|
|
2366
|
+
* instance being called
|
|
2367
|
+
* @param param the parameter to set
|
|
2368
|
+
* @param value the value to set the parameter to
|
|
2369
|
+
* @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there
|
|
2370
|
+
* is a problem with either parameter or value.
|
|
2371
|
+
*/
|
|
2372
|
+
int (*set_param)(struct msoab_decompressor *self,
|
|
2373
|
+
int param,
|
|
2374
|
+
int value);
|
|
2375
|
+
|
|
2347
2376
|
};
|
|
2348
2377
|
|
|
2378
|
+
/** msoab_decompressor::set_param() parameter: size of decompression buffer */
|
|
2379
|
+
#define MSOABD_PARAM_DECOMPBUF (0)
|
|
2380
|
+
|
|
2349
2381
|
#ifdef __cplusplus
|
|
2350
2382
|
}
|
|
2351
2383
|
#endif
|
|
@@ -32,14 +32,14 @@ extern "C" {
|
|
|
32
32
|
# define MSZIP_LITERAL_TABLESIZE (MSZIP_LITERAL_MAXSYMBOLS * 4)
|
|
33
33
|
#else
|
|
34
34
|
# define MSZIP_LITERAL_TABLESIZE ((1 << MSZIP_LITERAL_TABLEBITS) + \
|
|
35
|
-
|
|
35
|
+
(MSZIP_LITERAL_MAXSYMBOLS * 2))
|
|
36
36
|
#endif
|
|
37
37
|
|
|
38
38
|
#if (1 << MSZIP_DISTANCE_TABLEBITS) < (MSZIP_DISTANCE_MAXSYMBOLS * 2)
|
|
39
39
|
# define MSZIP_DISTANCE_TABLESIZE (MSZIP_DISTANCE_MAXSYMBOLS * 4)
|
|
40
40
|
#else
|
|
41
41
|
# define MSZIP_DISTANCE_TABLESIZE ((1 << MSZIP_DISTANCE_TABLEBITS) + \
|
|
42
|
-
|
|
42
|
+
(MSZIP_DISTANCE_MAXSYMBOLS * 2))
|
|
43
43
|
#endif
|
|
44
44
|
|
|
45
45
|
struct mszipd_stream {
|
|
@@ -83,10 +83,10 @@ struct mszipd_stream {
|
|
|
83
83
|
* a partial recovery of erroneous data.
|
|
84
84
|
*/
|
|
85
85
|
extern struct mszipd_stream *mszipd_init(struct mspack_system *system,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
struct mspack_file *input,
|
|
87
|
+
struct mspack_file *output,
|
|
88
|
+
int input_buffer_size,
|
|
89
|
+
int repair_mode);
|
|
90
90
|
|
|
91
91
|
/* decompresses, or decompresses more of, an MS-ZIP stream.
|
|
92
92
|
*
|