]> code.citadel.org Git - citadel.git/blob - citadel/serv_imap.h
* Trying to fix a memory bug somewhere.
[citadel.git] / citadel / serv_imap.h
1 /* $Id$ 
2  */
3
4
5 void imap_cleanup_function(void);
6 void imap_greeting(void);
7 void imap_command_loop(void);
8 int imap_grabroom(char *returned_roomname, char *foldername, int zapped_ok);
9 void imap_free_transmitted_message(void);
10 int imap_do_expunge(void);
11
12
13 struct citimap {
14         int authstate;
15         char authseq[SIZ];
16         int selected;                   /* set to 1 if in the SELECTED state */
17         int readonly;                   /* mailbox is open read only */
18         int num_msgs;                   /* Number of messages being mapped */
19         long *msgids;
20         unsigned int *flags;
21         char *transmitted_message;      /* for APPEND command... */
22         size_t transmitted_length;
23
24         /* Cache most recent RFC822 FETCH because client might load in pieces */
25         char *cached_rfc822_data;
26         long cached_rfc822_msgnum;
27         size_t cached_rfc822_len;
28
29         /* Cache most recent BODY FETCH because client might load in pieces */
30         char *cached_body;
31         size_t cached_body_len;
32         char cached_bodypart[SIZ];
33         long cached_bodymsgnum;
34 };
35
36 /*
37  * values of 'authstate'
38  */
39 enum {
40         imap_as_normal,
41         imap_as_expecting_username,
42         imap_as_expecting_password
43 };
44
45 /* Flags for the above struct.  Note that some of these are for internal use,
46  * and are not to be reported to IMAP clients.
47  */
48 #define IMAP_ANSWERED           1       /* reportable and setable */
49 #define IMAP_FLAGGED            2       /* reportable and setable */
50 #define IMAP_DELETED            4       /* reportable and setable */
51 #define IMAP_DRAFT              8       /* reportable and setable */
52 #define IMAP_SEEN               16      /* reportable and setable */
53
54 #define IMAP_MASK_SETABLE       0x1f
55 #define IMAP_MASK_SYSTEM        0xe0
56
57 #define IMAP_SELECTED           32      /* neither reportable nor setable */
58 #define IMAP_RECENT             64      /* reportable but not setable */
59
60
61 #define IMAP CC->IMAP
62
63 /*
64  * When loading arrays of message ID's into memory, increase the buffer to
65  * hold this many additional messages instead of calling realloc() each time.
66  */
67 #define REALLOC_INCREMENT 100