171 const uint8_t *data,
size_t len)
197 const uint8_t *data,
size_t len)
202 if (stream == NULL || data == NULL)
209#define IS_ASCII(x) (((x) & 0x80) == 0)
234 size_t offset,
const uint8_t **ptr,
size_t *length)
241 if (stream == NULL || ptr == NULL || length == NULL)
298 if (stream == NULL || source == NULL)
323 const char *enc, uint32_t source)
331 if (stream == NULL || enc == NULL)
370 size_t raw_length, utf8_space;
468 &raw, &raw_length, &utf8, &utf8_space);
499 static uint16_t utf8;
500 static uint16_t utf16;
501 static uint16_t utf16be;
502 static uint16_t utf16le;
503 static uint16_t utf32;
504 static uint16_t utf32be;
505 static uint16_t utf32le;
524#define UTF32_BOM_LEN (4)
525#define UTF16_BOM_LEN (2)
526#define UTF8_BOM_LEN (3)
528 if (*mibenum == utf8) {
530 buffer->
data[0] == 0xEF &&
531 buffer->
data[1] == 0xBB &&
532 buffer->
data[2] == 0xBF) {
536 }
else if (*mibenum == utf16be) {
538 buffer->
data[0] == 0xFE &&
539 buffer->
data[1] == 0xFF) {
543 }
else if (*mibenum == utf16le) {
545 buffer->
data[0] == 0xFF &&
546 buffer->
data[1] == 0xFE) {
550 }
else if (*mibenum == utf16) {
554 if (buffer->
data[0] == 0xFE &&
555 buffer->
data[1] == 0xFF) {
558 }
else if (buffer->
data[0] == 0xFF &&
559 buffer->
data[1] == 0xFE) {
565 }
else if (*mibenum == utf32be) {
567 buffer->
data[0] == 0x00 &&
568 buffer->
data[1] == 0x00 &&
569 buffer->
data[2] == 0xFE &&
570 buffer->
data[3] == 0xFF) {
574 }
else if (*mibenum == utf32le) {
576 buffer->
data[0] == 0xFF &&
577 buffer->
data[1] == 0xFE &&
578 buffer->
data[2] == 0x00 &&
579 buffer->
data[3] == 0x00) {
583 }
else if (*mibenum == utf32) {
587 if (buffer->
data[0] == 0x00 &&
588 buffer->
data[1] == 0x00 &&
589 buffer->
data[2] == 0xFE &&
590 buffer->
data[3] == 0xFF) {
593 }
else if (buffer->
data[0] == 0xFF &&
594 buffer->
data[1] == 0xFE &&
595 buffer->
data[2] == 0x00 &&
596 buffer->
data[3] == 0x00) {
parserutils_error parserutils_buffer_insert(parserutils_buffer *buffer, size_t offset, const uint8_t *data, size_t len)
Insert data into a memory buffer.
parserutils_error parserutils_buffer_create(parserutils_buffer **buffer)
Create a memory buffer.
parserutils_error parserutils_buffer_destroy(parserutils_buffer *buffer)
Destroy a memory buffer.
parserutils_error parserutils_buffer_append(parserutils_buffer *buffer, const uint8_t *data, size_t len)
Append data to a memory buffer.
parserutils_error parserutils_buffer_grow(parserutils_buffer *buffer)
Extend the amount of space allocated for a memory buffer.
parserutils_error parserutils_buffer_discard(parserutils_buffer *buffer, size_t offset, size_t len)
Discard a section of a memory buffer.
@ PARSERUTILS_BADENCODING
parserutils_error parserutils__filter_process_chunk(parserutils_filter *input, const uint8_t **data, size_t *len, uint8_t **output, size_t *outlen)
Process a chunk of data.
parserutils_error parserutils__filter_create(const char *int_enc, parserutils_filter **filter)
Create an input filter.
parserutils_error parserutils__filter_destroy(parserutils_filter *input)
Destroy an input filter.
parserutils_error parserutils__filter_setopt(parserutils_filter *input, parserutils_filter_opttype type, parserutils_filter_optparams *params)
Configure an input filter.
@ PARSERUTILS_FILTER_SET_ENCODING
uint16_t parserutils_charset_mibenum_from_name(const char *alias, size_t len)
Retrieve the MIB enum value assigned to an encoding name.
const char * parserutils_charset_mibenum_to_name(uint16_t mibenum)
Retrieve the canonical name of an encoding from the MIB enum.
Input filter option parameters.
const char * name
Encoding name.
struct parserutils_filter_optparams::@5 encoding
Parameters for encoding setting.
UTF-8 manipulation functions (interface).
parserutils_error parserutils_charset_utf8_char_byte_length(const uint8_t *s, size_t *len)
Calculate the length (in bytes) of a UTF-8 character.