GMimeFilterYenc

GMimeFilterYenc — yEncode or yDecode

Object Hierarchy

    GObject
    ╰── GMimeFilter
        ╰── GMimeFilterYenc

Description

A GMimeFilter used to encode or decode the Usenet yEncoding.

Functions

g_mime_filter_yenc_new ()

GMimeFilter *
g_mime_filter_yenc_new (gboolean encode);

Creates a new yEnc filter.

Parameters

encode

encode vs decode

 

Returns

a new yEnc filter.


g_mime_filter_yenc_set_state ()

void
g_mime_filter_yenc_set_state (GMimeFilterYenc *yenc,
                              int state);

Sets the current state of the yencoder/ydecoder

Parameters

yenc

yEnc filter

 

state

encode/decode state

 

g_mime_filter_yenc_set_crc ()

void
g_mime_filter_yenc_set_crc (GMimeFilterYenc *yenc,
                            guint32 crc);

Sets the current crc32 value on the yEnc filter yenc to crc .

Parameters

yenc

yEnc filter

 

crc

crc32

 

g_mime_filter_yenc_get_crc ()

guint32
g_mime_filter_yenc_get_crc (GMimeFilterYenc *yenc);

Get the computed crc or (guint32) -1 on fail.

Parameters

yenc

yEnc filter

 

Returns

the computed crc or (guint32) -1 on fail.


g_mime_filter_yenc_get_pcrc ()

guint32
g_mime_filter_yenc_get_pcrc (GMimeFilterYenc *yenc);

Get the computed part crc or (guint32) -1 on fail.

Parameters

yenc

yEnc filter

 

Returns

the computed part crc or (guint32) -1 on fail.


GMIME_YENCODE_CRC_FINAL()

#define GMIME_YENCODE_CRC_FINAL(crc) (~crc)

Gets the final crc value from crc .

Parameters

crc

crc or pcrc state variable

 

g_mime_ydecode_step ()

size_t
g_mime_ydecode_step (const unsigned char *inbuf,
                     size_t inlen,
                     unsigned char *outbuf,
                     int *state,
                     guint32 *pcrc,
                     guint32 *crc);

Performs a 'decode step' on a chunk of yEncoded data of length inlen pointed to by inbuf and writes to outbuf . Assumes the =ybegin and =ypart lines have already been stripped off.

To get the crc32 value of the part, use GMIME_YENCODE_CRC_FINAL (pcrc ). If there are more parts, you should reuse crc without re-initializing. Once all parts have been decoded, you may get the combined crc32 value of all the parts using GMIME_YENCODE_CRC_FINAL (crc ).

Parameters

inbuf

input buffer

 

inlen

input buffer length

 

outbuf

output buffer

 

state

ydecode state

 

pcrc

part crc state

 

crc

crc state

 

Returns

the number of bytes decoded.


g_mime_yencode_step ()

size_t
g_mime_yencode_step (const unsigned char *inbuf,
                     size_t inlen,
                     unsigned char *outbuf,
                     int *state,
                     guint32 *pcrc,
                     guint32 *crc);

Performs an yEncode 'encode step' on a chunk of raw data of length inlen pointed to by inbuf and writes to outbuf .

state should be initialized to GMIME_YENCODE_STATE_INIT before beginning making the first call to this function. Subsequent calls should reuse state .

Along the same lines, pcrc and crc should be initialized to GMIME_YENCODE_CRC_INIT before using.

Parameters

inbuf

input buffer

 

inlen

input buffer length

 

outbuf

output buffer

 

state

yencode state

 

pcrc

part crc state

 

crc

crc state

 

Returns

the number of bytes encoded.


g_mime_yencode_close ()

size_t
g_mime_yencode_close (const unsigned char *inbuf,
                      size_t inlen,
                      unsigned char *outbuf,
                      int *state,
                      guint32 *pcrc,
                      guint32 *crc);

Call this function when finished encoding data with g_mime_yencode_step() to flush off the remaining state.

GMIME_YENCODE_CRC_FINAL (pcrc ) will give you the crc32 of the encoded "part". If there are more "parts" to encode, you should re-use crc when encoding the next "parts" and then use GMIME_YENCODE_CRC_FINAL (crc ) to get the combined crc32 value of all the parts.

Parameters

inbuf

input buffer

 

inlen

input buffer length

 

outbuf

output buffer

 

state

yencode state

 

pcrc

part crc state

 

crc

crc state

 

Returns

the number of bytes encoded.

Types and Values

struct GMimeFilterYenc

struct GMimeFilterYenc;

A filter for yEncoding or yDecoding a stream.

Members


GMIME_YENCODE_CRC_INIT

#define GMIME_YENCODE_CRC_INIT       (~0)

Initial state for the crc and pcrc state variables.


GMIME_YENCODE_STATE_INIT

#define GMIME_YENCODE_STATE_INIT     (0)

Initial state for the g_mime_ydecode_step() function.


GMIME_YDECODE_STATE_INIT

#define GMIME_YDECODE_STATE_INIT     (0)

Initial state for the g_mime_ydecode_step() function.


GMIME_YDECODE_STATE_EOLN

#define GMIME_YDECODE_STATE_EOLN     (1 << 8)

State bit that denotes the yEnc filter has reached an end-of-line.

This state is for internal use only.


GMIME_YDECODE_STATE_ESCAPE

#define GMIME_YDECODE_STATE_ESCAPE   (1 << 9)

State bit that denotes the yEnc filter has reached an escape sequence.

This state is for internal use only.


GMIME_YDECODE_STATE_END

#define GMIME_YDECODE_STATE_END      (1 << 15)

State bit that denoates that g_mime_ydecode_step() has finished decoding.


GMIME_YDECODE_STATE_BEGIN

#define GMIME_YDECODE_STATE_BEGIN    (1 << 12)

State bit that denotes the yEnc filter has found the =ybegin line.


GMIME_YDECODE_STATE_DECODE

#define GMIME_YDECODE_STATE_DECODE   (1 << 14)

State bit that denotes yEnc filter has begun decoding the actual yencoded content and will continue to do so until an =yend line is found (or until there is nothing left to decode).


GMIME_YDECODE_STATE_PART

#define GMIME_YDECODE_STATE_PART     (1 << 13)

State bit that denotes the yEnc filter has found the =ypart line. (Note: not all yencoded blocks have one)

See Also

GMimeFilter