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