libmspack
Data Fields
msszdd_compressor Struct Reference

A compressor for the SZDD file format. More...

#include <mspack.h>

Data Fields

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. More...
 
int(* set_param )(struct msszdd_compressor *self, int param, int value)
 Sets an SZDD compression engine parameter. More...
 
int(* last_error )(struct mschm_decompressor *self)
 Returns the error code set by the most recently called method. More...
 

Detailed Description

A compressor for the SZDD file format.

All fields are READ ONLY.

See also
mspack_create_szdd_compressor(), mspack_destroy_szdd_compressor()

Field Documentation

◆ compress

int(* msszdd_compressor::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.

The SZDD compression format is quick but gives poor compression. It is possible for the compressed output file to be larger than the input file.

Conventionally, SZDD compressed files have the final character in their filename replaced with an underscore, to show they are compressed. The missing character is stored in the compressed file itself. This is due to the restricted filename conventions of MS-DOS, most operating systems, such as UNIX, simply append another file extension to the existing filename. As mspack does not deal with filenames, this is left up to you. If you wish to set the missing character stored in the file header, use set_param() with the MSSZDDC_PARAM_MISSINGCHAR parameter.

"Stream" compression (where the length of the input data is not known) is not possible. The length of the input data is stored in the header of the SZDD file and must therefore be known before any data is compressed. Due to technical limitations of the file format, the maximum size of uncompressed file that will be accepted is 2147483647 bytes.

Parameters
selfa self-referential pointer to the msszdd_compressor instance being called
inputthe name of the file to compressed. This is passed passed directly to mspack_system::open()
outputthe name of the file to write compressed data to. This is passed directly to mspack_system::open().
lengththe length of the uncompressed file, or -1 to indicate that this should be determined automatically by using mspack_system::seek() on the input file.
Returns
an error code, or MSPACK_ERR_OK if successful
See also
set_param()

◆ last_error

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

Returns the error code set by the most recently called method.

Parameters
selfa self-referential pointer to the msszdd_compressor instance being called
Returns
the most recent error code
See also
compress()

◆ set_param

int(* msszdd_compressor::set_param) (struct msszdd_compressor *self, int param, int value)

Sets an SZDD compression engine parameter.

The following parameters are defined:

  • #MSSZDDC_PARAM_CHARACTER: the "missing character", the last character in the uncompressed file's filename, which is traditionally replaced with an underscore to show the file is compressed. Traditionally, this can only be a character that is a valid part of an MS-DOS, filename, but libmspack permits any character between 0x00 and 0xFF to be stored. 0x00 is the default, and it represents "no character stored".
Parameters
selfa self-referential pointer to the msszdd_compressor instance being called
paramthe parameter to set
valuethe value to set the parameter to
Returns
MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there is a problem with either parameter or value.
See also
compress()

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