1 #ifndef RFC2822_H
2 #define RFC2822_H
3 
4 #include "lib.h"
5 
6 #include <stdio.h>
7 
8 /*
9  * Verification
10  */
11 
12 bool rfc2822_header_field_name_verify
13 	(const char *field_name, unsigned int len);
14 bool rfc2822_header_field_body_verify
15 	(const char *field_body, unsigned int len, bool allow_crlf, bool allow_utf8);
16 
17 /*
18  *
19  */
20 
21 const char *rfc2822_header_field_name_sanitize(const char *name);
22 
23 /*
24  * Message composition
25  */
26 
27 unsigned int rfc2822_header_append
28 	(string_t *header, const char *name, const char *body, bool crlf,
29 		uoff_t *body_offset_r);
30 
rfc2822_header_write(string_t * header,const char * name,const char * body)31 static inline void rfc2822_header_write
32 (string_t *header, const char *name, const char *body)
33 {
34 	(void)rfc2822_header_append(header, name, body, TRUE, NULL);
35 }
36 
37 void rfc2822_header_printf
38 	(string_t *header, const char *name, const char *fmt, ...) ATTR_FORMAT(3, 4);
39 void rfc2822_header_utf8_printf
40 	(string_t *header, const char *name, const char *fmt, ...) ATTR_FORMAT(3, 4);
41 
42 void rfc2822_header_write_address(string_t *header,
43 	const char *name, const char *address);
44 
45 
46 #endif
47