libmspack 0.0.5 → 0.10.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
*
|