GMimeParser

GMimeParser — Message and MIME part parser

Types and Values

struct GMimeParser
enum GMimeFormat

Object Hierarchy

    GObject
    ╰── GMimeParser

Description

A GMimeParser parses a stream into a GMimeMessage or other GMimeObject and can also handle parsing MBox formatted streams into multiple GMimeMessage objects.

Functions

GMimeParserHeaderRegexFunc ()

void
(*GMimeParserHeaderRegexFunc) (GMimeParser *parser,
                               const char *header,
                               const char *value,
                               gint64 offset,
                               gpointer user_data);

Function signature for the callback to g_mime_parser_set_header_regex().

Parameters

parser

The GMimeParser object.

 

header

The header field matched.

 

value

The header field value.

 

offset

The header field offset.

 

user_data

The user-supplied callback data.

 

g_mime_parser_new ()

GMimeParser *
g_mime_parser_new (void);

Creates a new parser object.

Returns

a new parser object.


g_mime_parser_new_with_stream ()

GMimeParser *
g_mime_parser_new_with_stream (GMimeStream *stream);

Creates a new parser object preset to parse stream .

Parameters

stream

raw message or part stream

 

Returns

a new parser object.


g_mime_parser_init_with_stream ()

void
g_mime_parser_init_with_stream (GMimeParser *parser,
                                GMimeStream *stream);

Initializes parser to use stream .

WARNING: Initializing a parser with a stream is comparable to selling your soul (stream ) to the devil (parser ). You are basically giving the parser complete control of the stream, this means that you had better not touch the stream so long as the parser is still using it. This means no reading, writing, seeking, or resetting of the stream. Anything that will/could change the current stream's offset is PROHIBITED.

It is also recommended that you not use g_mime_stream_tell() because it will not necessarily give you the current parser offset since parser handles its own internal read-ahead buffer. Instead, it is recommended that you use g_mime_parser_tell() if you have a reason to need the current offset of the parser .

Parameters

parser

a GMimeParser context

 

stream

raw message or part stream

 

g_mime_parser_get_persist_stream ()

gboolean
g_mime_parser_get_persist_stream (GMimeParser *parser);

Gets whether or not the underlying stream is persistent.

Parameters

parser

a GMimeParser context

 

Returns

TRUE if the parser will leave the content on disk or FALSE if it will load the content into memory.


g_mime_parser_set_persist_stream ()

void
g_mime_parser_set_persist_stream (GMimeParser *parser,
                                  gboolean persist);

Sets whether or not the parser 's underlying stream is persistent.

If persist is TRUE, the parser will attempt to construct messages/parts whose content will remain on disk rather than being loaded into memory so as to reduce memory usage. This is the default.

If persist is FALSE, the parser will always load message content into memory.

Note: This attribute only serves as a hint to the parser . If the underlying stream does not support seeking, then this attribute will be ignored.

By default, this feature is enabled if the underlying stream is seekable.

Parameters

parser

a GMimeParser context

 

persist

persist attribute

 

g_mime_parser_get_format ()

GMimeFormat
g_mime_parser_get_format (GMimeParser *parser);

Gets the format that the parser is set to parse.

Parameters

parser

a GMimeParser context

 

Returns

the format that the parser is set to parse.


g_mime_parser_set_format ()

void
g_mime_parser_set_format (GMimeParser *parser,
                          GMimeFormat format);

Sets the format that the parser should expect the stream to be in.

Parameters

parser

a GMimeParser context

 

format

a GMimeFormat

 

g_mime_parser_get_respect_content_length ()

gboolean
g_mime_parser_get_respect_content_length
                               (GMimeParser *parser);

Gets whether or not parser is set to use Content-Length for determining the offset of the end of the message.

Parameters

parser

a GMimeParser context

 

Returns

whether or not parser is set to use Content-Length for determining the offset of the end of the message.


g_mime_parser_set_respect_content_length ()

void
g_mime_parser_set_respect_content_length
                               (GMimeParser *parser,
                                gboolean respect_content_length);

Sets whether or not parser should respect Content-Length headers when deciding where to look for the start of the next message. Only used when the parser is also set to scan for From-lines.

Most notably useful when parsing broken Solaris mbox files (See http://www.jwz.org/doc/content-length.html for details).

By default, this feature is disabled.

Parameters

parser

a GMimeParser context

 

respect_content_length

TRUE if the parser should use Content-Length headers or FALSE otherwise.

 

g_mime_parser_set_header_regex ()

void
g_mime_parser_set_header_regex (GMimeParser *parser,
                                const char *regex,
                                GMimeParserHeaderRegexFunc header_cb,
                                gpointer user_data);

Sets the regular expression pattern regex on parser . Whenever a header matching the pattern regex is parsed, header_cb is called with user_data as the user_data argument.

If regex is NULL, then the previously registered regex callback is unregistered and no new callback is set.

[skip]

Parameters

parser

a GMimeParser context

 

regex

regular expression

 

header_cb

callback function

 

user_data

user data

 

g_mime_parser_tell ()

gint64
g_mime_parser_tell (GMimeParser *parser);

Gets the current stream offset from the parser's internal stream.

Parameters

parser

a GMimeParser context

 

Returns

the current stream offset from the parser's internal stream or -1 on error.


g_mime_parser_eos ()

gboolean
g_mime_parser_eos (GMimeParser *parser);

Tests the end-of-stream indicator for parser 's internal stream.

Parameters

parser

a GMimeParser context

 

Returns

TRUE on EOS or FALSE otherwise.


g_mime_parser_construct_part ()

GMimeObject *
g_mime_parser_construct_part (GMimeParser *parser,
                              GMimeParserOptions *options);

Constructs a MIME part from parser .

Parameters

parser

a GMimeParser context

 

options

a GMimeParserOptions or NULL.

[nullable]

Returns

a MIME part based on parser or NULL on fail.

[nullable][transfer full]


g_mime_parser_construct_message ()

GMimeMessage *
g_mime_parser_construct_message (GMimeParser *parser,
                                 GMimeParserOptions *options);

Constructs a MIME message from parser .

Parameters

parser

a GMimeParser context

 

options

a GMimeParserOptions or NULL.

[nullable]

Returns

a MIME message or NULL on fail.

[nullable][transfer full]


g_mime_parser_get_mbox_marker ()

char *
g_mime_parser_get_mbox_marker (GMimeParser *parser);

Gets the mbox-style From-line of the most recently parsed message (gotten from g_mime_parser_construct_message()).

Parameters

parser

a GMimeParser context

 

Returns

the mbox-style From-line of the most recently parsed message or NULL on error.

[nullable]


g_mime_parser_get_mbox_marker_offset ()

gint64
g_mime_parser_get_mbox_marker_offset (GMimeParser *parser);

Gets the offset of the most recently parsed mbox-style From-line (gotten from g_mime_parser_construct_message()).

Parameters

parser

a GMimeParser context

 

Returns

the offset of the most recently parsed mbox-style From-line or -1 on error.


g_mime_parser_get_headers_begin ()

gint64
g_mime_parser_get_headers_begin (GMimeParser *parser);

Gets the stream offset of the beginning of the headers of the most recently parsed message.

Parameters

parser

a GMimeParser context

 

Returns

the offset of the beginning of the headers of the most recently parsed message or -1 on error.


g_mime_parser_get_headers_end ()

gint64
g_mime_parser_get_headers_end (GMimeParser *parser);

Gets the stream offset of the end of the headers of the most recently parsed message.

Parameters

parser

a GMimeParser context

 

Returns

the offset of the end of the headers of the most recently parsed message or -1 on error.

Types and Values

struct GMimeParser

struct GMimeParser;

A MIME parser context.

Members


enum GMimeFormat

An enum of formats.

Members

GMIME_FORMAT_MESSAGE

The stream contains a single message.

 

GMIME_FORMAT_MBOX

The stream is in the UNIX mbox format.

 

GMIME_FORMAT_MMDF

The stream is in the MMDF format.