libmspack
Loading...
Searching...
No Matches
mspack.h
Go to the documentation of this file.
1/* libmspack -- a library for working with Microsoft compression formats.
2 * (C) 2003-2019 Stuart Caie <kyzer@cabextract.org.uk>
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 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
15 */
16
158#ifndef LIB_MSPACK_H
159#define LIB_MSPACK_H 1
160
161#ifdef __cplusplus
162extern "C" {
163#endif
164
165#include <sys/types.h>
166#include <stdlib.h>
167
191#define MSPACK_SYS_SELFTEST(result) do { \
192 (result) = mspack_sys_selftest_internal(sizeof(off_t)); \
193} while (0)
194
197
229extern int mspack_version(int entity);
230
232#define MSPACK_VER_LIBRARY (0)
234#define MSPACK_VER_SYSTEM (1)
236#define MSPACK_VER_MSCABD (2)
238#define MSPACK_VER_MSCABC (3)
240#define MSPACK_VER_MSCHMD (4)
242#define MSPACK_VER_MSCHMC (5)
244#define MSPACK_VER_MSLITD (6)
246#define MSPACK_VER_MSLITC (7)
248#define MSPACK_VER_MSHLPD (8)
250#define MSPACK_VER_MSHLPC (9)
252#define MSPACK_VER_MSSZDDD (10)
254#define MSPACK_VER_MSSZDDC (11)
256#define MSPACK_VER_MSKWAJD (12)
258#define MSPACK_VER_MSKWAJC (13)
260#define MSPACK_VER_MSOABD (14)
262#define MSPACK_VER_MSOABC (15)
263
264/* --- file I/O abstraction ------------------------------------------------ */
265
310 struct mspack_file * (*open)(struct mspack_system *self,
311 const char *filename,
312 int mode);
313
321 void (*close)(struct mspack_file *file);
322
336 int (*read)(struct mspack_file *file,
337 void *buffer,
338 int bytes);
339
353 int (*write)(struct mspack_file *file,
354 void *buffer,
355 int bytes);
356
380 int (*seek)(struct mspack_file *file,
381 off_t offset,
382 int mode);
383
391 off_t (*tell)(struct mspack_file *file);
392
407 void (*message)(struct mspack_file *file,
408 const char *format,
409 ...);
410
421 void * (*alloc)(struct mspack_system *self,
422 size_t bytes);
423
430 void (*free)(void *ptr);
431
444 void (*copy)(void *src,
445 void *dest,
446 size_t bytes);
447
454 void *null_ptr;
455};
456
458#define MSPACK_SYS_OPEN_READ (0)
460#define MSPACK_SYS_OPEN_WRITE (1)
462#define MSPACK_SYS_OPEN_UPDATE (2)
464#define MSPACK_SYS_OPEN_APPEND (3)
465
467#define MSPACK_SYS_SEEK_START (0)
469#define MSPACK_SYS_SEEK_CUR (1)
471#define MSPACK_SYS_SEEK_END (2)
472
479 int dummy;
480};
481
482/* --- error codes --------------------------------------------------------- */
483
485#define MSPACK_ERR_OK (0)
487#define MSPACK_ERR_ARGS (1)
489#define MSPACK_ERR_OPEN (2)
491#define MSPACK_ERR_READ (3)
493#define MSPACK_ERR_WRITE (4)
495#define MSPACK_ERR_SEEK (5)
497#define MSPACK_ERR_NOMEMORY (6)
499#define MSPACK_ERR_SIGNATURE (7)
501#define MSPACK_ERR_DATAFORMAT (8)
503#define MSPACK_ERR_CHECKSUM (9)
505#define MSPACK_ERR_CRUNCH (10)
507#define MSPACK_ERR_DECRUNCH (11)
508
509/* --- functions available in library -------------------------------------- */
510
515extern struct mscab_compressor *
517
522extern struct mscab_decompressor *
524
529
534
535
540extern struct mschm_compressor *
542
547extern struct mschm_decompressor *
549
554
559
560
565extern struct mslit_compressor *
567
572extern struct mslit_decompressor *
574
579
584
585
590extern struct mshlp_compressor *
592
597extern struct mshlp_decompressor *
599
604
609
610
615extern struct msszdd_compressor *
617
622extern struct msszdd_decompressor *
624
629
634
635
640extern struct mskwaj_compressor *
642
647extern struct mskwaj_decompressor *
649
654
659
660
665extern struct msoab_compressor *
667
672extern struct msoab_decompressor *
674
679
684
685
686/* --- support for .CAB (MS Cabinet) file format --------------------------- */
687
706
712 const char *filename;
713
716
718 unsigned int length;
719
722
725
727 char *prevname;
728
730 char *nextname;
731
735 char *previnfo;
736
740 char *nextinfo;
741
744
747
752 unsigned short set_id;
753
759 unsigned short set_index;
760
771 unsigned short header_resv;
772
784 int flags;
785};
786
788#define MSCAB_HDR_RESV_OFFSET (0x28)
789
791#define MSCAB_HDR_PREVCAB (0x01)
793#define MSCAB_HDR_NEXTCAB (0x02)
795#define MSCAB_HDR_RESV (0x04)
796
812
823
829 unsigned int num_blocks;
830};
831
839#define MSCABD_COMP_METHOD(comp_type) ((comp_type) & 0x0F)
847#define MSCABD_COMP_LEVEL(comp_type) (((comp_type) >> 8) & 0x1F)
848
850#define MSCAB_COMP_NONE (0)
852#define MSCAB_COMP_MSZIP (1)
854#define MSCAB_COMP_QUANTUM (2)
856#define MSCAB_COMP_LZX (3)
857
869
878 char *filename;
879
881 unsigned int length;
882
896
898 char time_h;
900 char time_m;
902 char time_s;
903
905 char date_d;
907 char date_m;
910
913
915 unsigned int offset;
916};
917
919#define MSCAB_ATTRIB_RDONLY (0x01)
921#define MSCAB_ATTRIB_HIDDEN (0x02)
923#define MSCAB_ATTRIB_SYSTEM (0x04)
925#define MSCAB_ATTRIB_ARCH (0x20)
927#define MSCAB_ATTRIB_EXEC (0x40)
929#define MSCAB_ATTRIB_UTF_NAME (0x80)
930
932#define MSCABD_PARAM_SEARCHBUF (0)
934#define MSCABD_PARAM_FIXMSZIP (1)
936#define MSCABD_PARAM_DECOMPBUF (2)
943#define MSCABD_PARAM_SALVAGE (3)
944
947 int dummy;
948};
949
978 struct mscabd_cabinet * (*open) (struct mscab_decompressor *self,
979 const char *filename);
980
1010 void (*close)(struct mscab_decompressor *self,
1011 struct mscabd_cabinet *cab);
1012
1047 struct mscabd_cabinet * (*search) (struct mscab_decompressor *self,
1048 const char *filename);
1049
1090 int (*append) (struct mscab_decompressor *self,
1091 struct mscabd_cabinet *cab,
1092 struct mscabd_cabinet *nextcab);
1093
1112 int (*prepend) (struct mscab_decompressor *self,
1113 struct mscabd_cabinet *cab,
1114 struct mscabd_cabinet *prevcab);
1115
1138 int (*extract)(struct mscab_decompressor *self,
1139 struct mscabd_file *file,
1140 const char *filename);
1141
1164 int (*set_param)(struct mscab_decompressor *self,
1165 int param,
1166 int value);
1167
1179 int (*last_error)(struct mscab_decompressor *self);
1180};
1181
1182/* --- support for .CHM (HTMLHelp) file format ----------------------------- */
1183
1195
1198 const char *filename;
1199
1203
1207 off_t length;
1208};
1209
1221
1227 unsigned int id;
1228};
1229
1238
1240 off_t offset;
1241};
1242
1251
1254
1257
1260
1265};
1266
1274 unsigned int version;
1275
1283 unsigned int timestamp;
1284
1289 unsigned int language;
1290
1295 const char *filename;
1296
1298 off_t length;
1299
1302
1310
1313
1316
1319
1321 unsigned int num_chunks;
1322
1324 unsigned int chunk_size;
1325
1327 unsigned int density;
1328
1337 unsigned int depth;
1338
1344 unsigned int index_root;
1345
1350 unsigned int first_pmgl;
1351
1356 unsigned int last_pmgl;
1357
1362 unsigned char **chunk_cache;
1363};
1364
1376
1382
1384 off_t offset;
1385
1387 off_t length;
1388
1391};
1392
1394#define MSCHMC_ENDLIST (0)
1396#define MSCHMC_UNCOMP (1)
1398#define MSCHMC_MSCOMP (2)
1399
1401#define MSCHMC_PARAM_TIMESTAMP (0)
1403#define MSCHMC_PARAM_LANGUAGE (1)
1405#define MSCHMC_PARAM_LZXWINDOW (2)
1407#define MSCHMC_PARAM_DENSITY (3)
1409#define MSCHMC_PARAM_INDEX (4)
1410
1450 int (*generate)(struct mschm_compressor *self,
1451 struct mschmc_file file_list[],
1452 const char *output_file);
1453
1508 int use_temp_file,
1509 const char *temp_file);
1555 int (*set_param)(struct mschm_compressor *self,
1556 int param,
1557 int value);
1558
1567 int (*last_error)(struct mschm_compressor *self);
1568};
1569
1598 struct mschmd_header *(*open)(struct mschm_decompressor *self,
1599 const char *filename);
1600
1618 void (*close)(struct mschm_decompressor *self,
1619 struct mschmd_header *chm);
1620
1639 int (*extract)(struct mschm_decompressor *self,
1640 struct mschmd_file *file,
1641 const char *filename);
1642
1654 int (*last_error)(struct mschm_decompressor *self);
1655
1678 struct mschmd_header *(*fast_open)(struct mschm_decompressor *self,
1679 const char *filename);
1680
1719 int (*fast_find)(struct mschm_decompressor *self,
1720 struct mschmd_header *chm,
1721 const char *filename,
1722 struct mschmd_file *f_ptr,
1723 int f_size);
1724};
1725
1726/* --- support for .LIT (EBook) file format -------------------------------- */
1727
1730 int dummy;
1731};
1732
1735 int dummy;
1736};
1737
1738
1739/* --- support for .HLP (MS Help) file format ------------------------------ */
1740
1743 int dummy;
1744};
1745
1748 int dummy;
1749};
1750
1751
1752/* --- support for SZDD file format ---------------------------------------- */
1753
1755#define MSSZDDC_PARAM_MISSINGCHAR (0)
1756
1758#define MSSZDD_FMT_NORMAL (0)
1759
1761#define MSSZDD_FMT_QBASIC (1)
1762
1771
1773 off_t length;
1774
1783};
1784
1828 int (*compress)(struct msszdd_compressor *self,
1829 const char *input,
1830 const char *output,
1831 off_t length);
1832
1854 int (*set_param)(struct msszdd_compressor *self,
1855 int param,
1856 int value);
1857
1866 int (*last_error)(struct mschm_decompressor *self);
1867};
1868
1896 struct msszddd_header *(*open)(struct msszdd_decompressor *self,
1897 const char *filename);
1898
1912 void (*close)(struct msszdd_decompressor *self,
1913 struct msszddd_header *szdd);
1914
1928 int (*extract)(struct msszdd_decompressor *self,
1929 struct msszddd_header *szdd,
1930 const char *filename);
1931
1949 int (*decompress)(struct msszdd_decompressor *self,
1950 const char *input,
1951 const char *output);
1952
1964 int (*last_error)(struct msszdd_decompressor *self);
1965};
1966
1967/* --- support for KWAJ file format ---------------------------------------- */
1968
1970#define MSKWAJC_PARAM_COMP_TYPE (0)
1971
1975#define MSKWAJC_PARAM_INCLUDE_LENGTH (1)
1976
1978#define MSKWAJ_COMP_NONE (0)
1980#define MSKWAJ_COMP_XOR (1)
1982#define MSKWAJ_COMP_SZDD (2)
1984#define MSKWAJ_COMP_LZH (3)
1986#define MSKWAJ_COMP_MSZIP (4)
1987
1989#define MSKWAJ_HDR_HASLENGTH (0x01)
1990
1992#define MSKWAJ_HDR_HASUNKNOWN1 (0x02)
1993
1995#define MSKWAJ_HDR_HASUNKNOWN2 (0x04)
1996
1998#define MSKWAJ_HDR_HASFILENAME (0x08)
1999
2001#define MSKWAJ_HDR_HASFILEEXT (0x10)
2002
2004#define MSKWAJ_HDR_HASEXTRATEXT (0x20)
2005
2015 unsigned short comp_type;
2016
2019
2022
2024 off_t length;
2025
2028
2032 char *extra;
2033
2035 unsigned short extra_length;
2036};
2037
2064 int (*compress)(struct mskwaj_compressor *self,
2065 const char *input,
2066 const char *output,
2067 off_t length);
2068
2092 int (*set_param)(struct mskwaj_compressor *self,
2093 int param,
2094 int value);
2095
2096
2114 int (*set_filename)(struct mskwaj_compressor *self,
2115 const char *filename);
2116
2135 void *data,
2136 size_t bytes);
2137
2146 int (*last_error)(struct mschm_decompressor *self);
2147};
2148
2176 struct mskwajd_header *(*open)(struct mskwaj_decompressor *self,
2177 const char *filename);
2178
2191 void (*close)(struct mskwaj_decompressor *self,
2192 struct mskwajd_header *kwaj);
2193
2207 int (*extract)(struct mskwaj_decompressor *self,
2208 struct mskwajd_header *kwaj,
2209 const char *filename);
2210
2228 int (*decompress)(struct mskwaj_decompressor *self,
2229 const char *input,
2230 const char *output);
2231
2243 int (*last_error)(struct mskwaj_decompressor *self);
2244};
2245
2246/* --- support for .LZX (Offline Address Book) file format ----------------- */
2247
2270 int (*compress) (struct msoab_compressor *self,
2271 const char *input,
2272 const char *output);
2273
2295 const char *input,
2296 const char *base,
2297 const char *output);
2298};
2299
2323 int (*decompress) (struct msoab_decompressor *self,
2324 const char *input,
2325 const char *output);
2326
2353 const char *input,
2354 const char *base,
2355 const char *output);
2356
2372 int (*set_param)(struct msoab_decompressor *self,
2373 int param,
2374 int value);
2375
2376};
2377
2379#define MSOABD_PARAM_DECOMPBUF (0)
2380
2381#ifdef __cplusplus
2382}
2383#endif
2384
2385#endif
struct mscab_decompressor * mspack_create_cab_decompressor(struct mspack_system *sys)
Creates a new CAB decompressor.
struct msoab_compressor * mspack_create_oab_compressor(struct mspack_system *sys)
Creates a new OAB compressor.
void mspack_destroy_chm_compressor(struct mschm_compressor *self)
Destroys an existing CHM compressor.
void mspack_destroy_cab_decompressor(struct mscab_decompressor *self)
Destroys an existing CAB decompressor.
struct mskwaj_decompressor * mspack_create_kwaj_decompressor(struct mspack_system *sys)
Creates a new KWAJ decompressor.
void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *self)
Destroys an existing hlp decompressor.
int mspack_version(int entity)
Enquire about the binary compatibility version of a specific interface in the library.
void mspack_destroy_cab_compressor(struct mscab_compressor *self)
Destroys an existing CAB compressor.
struct mshlp_compressor * mspack_create_hlp_compressor(struct mspack_system *sys)
Creates a new HLP compressor.
struct msszdd_compressor * mspack_create_szdd_compressor(struct mspack_system *sys)
Creates a new SZDD compressor.
struct mskwaj_compressor * mspack_create_kwaj_compressor(struct mspack_system *sys)
Creates a new KWAJ compressor.
void mspack_destroy_szdd_compressor(struct msszdd_compressor *self)
Destroys an existing SZDD compressor.
void mspack_destroy_chm_decompressor(struct mschm_decompressor *self)
Destroys an existing CHM decompressor.
void mspack_destroy_lit_decompressor(struct mslit_decompressor *self)
Destroys an existing LIT decompressor.
struct mschm_decompressor * mspack_create_chm_decompressor(struct mspack_system *sys)
Creates a new CHM decompressor.
void mspack_destroy_hlp_compressor(struct mshlp_compressor *self)
Destroys an existing hlp compressor.
struct mslit_decompressor * mspack_create_lit_decompressor(struct mspack_system *sys)
Creates a new LIT decompressor.
int mspack_sys_selftest_internal(int)
Part of the MSPACK_SYS_SELFTEST() macro, must not be used directly.
struct msoab_decompressor * mspack_create_oab_decompressor(struct mspack_system *sys)
Creates a new OAB decompressor.
struct mschm_compressor * mspack_create_chm_compressor(struct mspack_system *sys)
Creates a new CHM compressor.
void mspack_destroy_oab_decompressor(struct msoab_decompressor *self)
Destroys an existing OAB decompressor.
void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *self)
Destroys an existing SZDD decompressor.
void mspack_destroy_lit_compressor(struct mslit_compressor *self)
Destroys an existing LIT compressor.
void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *self)
Destroys an existing KWAJ compressor.
struct msszdd_decompressor * mspack_create_szdd_decompressor(struct mspack_system *sys)
Creates a new SZDD decompressor.
struct mshlp_decompressor * mspack_create_hlp_decompressor(struct mspack_system *sys)
Creates a new HLP decompressor.
void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *self)
Destroys an existing KWAJ decompressor.
void mspack_destroy_oab_compressor(struct msoab_compressor *self)
Destroys an existing OAB compressor.
struct mslit_compressor * mspack_create_lit_compressor(struct mspack_system *sys)
Creates a new LIT compressor.
struct mscab_compressor * mspack_create_cab_compressor(struct mspack_system *sys)
Creates a new CAB compressor.
TODO.
Definition mspack.h:946
int dummy
Definition mspack.h:947
A decompressor for .CAB (Microsoft Cabinet) files.
Definition mspack.h:957
int(* extract)(struct mscab_decompressor *self, struct mscabd_file *file, const char *filename)
Extracts a file from a cabinet or cabinet set.
Definition mspack.h:1138
int(* prepend)(struct mscab_decompressor *self, struct mscabd_cabinet *cab, struct mscabd_cabinet *prevcab)
Prepends one mscabd_cabinet to another, forming or extending a cabinet set.
Definition mspack.h:1112
int(* append)(struct mscab_decompressor *self, struct mscabd_cabinet *cab, struct mscabd_cabinet *nextcab)
Appends one mscabd_cabinet to another, forming or extending a cabinet set.
Definition mspack.h:1090
int(* set_param)(struct mscab_decompressor *self, int param, int value)
Sets a CAB decompression engine parameter.
Definition mspack.h:1164
void(* close)(struct mscab_decompressor *self, struct mscabd_cabinet *cab)
Closes a previously opened cabinet or cabinet set.
Definition mspack.h:1010
int(* last_error)(struct mscab_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:1179
A structure which represents a single cabinet file.
Definition mspack.h:699
unsigned short set_id
The set ID of the cabinet.
Definition mspack.h:752
char * prevname
The filename of the previous cabinet in a cabinet set, or NULL.
Definition mspack.h:727
unsigned short set_index
The index number of the cabinet within the set.
Definition mspack.h:759
struct mscabd_folder * folders
A list of all folders in the cabinet or cabinet set.
Definition mspack.h:746
unsigned short header_resv
The number of bytes reserved in the header area of the cabinet.
Definition mspack.h:771
int flags
Header flags.
Definition mspack.h:784
unsigned int length
The length of the cabinet file in bytes.
Definition mspack.h:718
const char * filename
The filename of the cabinet.
Definition mspack.h:712
struct mscabd_cabinet * next
The next cabinet in a chained list, if this cabinet was opened with mscab_decompressor::search().
Definition mspack.h:705
char * nextname
The filename of the next cabinet in a cabinet set, or NULL.
Definition mspack.h:730
off_t base_offset
The file offset of cabinet within the physical file it resides in.
Definition mspack.h:715
struct mscabd_file * files
A list of all files in the cabinet or cabinet set.
Definition mspack.h:743
struct mscabd_cabinet * prevcab
The previous cabinet in a cabinet set, or NULL.
Definition mspack.h:721
struct mscabd_cabinet * nextcab
The next cabinet in a cabinet set, or NULL.
Definition mspack.h:724
char * nextinfo
The name of the disk containing the next cabinet in a cabinet set, or NULL.
Definition mspack.h:740
char * previnfo
The name of the disk containing the previous cabinet in a cabinet set, or NULL.
Definition mspack.h:735
A structure which represents a single file in a cabinet or cabinet set.
Definition mspack.h:863
char * filename
The filename of the file.
Definition mspack.h:878
unsigned int length
The uncompressed length of the file, in bytes.
Definition mspack.h:881
struct mscabd_folder * folder
A pointer to the folder that contains this file.
Definition mspack.h:912
char time_m
File's last modified time, minute field.
Definition mspack.h:900
int attribs
File attributes.
Definition mspack.h:895
char date_d
File's last modified date, day field.
Definition mspack.h:905
unsigned int offset
The uncompressed offset of this file in its folder.
Definition mspack.h:915
char time_h
File's last modified time, hour field.
Definition mspack.h:898
int date_y
File's last modified date, year field.
Definition mspack.h:909
char time_s
File's last modified time, second field.
Definition mspack.h:902
struct mscabd_file * next
The next file in the cabinet or cabinet set, or NULL if this is the final file.
Definition mspack.h:868
char date_m
File's last modified date, month field.
Definition mspack.h:907
A structure which represents a single folder in a cabinet or cabinet set.
Definition mspack.h:806
struct mscabd_folder * next
A pointer to the next folder in this cabinet or cabinet set, or NULL if this is the final folder.
Definition mspack.h:811
unsigned int num_blocks
The total number of data blocks used by this folder.
Definition mspack.h:829
int comp_type
The compression format used by this folder.
Definition mspack.h:822
A compressor for .CHM (Microsoft HTMLHelp) files.
Definition mspack.h:1418
int(* set_param)(struct mschm_compressor *self, int param, int value)
Sets a CHM compression engine parameter.
Definition mspack.h:1555
int(* use_temporary_file)(struct mschm_compressor *self, int use_temp_file, const char *temp_file)
Specifies whether a temporary file is used during CHM generation.
Definition mspack.h:1507
int(* last_error)(struct mschm_compressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:1567
int(* generate)(struct mschm_compressor *self, struct mschmc_file file_list[], const char *output_file)
Generates a CHM help file.
Definition mspack.h:1450
A decompressor for .CHM (Microsoft HTMLHelp) files.
Definition mspack.h:1577
int(* fast_find)(struct mschm_decompressor *self, struct mschmd_header *chm, const char *filename, struct mschmd_file *f_ptr, int f_size)
Finds file details quickly.
Definition mspack.h:1719
int(* extract)(struct mschm_decompressor *self, struct mschmd_file *file, const char *filename)
Extracts a file from a CHM helpfile.
Definition mspack.h:1639
void(* close)(struct mschm_decompressor *self, struct mschmd_header *chm)
Closes a previously opened CHM helpfile.
Definition mspack.h:1618
int(* last_error)(struct mschm_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:1654
A structure which represents a file to be placed in a CHM helpfile.
Definition mspack.h:1192
int section
One of MSCHMC_ENDLIST, MSCHMC_UNCOMP or MSCHMC_MSCOMP.
Definition mspack.h:1194
const char * filename
The filename of the source file that will be added to the CHM.
Definition mspack.h:1198
char * chm_filename
The full path and filename of the file within the CHM helpfile, a UTF-1 encoded null-terminated strin...
Definition mspack.h:1202
off_t length
The length of the file, in bytes.
Definition mspack.h:1207
A structure which represents a file stored in a CHM helpfile.
Definition mspack.h:1370
char * filename
The filename of this file – a null terminated string in UTF-8.
Definition mspack.h:1390
off_t length
The length of this file, in bytes.
Definition mspack.h:1387
struct mschmd_file * next
A pointer to the next file in the list, or NULL if this is the final file.
Definition mspack.h:1375
struct mschmd_section * section
A pointer to the section that this file is located in.
Definition mspack.h:1381
off_t offset
The offset within the section data that this file is located at.
Definition mspack.h:1384
A structure which represents a CHM helpfile.
Definition mspack.h:1272
off_t dir_offset
The file offset of the first PMGL/PMGI directory chunk.
Definition mspack.h:1318
unsigned int version
The version of the CHM file format used in this file.
Definition mspack.h:1274
const char * filename
The filename of the CHM helpfile.
Definition mspack.h:1295
off_t length
The length of the CHM helpfile, in bytes.
Definition mspack.h:1298
unsigned int depth
The depth of the index tree.
Definition mspack.h:1337
unsigned int last_pmgl
The number of the last PMGL chunk.
Definition mspack.h:1356
unsigned char ** chunk_cache
A cache of loaded chunks, filled in by mschm_decoder::fast_find().
Definition mspack.h:1362
unsigned int first_pmgl
The number of the first PMGL chunk.
Definition mspack.h:1350
unsigned int index_root
The number of the root PMGI chunk.
Definition mspack.h:1344
unsigned int timestamp
The "timestamp" of the CHM helpfile.
Definition mspack.h:1283
unsigned int language
The default Language and Country ID (LCID) of the user who ran the HTMLHelp Compiler.
Definition mspack.h:1289
struct mschmd_file * sysfiles
A list of all system files in the CHM helpfile.
Definition mspack.h:1309
struct mschmd_sec_mscompressed sec1
The section 1 (MSCompressed) data in this CHM helpfile.
Definition mspack.h:1315
unsigned int chunk_size
The size of each PMGL/PMGI chunk, in bytes.
Definition mspack.h:1324
unsigned int num_chunks
The number of PMGL/PMGI directory chunks in this CHM helpfile.
Definition mspack.h:1321
struct mschmd_sec_uncompressed sec0
The section 0 (uncompressed) data in this CHM helpfile.
Definition mspack.h:1312
unsigned int density
The "density" of the quick-reference section in PMGL/PMGI chunks.
Definition mspack.h:1327
struct mschmd_file * files
A list of all non-system files in the CHM helpfile.
Definition mspack.h:1301
A structure which represents the LZX compressed section of a CHM helpfile.
Definition mspack.h:1248
struct mschmd_file * control
A pointer to the file which contains the LZX control data.
Definition mspack.h:1256
struct mschmd_section base
Generic section data.
Definition mspack.h:1250
struct mschmd_file * content
A pointer to the meta-file which represents all LZX compressed data.
Definition mspack.h:1253
struct mschmd_file * rtable
A pointer to the file which contains the LZX reset table.
Definition mspack.h:1259
struct mschmd_file * spaninfo
A pointer to the file which contains the LZX span information.
Definition mspack.h:1264
A structure which represents the uncompressed section of a CHM helpfile.
Definition mspack.h:1235
struct mschmd_section base
Generic section data.
Definition mspack.h:1237
off_t offset
The file offset of where this section begins in the CHM helpfile.
Definition mspack.h:1240
A structure which represents a section of a CHM helpfile.
Definition mspack.h:1218
unsigned int id
The section ID.
Definition mspack.h:1227
struct mschmd_header * chm
A pointer to the CHM helpfile that contains this section.
Definition mspack.h:1220
TODO.
Definition mspack.h:1742
int dummy
Definition mspack.h:1743
TODO.
Definition mspack.h:1747
int dummy
Definition mspack.h:1748
A compressor for the KWAJ file format.
Definition mspack.h:2045
int(* set_filename)(struct mskwaj_compressor *self, const char *filename)
Sets the original filename of the file before compression, which will be stored in the header of the ...
Definition mspack.h:2114
int(* last_error)(struct mschm_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:2146
int(* set_extra_data)(struct mskwaj_compressor *self, void *data, size_t bytes)
Sets arbitrary data that will be stored in the header of the output file, uncompressed.
Definition mspack.h:2134
int(* set_param)(struct mskwaj_compressor *self, int param, int value)
Sets an KWAJ compression engine parameter.
Definition mspack.h:2092
int(* compress)(struct mskwaj_compressor *self, const char *input, const char *output, off_t length)
Reads an input file and creates a compressed output file in the KWAJ compressed file format.
Definition mspack.h:2064
A decompressor for KWAJ compressed files.
Definition mspack.h:2156
void(* close)(struct mskwaj_decompressor *self, struct mskwajd_header *kwaj)
Closes a previously opened KWAJ file.
Definition mspack.h:2191
int(* extract)(struct mskwaj_decompressor *self, struct mskwajd_header *kwaj, const char *filename)
Extracts the compressed data from a KWAJ file.
Definition mspack.h:2207
int(* decompress)(struct mskwaj_decompressor *self, const char *input, const char *output)
Decompresses an KWAJ file to an output file in one step.
Definition mspack.h:2228
int(* last_error)(struct mskwaj_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:2243
A structure which represents an KWAJ compressed file.
Definition mspack.h:2011
unsigned short extra_length
length of extra uncompressed data in the header
Definition mspack.h:2035
char * filename
output filename, or NULL if not present
Definition mspack.h:2027
unsigned short comp_type
The compression type; should be one of MSKWAJ_COMP_NONE, MSKWAJ_COMP_XOR, MSKWAJ_COMP_SZDD or MSKWAJ_...
Definition mspack.h:2015
int headers
Flags indicating which optional headers were included.
Definition mspack.h:2021
char * extra
extra uncompressed data (usually text) in the header.
Definition mspack.h:2032
off_t data_offset
The offset in the file where the compressed data stream begins.
Definition mspack.h:2018
off_t length
The amount of uncompressed data in the file, or 0 if not present.
Definition mspack.h:2024
TODO.
Definition mspack.h:1729
int dummy
Definition mspack.h:1730
TODO.
Definition mspack.h:1734
int dummy
Definition mspack.h:1735
A compressor for the Offline Address Book (OAB) format.
Definition mspack.h:2255
int(* compress)(struct msoab_compressor *self, const char *input, const char *output)
Compress a full OAB file.
Definition mspack.h:2270
int(* compress_incremental)(struct msoab_compressor *self, const char *input, const char *base, const char *output)
Generate a compressed incremental OAB patch file.
Definition mspack.h:2294
A decompressor for .LZX (Offline Address Book) files.
Definition mspack.h:2307
int(* set_param)(struct msoab_decompressor *self, int param, int value)
Sets an OAB decompression engine parameter.
Definition mspack.h:2372
int(* decompress)(struct msoab_decompressor *self, const char *input, const char *output)
Decompresses a full Offline Address Book file.
Definition mspack.h:2323
int(* decompress_incremental)(struct msoab_decompressor *self, const char *input, const char *base, const char *output)
Decompresses an Offline Address Book with an incremental patch file.
Definition mspack.h:2352
A structure which represents an open file handle.
Definition mspack.h:478
int dummy
Definition mspack.h:479
A structure which abstracts file I/O and memory management.
Definition mspack.h:285
int(* read)(struct mspack_file *file, void *buffer, int bytes)
Reads a given number of bytes from an open file.
Definition mspack.h:336
void(* close)(struct mspack_file *file)
Closes a previously opened file.
Definition mspack.h:321
void * null_ptr
A null pointer to mark the end of mspack_system.
Definition mspack.h:454
off_t(* tell)(struct mspack_file *file)
Returns the current file position (in bytes) of the given file.
Definition mspack.h:391
void(* copy)(void *src, void *dest, size_t bytes)
Copies from one region of memory to another.
Definition mspack.h:444
void(* message)(struct mspack_file *file, const char *format,...)
Used to send messages from the library to the user.
Definition mspack.h:407
int(* write)(struct mspack_file *file, void *buffer, int bytes)
Writes a given number of bytes to an open file.
Definition mspack.h:353
void(* free)(void *ptr)
Frees memory.
Definition mspack.h:430
int(* seek)(struct mspack_file *file, off_t offset, int mode)
Seeks to a specific file offset within an open file.
Definition mspack.h:380
A compressor for the SZDD file format.
Definition mspack.h:1792
int(* set_param)(struct msszdd_compressor *self, int param, int value)
Sets an SZDD compression engine parameter.
Definition mspack.h:1854
int(* last_error)(struct mschm_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:1866
int(* compress)(struct msszdd_compressor *self, const char *input, const char *output, off_t length)
Reads an input file and creates a compressed output file in the SZDD compressed file format.
Definition mspack.h:1828
A decompressor for SZDD compressed files.
Definition mspack.h:1876
int(* extract)(struct msszdd_decompressor *self, struct msszddd_header *szdd, const char *filename)
Extracts the compressed data from a SZDD file.
Definition mspack.h:1928
void(* close)(struct msszdd_decompressor *self, struct msszddd_header *szdd)
Closes a previously opened SZDD file.
Definition mspack.h:1912
int(* decompress)(struct msszdd_decompressor *self, const char *input, const char *output)
Decompresses an SZDD file to an output file in one step.
Definition mspack.h:1949
int(* last_error)(struct msszdd_decompressor *self)
Returns the error code set by the most recently called method.
Definition mspack.h:1964
A structure which represents an SZDD compressed file.
Definition mspack.h:1768
off_t length
The amount of data in the SZDD file once uncompressed.
Definition mspack.h:1773
int format
The file format; either MSSZDD_FMT_NORMAL or MSSZDD_FMT_QBASIC.
Definition mspack.h:1770
char missing_char
The last character in the filename, traditionally replaced with an underscore to show the file is com...
Definition mspack.h:1782