imap-based new upas/fs
This commit is contained in:
parent
1ea614ffaf
commit
941e17134e
15 changed files with 4168 additions and 0 deletions
133
src/cmd/upas/nfs/box.h
Normal file
133
src/cmd/upas/nfs/box.h
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
enum
|
||||
{
|
||||
FlagJunk = 1<<0,
|
||||
FlagNonJunk = 1<<1,
|
||||
FlagReplied = 1<<2,
|
||||
FlagFlagged = 1<<3,
|
||||
FlagDeleted = 1<<4,
|
||||
FlagDraft = 1<<5,
|
||||
FlagSeen = 1<<6,
|
||||
FlagNoInferiors = 1<<7,
|
||||
FlagMarked = 1<<8,
|
||||
FlagNoSelect = 1<<9,
|
||||
FlagUnMarked = 1<<10,
|
||||
};
|
||||
|
||||
typedef struct Box Box;
|
||||
typedef struct Hdr Hdr;
|
||||
typedef struct Msg Msg;
|
||||
typedef struct Part Part;
|
||||
|
||||
struct Box
|
||||
{
|
||||
char* name; /* name of mailbox */
|
||||
char* elem; /* last element in name */
|
||||
uint ix; /* index in box[] array */
|
||||
uint id; /* id shown in file system */
|
||||
uint flags; /* FlagNoInferiors, etc. */
|
||||
uint time; /* last update time */
|
||||
uint msgid; /* last message id used */
|
||||
|
||||
Msg** msg; /* array of messages (can have nils) */
|
||||
uint nmsg;
|
||||
|
||||
char* imapname; /* name on IMAP server */
|
||||
u32int validity; /* IMAP validity number */
|
||||
uint uidnext; /* IMAP expected next uid */
|
||||
uint recent; /* IMAP first recent message */
|
||||
uint exists; /* IMAP last message in box */
|
||||
uint maxseen; /* maximum IMAP uid seen */
|
||||
int mark;
|
||||
uint imapinit; /* up-to-date w.r.t. IMAP */
|
||||
|
||||
Box* parent; /* in tree */
|
||||
Box** sub;
|
||||
uint nsub;
|
||||
};
|
||||
|
||||
struct Hdr
|
||||
{
|
||||
/* LATER: store date as int, reformat for programs */
|
||||
/* order known by fs.c */
|
||||
char* date;
|
||||
char* subject;
|
||||
char* from;
|
||||
char* sender;
|
||||
char* replyto;
|
||||
char* to;
|
||||
char* cc;
|
||||
char* bcc;
|
||||
char* inreplyto;
|
||||
char* messageid;
|
||||
char* digest;
|
||||
};
|
||||
|
||||
struct Msg
|
||||
{
|
||||
Box* box; /* mailbox containing msg */
|
||||
uint ix; /* index in box->msg[] array */
|
||||
uint id; /* id shown in file system */
|
||||
uint imapuid; /* IMAP uid */
|
||||
uint imapid; /* IMAP id */
|
||||
uint flags; /* FlagDeleted etc. */
|
||||
uint date; /* smtp envelope date */
|
||||
uint size;
|
||||
|
||||
Part** part; /* message subparts - part[0] is root */
|
||||
uint npart;
|
||||
};
|
||||
|
||||
struct Part
|
||||
{
|
||||
Msg* msg; /* msg containing part */
|
||||
uint ix; /* index in msg->part[] */
|
||||
uint pix; /* id in parent->sub[] */
|
||||
Part* parent; /* parent in structure */
|
||||
Part** sub; /* children in structure */
|
||||
uint nsub;
|
||||
|
||||
/* order known by fs.c */
|
||||
char* type; /* e.g., "text/plain" */
|
||||
char* idstr;
|
||||
char* desc;
|
||||
char* encoding;
|
||||
char* charset;
|
||||
char* raw;
|
||||
char* rawheader;
|
||||
char* rawbody;
|
||||
char* mimeheader;
|
||||
|
||||
/* order known by fs.c */
|
||||
uint size;
|
||||
uint lines;
|
||||
|
||||
char* body;
|
||||
uint nbody;
|
||||
Hdr* hdr; /* RFC822 envelope for message/rfc822 */
|
||||
};
|
||||
|
||||
void boxinit(void);
|
||||
Box* boxbyname(char*);
|
||||
Box* boxbyid(uint);
|
||||
Box* boxcreate(char*);
|
||||
void boxfree(Box*);
|
||||
Box* subbox(Box*, char*);
|
||||
Msg* msgcreate(Box*);
|
||||
Part* partcreate(Msg*, Part*);
|
||||
|
||||
void hdrfree(Hdr*);
|
||||
|
||||
Msg* msgbyid(Box*, uint);
|
||||
Msg* msgbyimapuid(Box*, uint, int);
|
||||
void msgfree(Msg*);
|
||||
void msgplumb(Msg*, int);
|
||||
|
||||
Part* partbyid(Msg*, uint);
|
||||
Part* subpart(Part*, uint);
|
||||
void partfree(Part*);
|
||||
|
||||
extern Box** boxes;
|
||||
extern uint nboxes;
|
||||
|
||||
extern Box* rootbox;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue