- Main Page
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

# mschm_decompressor Struct Reference

A decompressor for .CHM (Microsoft HTMLHelp) files. More...

`#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.

## Detailed Description

A decompressor for .CHM (Microsoft HTMLHelp) files.

All fields are READ ONLY.

See also:
  mspack_create_chm_decompressor(), mspack_destroy_chm_decompressor()

## Field Documentation

void(* mschm_decompressor::close)(struct mschm_decompressor *self, struct mschmd_header *chm)

  | 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. Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
  | chm | the CHM helpfile to close
See also: open(), fast_open()

int(* mschm_decompressor::extract)(struct mschm_decompressor *self, struct mschmd_file *file, char *filename)

  | 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(). Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
  | file | the file to be decompressed
  | filename | the filename of the file being written to
Returns: an error code, or MSPACK_ERR_OK if successful

int(* mschm_decompressor::fast_find)(struct mschm_decompressor *self, struct mschmd_header *chm, char *filename, struct mschmd_file *f_ptr, int f_size)

  | 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: section: the correct value for the found file offset: the correct value for the found file length: the correct value for the found file all other structure elements: NULL or 0 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: section: NULL offset: 0 length: 0 all other structure elements: NULL or 0 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(). Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
  | chm | the CHM helpfile to search for the file
  | filename | the filename of the file to search for
  | f_ptr | a pointer to a caller-provded mschmd_file structure
  | f_size | `sizeof(struct mschmd_file)`
Returns: an error code, or MSPACK_ERR_OK if successful See also: open(), close(), fast_find(), extract()

struct mschmd_header*(* mschm_decompressor::fast_open)(struct mschm_decompressor *self, char *filename)

  | 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. Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
  | filename | the filename of the CHM helpfile. This is passed directly to mspack_system::open().
Returns: a pointer to a mschmd_header structure, or NULL on failure See also: open(), close(), fast_find(), extract()

int(* mschm_decompressor::last_error)(struct mschm_decompressor *self)

  | 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. Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
Returns: the most recent error code See also: open(), search()

struct mschmd_header*(* mschm_decompressor::open)(struct mschm_decompressor *self, char *filename)

  | 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. Parameters:
  | self | a self-referential pointer to the mschm_decompressor instance being called
  | filename | the filename of the CHM helpfile. This is passed directly to mspack_system::open().
Returns: a pointer to a mschmd_header structure, or NULL on failure See also: close()

The documentation for this struct was generated from the following file:

- /home/kyz/devel/libmspack/libmspack/mspack/mspack.h