Top | ![]() |
![]() |
![]() |
![]() |
GMimeFilter * | g_mime_filter_yenc_new () |
void | g_mime_filter_yenc_set_state () |
void | g_mime_filter_yenc_set_crc () |
guint32 | g_mime_filter_yenc_get_crc () |
guint32 | g_mime_filter_yenc_get_pcrc () |
#define | GMIME_YENCODE_CRC_FINAL() |
size_t | g_mime_ydecode_step () |
size_t | g_mime_yencode_step () |
size_t | g_mime_yencode_close () |
struct | GMimeFilterYenc |
#define | GMIME_YENCODE_CRC_INIT |
#define | GMIME_YENCODE_STATE_INIT |
#define | GMIME_YDECODE_STATE_INIT |
#define | GMIME_YDECODE_STATE_EOLN |
#define | GMIME_YDECODE_STATE_ESCAPE |
#define | GMIME_YDECODE_STATE_END |
#define | GMIME_YDECODE_STATE_BEGIN |
#define | GMIME_YDECODE_STATE_DECODE |
#define | GMIME_YDECODE_STATE_PART |
GMimeFilter *
g_mime_filter_yenc_new (gboolean encode
);
Creates a new yEnc filter.
void g_mime_filter_yenc_set_state (GMimeFilterYenc *yenc
,int state
);
Sets the current state of the yencoder/ydecoder
void g_mime_filter_yenc_set_crc (GMimeFilterYenc *yenc
,guint32 crc
);
Sets the current crc32 value on the yEnc filter yenc
to crc
.
guint32
g_mime_filter_yenc_get_crc (GMimeFilterYenc *yenc
);
Get the computed crc or (guint32) -1 on fail.
guint32
g_mime_filter_yenc_get_pcrc (GMimeFilterYenc *yenc
);
Get the computed part crc or (guint32) -1 on fail.
#define GMIME_YENCODE_CRC_FINAL(crc) (~crc)
Gets the final crc value from crc
.
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
).
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.
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.
#define GMIME_YENCODE_CRC_INIT (~0)
Initial state for the crc and pcrc state variables.
#define GMIME_YENCODE_STATE_INIT (0)
Initial state for the g_mime_ydecode_step()
function.
#define GMIME_YDECODE_STATE_INIT (0)
Initial state for the g_mime_ydecode_step()
function.
#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.
#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.
#define GMIME_YDECODE_STATE_END (1 << 15)
State bit that denoates that g_mime_ydecode_step()
has finished
decoding.
#define GMIME_YDECODE_STATE_BEGIN (1 << 12)
State bit that denotes the yEnc filter has found the =ybegin line.
#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).