159 #define LIB_MSPACK_H 1 165 #include <sys/types.h> 191 #define MSPACK_SYS_SELFTEST(result) do { \ 192 (result) = mspack_sys_selftest_internal(sizeof(off_t)); \ 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) 311 const char *filename,
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) 467 #define MSPACK_SYS_SEEK_START (0) 469 #define MSPACK_SYS_SEEK_CUR (1) 471 #define MSPACK_SYS_SEEK_END (2) 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) 788 #define MSCAB_HDR_RESV_OFFSET (0x28) 791 #define MSCAB_HDR_PREVCAB (0x01) 793 #define MSCAB_HDR_NEXTCAB (0x02) 795 #define MSCAB_HDR_RESV (0x04) 839 #define MSCABD_COMP_METHOD(comp_type) ((comp_type) & 0x0F) 847 #define MSCABD_COMP_LEVEL(comp_type) (((comp_type) >> 8) & 0x1F) 850 #define MSCAB_COMP_NONE (0) 852 #define MSCAB_COMP_MSZIP (1) 854 #define MSCAB_COMP_QUANTUM (2) 856 #define MSCAB_COMP_LZX (3) 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) 932 #define MSCABD_PARAM_SEARCHBUF (0) 934 #define MSCABD_PARAM_FIXMSZIP (1) 936 #define MSCABD_PARAM_DECOMPBUF (2) 943 #define MSCABD_PARAM_SALVAGE (3) 979 const char *filename);
1048 const char *filename);
1394 #define MSCHMC_ENDLIST (0) 1396 #define MSCHMC_UNCOMP (1) 1398 #define MSCHMC_MSCOMP (2) 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) 1452 const char *output_file);
1509 const char *temp_file);
1599 const char *filename);
1679 const char *filename);
1755 #define MSSZDDC_PARAM_MISSINGCHAR (0) 1758 #define MSSZDD_FMT_NORMAL (0) 1761 #define MSSZDD_FMT_QBASIC (1) 1897 const char *filename);
1930 const char *filename);
1951 const char *output);
1970 #define MSKWAJC_PARAM_COMP_TYPE (0) 1975 #define MSKWAJC_PARAM_INCLUDE_LENGTH (1) 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) 1989 #define MSKWAJ_HDR_HASLENGTH (0x01) 1992 #define MSKWAJ_HDR_HASUNKNOWN1 (0x02) 1995 #define MSKWAJ_HDR_HASUNKNOWN2 (0x04) 1998 #define MSKWAJ_HDR_HASFILENAME (0x08) 2001 #define MSKWAJ_HDR_HASFILEEXT (0x10) 2004 #define MSKWAJ_HDR_HASEXTRATEXT (0x20) 2115 const char *filename);
2177 const char *filename);
2230 const char *output);
2272 const char *output);
2297 const char *output);
2325 const char *output);
2355 const char *output);
2379 #define MSOABD_PARAM_DECOMPBUF (0) void(* copy)(void *src, void *dest, size_t bytes)
Copies from one region of memory to another.
Definition: mspack.h:444
A decompressor for SZDD compressed files.
Definition: mspack.h:1876
unsigned int offset
The uncompressed offset of this file in its folder.
Definition: mspack.h:915
struct msoab_decompressor * mspack_create_oab_decompressor(struct mspack_system *sys)
Creates a new OAB decompressor.
A compressor for the KWAJ file format.
Definition: mspack.h:2045
struct msszdd_compressor * mspack_create_szdd_compressor(struct mspack_system *sys)
Creates a new SZDD compressor.
void mspack_destroy_lit_compressor(struct mslit_compressor *self)
Destroys an existing LIT compressor.
void(* message)(struct mspack_file *file, const char *format,...)
Used to send messages from the library to the user.
Definition: mspack.h:407
struct mscab_compressor * mspack_create_cab_compressor(struct mspack_system *sys)
Creates a new CAB compressor.
char * filename
The filename of the file.
Definition: mspack.h:878
struct mschm_decompressor * mspack_create_chm_decompressor(struct mspack_system *sys)
Creates a new CHM decompressor.
off_t(* tell)(struct mspack_file *file)
Returns the current file position (in bytes) of the given file.
Definition: mspack.h:391
int(* write)(struct mspack_file *file, void *buffer, int bytes)
Writes a given number of bytes to an open file.
Definition: mspack.h:353
off_t offset
The offset within the section data that this file is located at.
Definition: mspack.h:1384
void mspack_destroy_hlp_compressor(struct mshlp_compressor *self)
Destroys an existing hlp compressor.
A structure which represents a file to be placed in a CHM helpfile.
Definition: mspack.h:1192
int dummy
Definition: mspack.h:479
struct msszdd_decompressor * mspack_create_szdd_decompressor(struct mspack_system *sys)
Creates a new SZDD decompressor.
unsigned short set_id
The set ID of the cabinet.
Definition: mspack.h:752
A structure which represents the LZX compressed section of a CHM helpfile.
Definition: mspack.h:1248
char date_d
File's last modified date, day field.
Definition: mspack.h:905
struct mshlp_compressor * mspack_create_hlp_compressor(struct mspack_system *sys)
Creates a new HLP compressor.
int comp_type
The compression format used by this folder.
Definition: mspack.h:822
struct mskwaj_decompressor * mspack_create_kwaj_decompressor(struct mspack_system *sys)
Creates a new KWAJ decompressor.
void mspack_destroy_szdd_compressor(struct msszdd_compressor *self)
Destroys an existing SZDD compressor.
char * nextinfo
The name of the disk containing the next cabinet in a cabinet set, or NULL.
Definition: mspack.h:740
void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *self)
Destroys an existing hlp decompressor.
struct mscabd_folder * folder
A pointer to the folder that contains this file.
Definition: mspack.h:912
int(* last_error)(struct mschm_decompressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:1866
A decompressor for .CHM (Microsoft HTMLHelp) files.
Definition: mspack.h:1577
A structure which abstracts file I/O and memory management.
Definition: mspack.h:285
A structure which represents a section of a CHM helpfile.
Definition: mspack.h:1218
TODO.
Definition: mspack.h:1747
int mspack_sys_selftest_internal(int)
Part of the MSPACK_SYS_SELFTEST() macro, must not be used directly.
struct mschmd_header * chm
A pointer to the CHM helpfile that contains this section.
Definition: mspack.h:1220
int(* last_error)(struct msszdd_decompressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:1964
char * filename
The filename of this file – a null terminated string in UTF-8.
Definition: mspack.h:1390
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
TODO.
Definition: mspack.h:1734
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
A compressor for the Offline Address Book (OAB) format.
Definition: mspack.h:2255
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 * prevname
The filename of the previous cabinet in a cabinet set, or NULL.
Definition: mspack.h:727
A structure which represents a single folder in a cabinet or cabinet set.
Definition: mspack.h:806
unsigned int num_blocks
The total number of data blocks used by this folder.
Definition: mspack.h:829
A decompressor for .LZX (Offline Address Book) files.
Definition: mspack.h:2307
int attribs
File attributes.
Definition: mspack.h:895
TODO.
Definition: mspack.h:946
int(* read)(struct mspack_file *file, void *buffer, int bytes)
Reads a given number of bytes from an open file.
Definition: mspack.h:336
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
struct mslit_compressor * mspack_create_lit_compressor(struct mspack_system *sys)
Creates a new LIT compressor.
struct mschmd_file * rtable
A pointer to the file which contains the LZX reset table.
Definition: mspack.h:1259
struct mscabd_cabinet * prevcab
The previous cabinet in a cabinet set, or NULL.
Definition: mspack.h:721
struct mschmd_file * spaninfo
A pointer to the file which contains the LZX span information.
Definition: mspack.h:1264
void mspack_destroy_lit_decompressor(struct mslit_decompressor *self)
Destroys an existing LIT decompressor.
struct mscabd_file * files
A list of all files in the cabinet or cabinet set.
Definition: mspack.h:743
struct mschmd_file * content
A pointer to the meta-file which represents all LZX compressed data.
Definition: mspack.h:1253
int(* set_param)(struct mskwaj_compressor *self, int param, int value)
Sets an KWAJ compression engine parameter.
Definition: mspack.h:2092
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
void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *self)
Destroys an existing SZDD decompressor.
off_t offset
The file offset of where this section begins in the CHM helpfile.
Definition: mspack.h:1240
struct mschm_compressor * mspack_create_chm_compressor(struct mspack_system *sys)
Creates a new CHM compressor.
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
A structure which represents an open file handle.
Definition: mspack.h:478
int(* last_error)(struct mskwaj_decompressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:2243
void(* free)(void *ptr)
Frees memory.
Definition: mspack.h:430
char * previnfo
The name of the disk containing the previous cabinet in a cabinet set, or NULL.
Definition: mspack.h:735
int(* last_error)(struct mschm_decompressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:2146
int dummy
Definition: mspack.h:1743
char time_h
File's last modified time, hour field.
Definition: mspack.h:898
int mspack_version(int entity)
Enquire about the binary compatibility version of a specific interface in the library.
A structure which represents a single file in a cabinet or cabinet set.
Definition: mspack.h:863
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
A structure which represents a file stored in a CHM helpfile.
Definition: mspack.h:1370
char date_m
File's last modified date, month field.
Definition: mspack.h:907
A decompressor for .CAB (Microsoft Cabinet) files.
Definition: mspack.h:957
char * nextname
The filename of the next cabinet in a cabinet set, or NULL.
Definition: mspack.h:730
int(* set_param)(struct msoab_decompressor *self, int param, int value)
Sets an OAB decompression engine parameter.
Definition: mspack.h:2372
void mspack_destroy_cab_compressor(struct mscab_compressor *self)
Destroys an existing CAB compressor.
struct mschmd_section * section
A pointer to the section that this file is located in.
Definition: mspack.h:1381
int(* last_error)(struct mscab_decompressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:1179
char time_s
File's last modified time, second field.
Definition: mspack.h:902
struct mscabd_cabinet * nextcab
The next cabinet in a cabinet set, or NULL.
Definition: mspack.h:724
off_t length
The length of this file, in bytes.
Definition: mspack.h:1387
A structure which represents a single cabinet file.
Definition: mspack.h:699
unsigned short set_index
The index number of the cabinet within the set.
Definition: mspack.h:759
int section
One of MSCHMC_ENDLIST, MSCHMC_UNCOMP or MSCHMC_MSCOMP.
Definition: mspack.h:1194
void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *self)
Destroys an existing KWAJ decompressor.
A compressor for the SZDD file format.
Definition: mspack.h:1792
struct mscab_decompressor * mspack_create_cab_decompressor(struct mspack_system *sys)
Creates a new CAB decompressor.
const char * filename
The filename of the cabinet.
Definition: mspack.h:712
TODO.
Definition: mspack.h:1742
TODO.
Definition: mspack.h:1729
int dummy
Definition: mspack.h:1748
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
int dummy
Definition: mspack.h:1730
int(* set_param)(struct msszdd_compressor *self, int param, int value)
Sets an SZDD compression engine parameter.
Definition: mspack.h:1854
struct mslit_decompressor * mspack_create_lit_decompressor(struct mspack_system *sys)
Creates a new LIT decompressor.
int date_y
File's last modified date, year field.
Definition: mspack.h:909
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 flags
Header flags.
Definition: mspack.h:784
char time_m
File's last modified time, minute field.
Definition: mspack.h:900
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
off_t length
The length of the file, in bytes.
Definition: mspack.h:1207
int dummy
Definition: mspack.h:947
int(* last_error)(struct mschm_compressor *self)
Returns the error code set by the most recently called method.
Definition: mspack.h:1567
int dummy
Definition: mspack.h:1735
unsigned int id
The section ID.
Definition: mspack.h:1227
int(* set_param)(struct mschm_compressor *self, int param, int value)
Sets a CHM compression engine parameter.
Definition: mspack.h:1555
struct mschmd_file * control
A pointer to the file which contains the LZX control data.
Definition: mspack.h:1256
void mspack_destroy_chm_decompressor(struct mschm_decompressor *self)
Destroys an existing CHM decompressor.
struct mscabd_folder * folders
A list of all folders in the cabinet or cabinet set.
Definition: mspack.h:746
A decompressor for KWAJ compressed files.
Definition: mspack.h:2156
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
void mspack_destroy_cab_decompressor(struct mscab_decompressor *self)
Destroys an existing CAB decompressor.
void mspack_destroy_oab_compressor(struct msoab_compressor *self)
Destroys an existing OAB compressor.
A structure which represents the uncompressed section of a CHM helpfile.
Definition: mspack.h:1235
off_t base_offset
The file offset of cabinet within the physical file it resides in.
Definition: mspack.h:715
unsigned short header_resv
The number of bytes reserved in the header area of the cabinet.
Definition: mspack.h:771
struct mshlp_decompressor * mspack_create_hlp_decompressor(struct mspack_system *sys)
Creates a new HLP decompressor.
struct mskwaj_compressor * mspack_create_kwaj_compressor(struct mspack_system *sys)
Creates a new KWAJ compressor.
void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *self)
Destroys an existing KWAJ compressor.
unsigned int length
The uncompressed length of the file, in bytes.
Definition: mspack.h:881
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
unsigned int length
The length of the cabinet file in bytes.
Definition: mspack.h:718
A compressor for .CHM (Microsoft HTMLHelp) files.
Definition: mspack.h:1418
const char * filename
The filename of the source file that will be added to the CHM.
Definition: mspack.h:1198
struct msoab_compressor * mspack_create_oab_compressor(struct mspack_system *sys)
Creates a new OAB compressor.
void mspack_destroy_oab_decompressor(struct msoab_decompressor *self)
Destroys an existing OAB decompressor.
void mspack_destroy_chm_compressor(struct mschm_compressor *self)
Destroys an existing CHM compressor.
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