Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib-mail/message-parser.h @ 410:1f0e7229ee58 HEAD
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
file OBuffer.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 14 Oct 2002 02:49:11 +0300 |
parents | f3ab97771ed8 |
children | f57c52738f90 |
rev | line source |
---|---|
0 | 1 #ifndef __MESSAGE_PARSER_H |
2 #define __MESSAGE_PARSER_H | |
3 | |
4 typedef struct _MessagePart MessagePart; | |
5 typedef struct _MessagePosition MessagePosition; | |
6 typedef struct _MessageSize MessageSize; | |
7 | |
106
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
8 typedef enum { |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
9 MESSAGE_PART_FLAG_MULTIPART = 0x01, |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
10 MESSAGE_PART_FLAG_MULTIPART_DIGEST = 0x02, |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
11 MESSAGE_PART_FLAG_MESSAGE_RFC822 = 0x04, |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
12 |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
13 /* content-type: text/... */ |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
14 MESSAGE_PART_FLAG_TEXT = 0x08, |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
15 |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
16 /* content-transfer-encoding: binary */ |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
17 MESSAGE_PART_FLAG_BINARY = 0x10 |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
18 } MessagePartFlags; |
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
19 |
0 | 20 struct _MessageSize { |
50
d493b9cc265e
Introduced uoff_t which is the unsigned-equilevant of off_t. This was needed
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
21 uoff_t physical_size; |
d493b9cc265e
Introduced uoff_t which is the unsigned-equilevant of off_t. This was needed
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
22 uoff_t virtual_size; |
0 | 23 unsigned int lines; |
24 }; | |
25 | |
26 struct _MessagePart { | |
27 MessagePart *parent; | |
28 MessagePart *next; | |
29 MessagePart *children; | |
30 | |
105
31034993473c
there was no need for MessagePart->pos.virtual_pos, so removed it.
Timo Sirainen <tss@iki.fi>
parents:
50
diff
changeset
|
31 uoff_t physical_pos; /* absolute position from beginning of message */ |
0 | 32 MessageSize header_size; |
33 MessageSize body_size; | |
34 | |
106
5fe3e04ca8d9
Added support for caching of MessagePart data. This is useful for fetching
Timo Sirainen <tss@iki.fi>
parents:
105
diff
changeset
|
35 MessagePartFlags flags; |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
36 void *context; |
0 | 37 }; |
38 | |
369
d037915978ca
message_parse_header() now calls the function with empty name/value at end
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
39 /* NOTE: name and value aren't \0-terminated. Also called once at end of |
d037915978ca
message_parse_header() now calls the function with empty name/value at end
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
40 headers with name_len = value_len = 0. */ |
0 | 41 typedef void (*MessageHeaderFunc)(MessagePart *part, |
184 | 42 const char *name, size_t name_len, |
43 const char *value, size_t value_len, | |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
44 void *context); |
0 | 45 |
46 /* func is called for each field in message header. */ | |
410
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
400
diff
changeset
|
47 MessagePart *message_parse(Pool pool, IBuffer *inbuf, |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
48 MessageHeaderFunc func, void *context); |
0 | 49 |
50 /* Call func for each field in message header. Fills the hdr_size. | |
51 part can be NULL, just make sure your header function works with it. | |
400
f3ab97771ed8
changed all "temporary memory pool" references to "data stack"
Timo Sirainen <tss@iki.fi>
parents:
369
diff
changeset
|
52 This function doesn't use data stack so your header function may save |
f3ab97771ed8
changed all "temporary memory pool" references to "data stack"
Timo Sirainen <tss@iki.fi>
parents:
369
diff
changeset
|
53 values to it. When finished, inbuf will point to beginning of message |
f3ab97771ed8
changed all "temporary memory pool" references to "data stack"
Timo Sirainen <tss@iki.fi>
parents:
369
diff
changeset
|
54 body. */ |
410
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
400
diff
changeset
|
55 void message_parse_header(MessagePart *part, IBuffer *inbuf, |
0 | 56 MessageSize *hdr_size, |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
57 MessageHeaderFunc func, void *context); |
0 | 58 |
59 #endif |