Blame


1 941e1713 2006-02-15 devnull enum
2 941e1713 2006-02-15 devnull {
3 941e1713 2006-02-15 devnull FlagJunk = 1<<0,
4 941e1713 2006-02-15 devnull FlagNonJunk = 1<<1,
5 941e1713 2006-02-15 devnull FlagReplied = 1<<2,
6 941e1713 2006-02-15 devnull FlagFlagged = 1<<3,
7 941e1713 2006-02-15 devnull FlagDeleted = 1<<4,
8 941e1713 2006-02-15 devnull FlagDraft = 1<<5,
9 941e1713 2006-02-15 devnull FlagSeen = 1<<6,
10 941e1713 2006-02-15 devnull FlagNoInferiors = 1<<7,
11 941e1713 2006-02-15 devnull FlagMarked = 1<<8,
12 941e1713 2006-02-15 devnull FlagNoSelect = 1<<9,
13 941e1713 2006-02-15 devnull FlagUnMarked = 1<<10,
14 cbeb0b26 2006-04-01 devnull FlagRecent = 1<<11
15 941e1713 2006-02-15 devnull };
16 941e1713 2006-02-15 devnull
17 941e1713 2006-02-15 devnull typedef struct Box Box;
18 941e1713 2006-02-15 devnull typedef struct Hdr Hdr;
19 941e1713 2006-02-15 devnull typedef struct Msg Msg;
20 941e1713 2006-02-15 devnull typedef struct Part Part;
21 941e1713 2006-02-15 devnull
22 941e1713 2006-02-15 devnull struct Box
23 941e1713 2006-02-15 devnull {
24 941e1713 2006-02-15 devnull char* name; /* name of mailbox */
25 941e1713 2006-02-15 devnull char* elem; /* last element in name */
26 941e1713 2006-02-15 devnull uint ix; /* index in box[] array */
27 941e1713 2006-02-15 devnull uint id; /* id shown in file system */
28 941e1713 2006-02-15 devnull uint flags; /* FlagNoInferiors, etc. */
29 941e1713 2006-02-15 devnull uint time; /* last update time */
30 941e1713 2006-02-15 devnull uint msgid; /* last message id used */
31 941e1713 2006-02-15 devnull
32 941e1713 2006-02-15 devnull Msg** msg; /* array of messages (can have nils) */
33 941e1713 2006-02-15 devnull uint nmsg;
34 fa325e9b 2020-01-10 cross
35 941e1713 2006-02-15 devnull char* imapname; /* name on IMAP server */
36 941e1713 2006-02-15 devnull u32int validity; /* IMAP validity number */
37 941e1713 2006-02-15 devnull uint uidnext; /* IMAP expected next uid */
38 941e1713 2006-02-15 devnull uint recent; /* IMAP first recent message */
39 941e1713 2006-02-15 devnull uint exists; /* IMAP last message in box */
40 941e1713 2006-02-15 devnull uint maxseen; /* maximum IMAP uid seen */
41 941e1713 2006-02-15 devnull int mark;
42 941e1713 2006-02-15 devnull uint imapinit; /* up-to-date w.r.t. IMAP */
43 941e1713 2006-02-15 devnull
44 941e1713 2006-02-15 devnull Box* parent; /* in tree */
45 941e1713 2006-02-15 devnull Box** sub;
46 941e1713 2006-02-15 devnull uint nsub;
47 941e1713 2006-02-15 devnull };
48 941e1713 2006-02-15 devnull
49 941e1713 2006-02-15 devnull struct Hdr
50 941e1713 2006-02-15 devnull {
51 941e1713 2006-02-15 devnull /* LATER: store date as int, reformat for programs */
52 941e1713 2006-02-15 devnull /* order known by fs.c */
53 941e1713 2006-02-15 devnull char* date;
54 941e1713 2006-02-15 devnull char* subject;
55 941e1713 2006-02-15 devnull char* from;
56 941e1713 2006-02-15 devnull char* sender;
57 941e1713 2006-02-15 devnull char* replyto;
58 941e1713 2006-02-15 devnull char* to;
59 941e1713 2006-02-15 devnull char* cc;
60 941e1713 2006-02-15 devnull char* bcc;
61 941e1713 2006-02-15 devnull char* inreplyto;
62 941e1713 2006-02-15 devnull char* messageid;
63 941e1713 2006-02-15 devnull char* digest;
64 941e1713 2006-02-15 devnull };
65 941e1713 2006-02-15 devnull
66 941e1713 2006-02-15 devnull struct Msg
67 941e1713 2006-02-15 devnull {
68 941e1713 2006-02-15 devnull Box* box; /* mailbox containing msg */
69 941e1713 2006-02-15 devnull uint ix; /* index in box->msg[] array */
70 941e1713 2006-02-15 devnull uint id; /* id shown in file system */
71 941e1713 2006-02-15 devnull uint imapuid; /* IMAP uid */
72 941e1713 2006-02-15 devnull uint imapid; /* IMAP id */
73 941e1713 2006-02-15 devnull uint flags; /* FlagDeleted etc. */
74 941e1713 2006-02-15 devnull uint date; /* smtp envelope date */
75 941e1713 2006-02-15 devnull uint size;
76 fa325e9b 2020-01-10 cross
77 941e1713 2006-02-15 devnull Part** part; /* message subparts - part[0] is root */
78 941e1713 2006-02-15 devnull uint npart;
79 941e1713 2006-02-15 devnull };
80 941e1713 2006-02-15 devnull
81 941e1713 2006-02-15 devnull struct Part
82 941e1713 2006-02-15 devnull {
83 941e1713 2006-02-15 devnull Msg* msg; /* msg containing part */
84 941e1713 2006-02-15 devnull uint ix; /* index in msg->part[] */
85 941e1713 2006-02-15 devnull uint pix; /* id in parent->sub[] */
86 941e1713 2006-02-15 devnull Part* parent; /* parent in structure */
87 941e1713 2006-02-15 devnull Part** sub; /* children in structure */
88 941e1713 2006-02-15 devnull uint nsub;
89 941e1713 2006-02-15 devnull
90 941e1713 2006-02-15 devnull /* order known by fs.c */
91 941e1713 2006-02-15 devnull char* type; /* e.g., "text/plain" */
92 941e1713 2006-02-15 devnull char* idstr;
93 941e1713 2006-02-15 devnull char* desc;
94 941e1713 2006-02-15 devnull char* encoding;
95 941e1713 2006-02-15 devnull char* charset;
96 141d6009 2006-06-30 devnull char* filename;
97 941e1713 2006-02-15 devnull char* raw;
98 941e1713 2006-02-15 devnull char* rawheader;
99 941e1713 2006-02-15 devnull char* rawbody;
100 941e1713 2006-02-15 devnull char* mimeheader;
101 941e1713 2006-02-15 devnull
102 941e1713 2006-02-15 devnull /* order known by fs.c */
103 941e1713 2006-02-15 devnull uint size;
104 941e1713 2006-02-15 devnull uint lines;
105 941e1713 2006-02-15 devnull
106 941e1713 2006-02-15 devnull char* body;
107 941e1713 2006-02-15 devnull uint nbody;
108 941e1713 2006-02-15 devnull Hdr* hdr; /* RFC822 envelope for message/rfc822 */
109 941e1713 2006-02-15 devnull };
110 941e1713 2006-02-15 devnull
111 941e1713 2006-02-15 devnull void boxinit(void);
112 941e1713 2006-02-15 devnull Box* boxbyname(char*);
113 941e1713 2006-02-15 devnull Box* boxbyid(uint);
114 941e1713 2006-02-15 devnull Box* boxcreate(char*);
115 941e1713 2006-02-15 devnull void boxfree(Box*);
116 941e1713 2006-02-15 devnull Box* subbox(Box*, char*);
117 941e1713 2006-02-15 devnull Msg* msgcreate(Box*);
118 941e1713 2006-02-15 devnull Part* partcreate(Msg*, Part*);
119 941e1713 2006-02-15 devnull
120 941e1713 2006-02-15 devnull void hdrfree(Hdr*);
121 941e1713 2006-02-15 devnull
122 941e1713 2006-02-15 devnull Msg* msgbyid(Box*, uint);
123 941e1713 2006-02-15 devnull Msg* msgbyimapuid(Box*, uint, int);
124 941e1713 2006-02-15 devnull void msgfree(Msg*);
125 941e1713 2006-02-15 devnull void msgplumb(Msg*, int);
126 941e1713 2006-02-15 devnull
127 941e1713 2006-02-15 devnull Part* partbyid(Msg*, uint);
128 941e1713 2006-02-15 devnull Part* subpart(Part*, uint);
129 941e1713 2006-02-15 devnull void partfree(Part*);
130 941e1713 2006-02-15 devnull
131 941e1713 2006-02-15 devnull extern Box** boxes;
132 941e1713 2006-02-15 devnull extern uint nboxes;
133 941e1713 2006-02-15 devnull
134 941e1713 2006-02-15 devnull extern Box* rootbox;