Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-mail/message-parser.h @ 0:3b1985cbc908 HEAD
Initial revision
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 09 Aug 2002 12:15:38 +0300 |
parents | |
children | 1b34ec11fff8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib-mail/message-parser.h Fri Aug 09 12:15:38 2002 +0300 @@ -0,0 +1,55 @@ +#ifndef __MESSAGE_PARSER_H +#define __MESSAGE_PARSER_H + +typedef struct _MessagePart MessagePart; +typedef struct _MessagePosition MessagePosition; +typedef struct _MessageSize MessageSize; + +struct _MessagePosition { + off_t physical_pos; + off_t virtual_pos; +}; + +struct _MessageSize { + size_t physical_size; + size_t virtual_size; + unsigned int lines; +}; + +struct _MessagePart { + MessagePart *parent; + MessagePart *next; + MessagePart *children; + + MessagePosition pos; + MessageSize header_size; + MessageSize body_size; + + unsigned int multipart:1; + unsigned int multipart_digest:1; + unsigned int message_rfc822:1; + unsigned int text:1; /* content-type: text/.. */ + unsigned int binary:1; /* content-transfer-encoding: binary */ + + void *user_data; +}; + +/* NOTE: name and value aren't \0-terminated */ +typedef void (*MessageHeaderFunc)(MessagePart *part, + const char *name, unsigned int name_len, + const char *value, unsigned int value_len, + void *user_data); + +/* func is called for each field in message header. */ +MessagePart *message_parse(Pool pool, const char *msg, size_t size, + MessageHeaderFunc func, void *user_data); + +/* Call func for each field in message header. Fills the hdr_size. + part can be NULL, just make sure your header function works with it. + This function doesn't use temp. mempool so your header function may save + return values to it. */ +void message_parse_header(MessagePart *part, const char *msg, size_t size, + MessageSize *hdr_size, + MessageHeaderFunc func, void *user_data); + +#endif