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, char *input, char *output, off_t length)
 Reads an input file and creates a compressed output file in the SZDD compressed file format.
int(* set_param )(struct msszdd_compressor *self, int param, unsigned int value)
 Sets an SZDD compression engine parameter.
int(* last_error )(struct mschm_decompressor *self)
 Returns the error code set by the most recently called method.

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

int(* msszdd_compressor::compress)(struct msszdd_compressor *self, char *input, 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()

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()
int(* msszdd_compressor::set_param)(struct msszdd_compressor *self, int param, unsigned 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:
 All Data Structures Files Functions Variables Defines