#include <mspack.h>
Data Fields | |
mschmd_header *(* | open )(struct mschm_decompressor *self, char *filename) |
Opens a CHM helpfile and reads its contents. | |
void(* | close )(struct mschm_decompressor *self, struct mschmd_header *chm) |
Closes a previously opened CHM helpfile. | |
int(* | extract )(struct mschm_decompressor *self, struct mschmd_file *file, char *filename) |
Extracts a file from a CHM helpfile. | |
int(* | last_error )(struct mschm_decompressor *self) |
Returns the error code set by the most recently called method. | |
mschmd_header *(* | fast_open )(struct mschm_decompressor *self, char *filename) |
Opens a CHM helpfile quickly. | |
int(* | fast_find )(struct mschm_decompressor *self, struct mschmd_header *chm, char *filename, struct mschmd_file *f_ptr, int f_size) |
Finds file details quickly. |
All fields are READ ONLY.
|
Closes a previously opened CHM helpfile. This closes a CHM helpfile, frees the mschmd_header and all mschmd_file structures associated with it (if any). This works on both helpfiles opened with open() and helpfiles opened with fast_open(). The CHM header pointer is now invalid and cannot be used again. All mschmd_file pointers referencing that CHM are also now invalid, and cannot be used again.
|
|
Extracts a file from a CHM helpfile. This extracts a file from a CHM helpfile and writes it to the given filename. The filename of the file, mscabd_file::filename, is not used by extract(), but can be used by the caller as a guide for constructing an appropriate filename. This method works both with files found in the mschmd_header::files and mschmd_header::sysfiles list and mschmd_file structures generated on the fly by fast_find().
|
|
Finds file details quickly. Instead of reading all CHM helpfile headers and building a list of files, fast_open() and fast_find() are intended for finding file details only when they are needed. The CHM file format includes an on-disk file index to allow this. Given a case-sensitive filename, fast_find() will search the on-disk index for that file. If the file was found, the caller-provided mschmd_file structure will be filled out like so:
If the file was not found, MSPACK_ERR_OK will still be returned as the result, but the caller-provided structure will be filled out like so:
This method is intended to be used in conjunction with CHM helpfiles opened with fast_open(), but it also works with helpfiles opened using the regular open().
|
|
Opens a CHM helpfile quickly. If the file opened is a valid CHM helpfile, only essential headers will be read. A mschmd_header structure will be still be returned, as with open(), but the mschmd_header::files field will be NULL. No files details will be automatically read. The fast_find() method must be used to obtain file details. In the case of an error occuring, NULL is returned and the error code is available from last_error(). The filename pointer should be considered "in use" until close() is called on the CHM helpfile.
|
|
Returns the error code set by the most recently called method. This is useful for open() and fast_open(), which do not return an error code directly.
|
|
Opens a CHM helpfile and reads its contents. If the file opened is a valid CHM helpfile, all headers will be read and a mschmd_header structure will be returned, with a full list of files. In the case of an error occuring, NULL is returned and the error code is available from last_error(). The filename pointer should be considered "in use" until close() is called on the CHM helpfile.
|