Libparserutils
codec.c File Reference
#include <string.h>
#include "charset/aliases.h"
#include "charset/codecs/codec_impl.h"

Go to the source code of this file.

Functions

parserutils_error parserutils_charset_codec_create (const char *charset, parserutils_charset_codec **codec)
 Create a charset codec.
parserutils_error parserutils_charset_codec_destroy (parserutils_charset_codec *codec)
 Destroy a charset codec.
parserutils_error parserutils_charset_codec_setopt (parserutils_charset_codec *codec, parserutils_charset_codec_opttype type, parserutils_charset_codec_optparams *params)
 Configure a charset codec.
parserutils_error parserutils_charset_codec_encode (parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
 Encode a chunk of UCS-4 data into a codec's charset.
parserutils_error parserutils_charset_codec_decode (parserutils_charset_codec *codec, const uint8_t **source, size_t *sourcelen, uint8_t **dest, size_t *destlen)
 Decode a chunk of data in a codec's charset into UCS-4.
parserutils_error parserutils_charset_codec_reset (parserutils_charset_codec *codec)
 Clear a charset codec's encoding state.

Variables

parserutils_charset_handler charset_ascii_codec_handler
parserutils_charset_handler charset_8859_codec_handler
parserutils_charset_handler charset_ext8_codec_handler
parserutils_charset_handler charset_utf8_codec_handler
parserutils_charset_handler charset_utf16_codec_handler
static parserutils_charset_handlerhandler_table []

Function Documentation

◆ parserutils_charset_codec_create()

parserutils_error parserutils_charset_codec_create ( const char * charset,
parserutils_charset_codec ** codec )

Create a charset codec.

Parameters
charsetTarget charset
codecPointer to location to receive codec instance
Returns
PARSERUTILS_OK on success, PARSERUTILS_BADPARM on bad parameters, PARSERUTILS_NOMEM on memory exhaustion, PARSERUTILS_BADENCODING on unsupported charset

Definition at line 38 of file codec.c.

References parserutils_charset_codec::errormode, handler_table, parserutils_charset_aliases_canon::mib_enum, parserutils_charset_codec::mibenum, parserutils_charset_aliases_canon::name, parserutils__charset_alias_canonicalise(), PARSERUTILS_BADENCODING, PARSERUTILS_BADPARM, PARSERUTILS_CHARSET_CODEC_ERROR_LOOSE, and PARSERUTILS_OK.

Referenced by filter_set_encoding(), and parserutils__filter_create().

◆ parserutils_charset_codec_decode()

parserutils_error parserutils_charset_codec_decode ( parserutils_charset_codec * codec,
const uint8_t ** source,
size_t * sourcelen,
uint8_t ** dest,
size_t * destlen )

Decode a chunk of data in a codec's charset into UCS-4.

Parameters
codecThe codec to use
sourcePointer to pointer to source data
sourcelenPointer to length (in bytes) of source data
destPointer to pointer to output buffer
destlenPointer to length (in bytes) of output buffer
Returns
PARSERUTILS_OK on success, appropriate error otherwise.

source, sourcelen, dest and destlen will be updated appropriately on exit

Call this with a source length of 0 to flush any buffers.

Definition at line 163 of file codec.c.

References parserutils_charset_codec::decode, parserutils_charset_codec::handler, and PARSERUTILS_BADPARM.

Referenced by parserutils__filter_process_chunk().

◆ parserutils_charset_codec_destroy()

parserutils_error parserutils_charset_codec_destroy ( parserutils_charset_codec * codec)

Destroy a charset codec.

Parameters
codecThe codec to destroy
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 86 of file codec.c.

References parserutils_charset_codec::destroy, parserutils_charset_codec::handler, PARSERUTILS_BADPARM, and PARSERUTILS_OK.

Referenced by filter_set_encoding(), parserutils__filter_create(), and parserutils__filter_destroy().

◆ parserutils_charset_codec_encode()

parserutils_error parserutils_charset_codec_encode ( parserutils_charset_codec * codec,
const uint8_t ** source,
size_t * sourcelen,
uint8_t ** dest,
size_t * destlen )

Encode a chunk of UCS-4 data into a codec's charset.

Parameters
codecThe codec to use
sourcePointer to pointer to source data
sourcelenPointer to length (in bytes) of source data
destPointer to pointer to output buffer
destlenPointer to length (in bytes) of output buffer
Returns
PARSERUTILS_OK on success, appropriate error otherwise.

source, sourcelen, dest and destlen will be updated appropriately on exit

Definition at line 136 of file codec.c.

References parserutils_charset_codec::encode, parserutils_charset_codec::handler, and PARSERUTILS_BADPARM.

Referenced by parserutils__filter_process_chunk().

◆ parserutils_charset_codec_reset()

parserutils_error parserutils_charset_codec_reset ( parserutils_charset_codec * codec)

Clear a charset codec's encoding state.

Parameters
codecThe codec to reset
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 182 of file codec.c.

References parserutils_charset_codec::handler, PARSERUTILS_BADPARM, and parserutils_charset_codec::reset.

Referenced by parserutils__filter_reset().

◆ parserutils_charset_codec_setopt()

Configure a charset codec.

Parameters
codecThe codec to configure
typeThe codec option type to configure
paramsOption-specific parameters
Returns
PARSERUTILS_OK on success, appropriate error otherwise

Definition at line 107 of file codec.c.

References parserutils_charset_codec_optparams::error_mode, parserutils_charset_codec::errormode, parserutils_charset_codec_optparams::mode, PARSERUTILS_BADPARM, PARSERUTILS_CHARSET_CODEC_ERROR_MODE, and PARSERUTILS_OK.

Variable Documentation

◆ charset_8859_codec_handler

parserutils_charset_handler charset_8859_codec_handler
extern

Definition at line 587 of file codec_8859.c.

◆ charset_ascii_codec_handler

parserutils_charset_handler charset_ascii_codec_handler
extern

Definition at line 527 of file codec_ascii.c.

◆ charset_ext8_codec_handler

parserutils_charset_handler charset_ext8_codec_handler
extern

Definition at line 579 of file codec_ext8.c.

◆ charset_utf16_codec_handler

parserutils_charset_handler charset_utf16_codec_handler
extern

Definition at line 542 of file codec_utf16.c.

◆ charset_utf8_codec_handler

parserutils_charset_handler charset_utf8_codec_handler
extern

Definition at line 542 of file codec_utf8.c.

◆ handler_table

parserutils_charset_handler* handler_table[]
static
Initial value:
= {
NULL,
}
parserutils_charset_handler charset_utf16_codec_handler
parserutils_charset_handler charset_utf8_codec_handler
Definition codec_utf8.c:542
parserutils_charset_handler charset_8859_codec_handler
Definition codec_8859.c:587
parserutils_charset_handler charset_ext8_codec_handler
Definition codec_ext8.c:579
parserutils_charset_handler charset_ascii_codec_handler

Definition at line 19 of file codec.c.

Referenced by parserutils_charset_codec_create().