Import ezmlm-idx 0.40
[ezmlm] / mime.h
CommitLineData
f8beb284
MW
1#ifndef MIME_H
2#define MIME_H
3
4#include "stralloc.h"
5
6extern void decodeQ();
7extern void decodeB();
8extern void encodeQ();
9extern void encodeB();
10extern void decodeHDR();
11extern void concatHDR();
12extern int unfoldHDR();
13
14#ifdef WITH_PROTO
15extern unsigned int author_name(char **,char *,unsigned int);
16#else
17extern unsigned int author_name();
18#endif
19
20/* Characters */
21#define ESC 0x1B
22#define SI 0x0F
23#define SO 0x0E
24/* iso-2022-jp back-to-ascii seq */
25#define TOASCII "\x1B(B"
26/* to JP. Last char [B|@] must be added */
27#define TOJP "\x1B$"
28
29/* iso-2022 SI sequence as string */
30#define TOSI "\x0F"
31/* SI \n SO */
32#define SI_LF_SO "\x0F\n\x0E"
33
34/* in these bit 0 determines the number of bytes (1 or 2) in ss2/ss3 codes */
35/* it is 2 for CN,1 for JP, and they are not used for KR bit 3 for */
36/* iso-2022 */
37#define CS_2022_MASK 0x08
38#define CS_2022_JP 0x08
39#define CS_2022_KR 0xA0
40#define CS_NONE 0
41#define CS_BAD 0xffff
42
43#define CS_2022_CN 0x09
44/* Other Chinese ones. bit 7 set means MSB of 2-byte seq. No ss2/ss3 consid*/
45#define CS_CN 0x10
46
47#define MIME_NONE 0
48#define MIME_APPLICATION_OCTETSTREAM 1
49#define MIME_MULTI 0x80
50#define MIME_MULTI_ALTERNATIVE 0x81
51#define MIME_MULTI_MIXED 0x82
52#define MIME_MULTI_DIGEST 0x83
53#define MIME_MULTI_SIGNED 0x84
54
55#define MIME_TEXT 0x40
56#define MIME_TEXT_PLAIN 0x41
57#define MIME_TEXT_HTML 0x42
58#define MIME_TEXT_ENRICHED 0x43
59#define MIME_TEXT_VCARD 0x44
60
61#define MIME_MESSAGE 0x20
62#define MIME_MESSAGE_RFC822 0x21
63
64#define CTENC_NONE 0
65#define CTENC_QP 1
66#define CTENC_BASE64 2
67
68/* this is a linked list of mime type info. */
69typedef struct {
70 int level;
71 unsigned int mimetype;
72 unsigned int ctenc;
73 unsigned int cs; /* charset flag - expand later */
74 void *previous;
75 void *next;
76 stralloc boundary;
77 stralloc charset;
78 stralloc ctype;
79} mime_info;
80
81#endif