Mercurial > dovecot > core-2.2
annotate src/lib-mail/message-parser.h @ 50:d493b9cc265e HEAD
Introduced uoff_t which is the unsigned-equilevant of off_t. This was needed
to be able to handle off_t overflows properly. Also changed a few unsigned
int fields into uoff_t so we should now support >2G mails if uoff_t is
64bit. Also fixed several potential integer overflows.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 27 Aug 2002 22:16:54 +0300 |
parents | 82b7de533f98 |
children | 31034993473c |
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 | |
8 struct _MessagePosition { | |
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
|
9 uoff_t physical_pos; |
d493b9cc265e
Introduced uoff_t which is the unsigned-equilevant of off_t. This was needed
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
10 uoff_t virtual_pos; |
0 | 11 }; |
12 | |
13 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
|
14 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
|
15 uoff_t virtual_size; |
0 | 16 unsigned int lines; |
17 }; | |
18 | |
19 struct _MessagePart { | |
20 MessagePart *parent; | |
21 MessagePart *next; | |
22 MessagePart *children; | |
23 | |
9
21c8e080150d
fixes, seems to be somewhat working now.
Timo Sirainen <tss@iki.fi>
parents:
5
diff
changeset
|
24 MessagePosition pos; /* absolute position from beginning of message */ |
0 | 25 MessageSize header_size; |
26 MessageSize body_size; | |
27 | |
28 unsigned int multipart:1; | |
29 unsigned int multipart_digest:1; | |
30 unsigned int message_rfc822:1; | |
31 unsigned int text:1; /* content-type: text/.. */ | |
32 unsigned int binary:1; /* content-transfer-encoding: binary */ | |
33 | |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
34 void *context; |
0 | 35 }; |
36 | |
37 /* NOTE: name and value aren't \0-terminated */ | |
38 typedef void (*MessageHeaderFunc)(MessagePart *part, | |
39 const char *name, unsigned int name_len, | |
40 const char *value, unsigned int value_len, | |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
41 void *context); |
0 | 42 |
43 /* func is called for each field in message header. */ | |
5
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
44 MessagePart *message_parse(Pool pool, IOBuffer *inbuf, |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
45 MessageHeaderFunc func, void *context); |
0 | 46 |
47 /* Call func for each field in message header. Fills the hdr_size. | |
48 part can be NULL, just make sure your header function works with it. | |
49 This function doesn't use temp. mempool so your header function may save | |
5
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
50 return values to it. When finished, inbuf will point to beginning of |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
51 message body. */ |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
52 void message_parse_header(MessagePart *part, IOBuffer *inbuf, |
0 | 53 MessageSize *hdr_size, |
10
82b7de533f98
s/user_data/context/ and some s/Data/Context/
Timo Sirainen <tss@iki.fi>
parents:
9
diff
changeset
|
54 MessageHeaderFunc func, void *context); |
0 | 55 |
56 #endif |