annotate src/lib-storage/mail-storage.h @ 3260:6a179bf1272e HEAD

Moved several getenv()s from lib-storage to main code. deliver binary was missing several getenvs..
author Timo Sirainen <tss@iki.fi>
date Sun, 03 Apr 2005 14:36:06 +0300
parents a2943c050571
children 043466594f88
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef __MAIL_STORAGE_H
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define __MAIL_STORAGE_H
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
4 struct message_size;
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
5
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
6 #include "mail-types.h"
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
8 enum mail_storage_flags {
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
9 /* Print debugging information while initializing the storage */
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
10 MAIL_STORAGE_FLAG_DEBUG = 0x01,
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
11 /* Allow full filesystem access with absolute or relative paths. */
3260
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
12 MAIL_STORAGE_FLAG_FULL_FS_ACCESS = 0x02,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
13 /* Don't try to mmap() files */
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
14 MAIL_STORAGE_FLAG_MMAP_DISABLE = 0x04,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
15 /* Don't try to write() to mmap()ed files. Required for the few
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
16 OSes that don't have unified buffer cache
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
17 (currently OpenBSD <= 3.5) */
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
18 MAIL_STORAGE_FLAG_MMAP_NO_WRITE = 0x08,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
19 /* Remember message headers' MD5 sum */
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
20 MAIL_STORAGE_FLAG_KEEP_HEADER_MD5 = 0x10,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
21 /* Use mmap() for reading mail files. */
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
22 MAIL_STORAGE_FLAG_MMAP_MAILS = 0x20,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
23 /* Use CRLF linefeeds when saving mails. */
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
24 MAIL_STORAGE_FLAG_SAVE_CRLF = 0x40
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
25 };
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
26
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
27 enum mail_storage_lock_method {
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
28 MAIL_STORAGE_LOCK_FCNTL,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
29 MAIL_STORAGE_LOCK_FLOCK,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
30 MAIL_STORAGE_LOCK_DOTLOCK
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
31 };
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
32
1622
d22e03714d36 index_mmap_invalidate = yes now invalidate memory maps before accessing
Timo Sirainen <tss@iki.fi>
parents: 1552
diff changeset
33 enum mailbox_open_flags {
3245
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
34 /* Mailbox must not be modified even if asked */
1622
d22e03714d36 index_mmap_invalidate = yes now invalidate memory maps before accessing
Timo Sirainen <tss@iki.fi>
parents: 1552
diff changeset
35 MAILBOX_OPEN_READONLY = 0x01,
3245
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
36 /* Any extra time consuming operations shouldn't be performed
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
37 (eg. when opening mailbox just for STATUS). */
2039
f0925b2271e1 Added pop3_mails_keep_recent option. Fixed recent assert crash.
Timo Sirainen <tss@iki.fi>
parents: 1958
diff changeset
38 MAILBOX_OPEN_FAST = 0x02,
3245
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
39 /* Don't reset MAIL_RECENT flags when syncing */
3260
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
40 MAILBOX_OPEN_KEEP_RECENT = 0x04
1622
d22e03714d36 index_mmap_invalidate = yes now invalidate memory maps before accessing
Timo Sirainen <tss@iki.fi>
parents: 1552
diff changeset
41 };
d22e03714d36 index_mmap_invalidate = yes now invalidate memory maps before accessing
Timo Sirainen <tss@iki.fi>
parents: 1552
diff changeset
42
1198
d28571e8c810 Rewrote LIST, LSUB and subscription file handling. LIST replies aren't
Timo Sirainen <tss@iki.fi>
parents: 1179
diff changeset
43 enum mailbox_list_flags {
1244
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
44 MAILBOX_LIST_SUBSCRIBED = 0x01,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
45 MAILBOX_LIST_FAST_FLAGS = 0x02,
2589
3a9a34bc0d05 Added MAILBOX_LIST_INBOX flag. Do the special cased INBOX handling only if
Timo Sirainen <tss@iki.fi>
parents: 2518
diff changeset
46 MAILBOX_LIST_CHILDREN = 0x04,
3a9a34bc0d05 Added MAILBOX_LIST_INBOX flag. Do the special cased INBOX handling only if
Timo Sirainen <tss@iki.fi>
parents: 2518
diff changeset
47 MAILBOX_LIST_INBOX = 0x04
1198
d28571e8c810 Rewrote LIST, LSUB and subscription file handling. LIST replies aren't
Timo Sirainen <tss@iki.fi>
parents: 1179
diff changeset
48 };
d28571e8c810 Rewrote LIST, LSUB and subscription file handling. LIST replies aren't
Timo Sirainen <tss@iki.fi>
parents: 1179
diff changeset
49
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
50 enum mailbox_flags {
1244
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
51 MAILBOX_NOSELECT = 0x001,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
52 MAILBOX_NONEXISTENT = 0x002,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
53 MAILBOX_PLACEHOLDER = 0x004,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
54 MAILBOX_CHILDREN = 0x008,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
55 MAILBOX_NOCHILDREN = 0x010,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
56 MAILBOX_NOINFERIORS = 0x020,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
57 MAILBOX_MARKED = 0x040,
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
58 MAILBOX_UNMARKED = 0x080,
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
1244
40bae47bdba1 Added support for CHILDREN and LISTEXT extensions.
Timo Sirainen <tss@iki.fi>
parents: 1218
diff changeset
60 MAILBOX_READONLY = 0x100
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
61 };
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
62
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
63 enum mailbox_status_items {
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 STATUS_MESSAGES = 0x01,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65 STATUS_RECENT = 0x02,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66 STATUS_UIDNEXT = 0x04,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 STATUS_UIDVALIDITY = 0x08,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 STATUS_UNSEEN = 0x10,
100
867ec80dbf42 Custom flags are now shown in FLAGS and PERMANENTFLAGS lists after SELECT.
Timo Sirainen <tss@iki.fi>
parents: 50
diff changeset
69 STATUS_FIRST_UNSEEN_SEQ = 0x20,
1958
4dec6a3d79fd s/custom flags/keywords/
Timo Sirainen <tss@iki.fi>
parents: 1917
diff changeset
70 STATUS_KEYWORDS = 0x40
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
71 };
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
73 enum mailbox_name_status {
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 MAILBOX_NAME_EXISTS,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 MAILBOX_NAME_VALID,
889
f6e6812bd872 comment updates
Timo Sirainen <tss@iki.fi>
parents: 883
diff changeset
76 MAILBOX_NAME_INVALID,
f6e6812bd872 comment updates
Timo Sirainen <tss@iki.fi>
parents: 883
diff changeset
77 MAILBOX_NAME_NOINFERIORS
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
78 };
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79
906
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
80 enum mail_sort_type {
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
81 /* Maximum size for sort program, 2x for reverse + END */
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
82 #define MAX_SORT_PROGRAM_SIZE (2*7 + 1)
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
83
906
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
84 MAIL_SORT_ARRIVAL = 0x0010,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
85 MAIL_SORT_CC = 0x0020,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
86 MAIL_SORT_DATE = 0x0040,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
87 MAIL_SORT_FROM = 0x0080,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
88 MAIL_SORT_SIZE = 0x0100,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
89 MAIL_SORT_SUBJECT = 0x0200,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
90 MAIL_SORT_TO = 0x0400,
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
91
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
92 MAIL_SORT_REVERSE = 0x0001, /* reverse the next type */
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
93
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
94 MAIL_SORT_END = 0x0000 /* ends sort program */
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
95 };
b176f913d092 "ISO C forbids forward references to enum types"
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
96
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
97 enum mail_fetch_field {
2238
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
98 MAIL_FETCH_FLAGS = 0x00000001,
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
99 MAIL_FETCH_MESSAGE_PARTS = 0x00000002,
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
100
2238
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
101 MAIL_FETCH_RECEIVED_DATE = 0x00000004,
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
102 MAIL_FETCH_DATE = 0x00000008,
2504
98f6057f27a1 Added mail.get_physical_size().
Timo Sirainen <tss@iki.fi>
parents: 2446
diff changeset
103 MAIL_FETCH_VIRTUAL_SIZE = 0x00000010,
98f6057f27a1 Added mail.get_physical_size().
Timo Sirainen <tss@iki.fi>
parents: 2446
diff changeset
104 MAIL_FETCH_PHYSICAL_SIZE = 0x00000020,
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
105
2504
98f6057f27a1 Added mail.get_physical_size().
Timo Sirainen <tss@iki.fi>
parents: 2446
diff changeset
106 MAIL_FETCH_STREAM_HEADER = 0x00000040,
98f6057f27a1 Added mail.get_physical_size().
Timo Sirainen <tss@iki.fi>
parents: 2446
diff changeset
107 MAIL_FETCH_STREAM_BODY = 0x00000080,
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
108
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
109 /* specials: */
2238
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
110 MAIL_FETCH_IMAP_BODY = 0x00001000,
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
111 MAIL_FETCH_IMAP_BODYSTRUCTURE = 0x00002000,
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
112 MAIL_FETCH_IMAP_ENVELOPE = 0x00004000,
9cc23c29aaec Added a framework for getting POP3 UIDL strings from mail-storage. The
Timo Sirainen <tss@iki.fi>
parents: 2219
diff changeset
113 MAIL_FETCH_FROM_ENVELOPE = 0x00008000,
2996
9219e788d774 Added %f pop3_uidl_format for maildir. Patch by Andrey Panin.
Timo Sirainen <tss@iki.fi>
parents: 2976
diff changeset
114 MAIL_FETCH_HEADER_MD5 = 0x00010000,
9219e788d774 Added %f pop3_uidl_format for maildir. Patch by Andrey Panin.
Timo Sirainen <tss@iki.fi>
parents: 2976
diff changeset
115 MAIL_FETCH_UIDL_FILE_NAME = 0x00020000
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
116 };
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
117
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
118 enum mailbox_transaction_flags {
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
119 /* Hide changes done in this transaction from next view sync */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
120 MAILBOX_TRANSACTION_FLAG_HIDE = 0x01,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
121 /* External transaction. Should be used for copying and appends,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
122 but nothing else. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
123 MAILBOX_TRANSACTION_FLAG_EXTERNAL = 0x02
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
124 };
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
125
1730
8480f945e270 IDLE uses now IO_*_NOTIFY to get instant notifying of mails.
Timo Sirainen <tss@iki.fi>
parents: 1728
diff changeset
126 enum mailbox_sync_flags {
2665
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
127 /* Make sure we sync all external changes done to mailbox */
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
128 MAILBOX_SYNC_FLAG_FULL_READ = 0x01,
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
129 /* Make sure we write all our internal changes into the mailbox */
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
130 MAILBOX_SYNC_FLAG_FULL_WRITE = 0x02,
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
131 /* If it's not too much trouble, check if there are some changes */
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
132 MAILBOX_SYNC_FLAG_FAST = 0x04,
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
133
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
134 /* Don't sync expunges from our view */
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
135 MAILBOX_SYNC_FLAG_NO_EXPUNGES = 0x08,
3204
c8fffa286b6a Renamed oe6-fetch-no-newmail workaround to delay-newmail and changed it to
Timo Sirainen <tss@iki.fi>
parents: 3138
diff changeset
136 /* Don't show new mail */
c8fffa286b6a Renamed oe6-fetch-no-newmail workaround to delay-newmail and changed it to
Timo Sirainen <tss@iki.fi>
parents: 3138
diff changeset
137 MAILBOX_SYNC_FLAG_NO_NEWMAIL = 0x10,
2665
ccf563859be5 Split sync_flag_full into sync_flag_full_read and _write. Closing mailbox
Timo Sirainen <tss@iki.fi>
parents: 2589
diff changeset
138 /* Stop auto syncing */
3204
c8fffa286b6a Renamed oe6-fetch-no-newmail workaround to delay-newmail and changed it to
Timo Sirainen <tss@iki.fi>
parents: 3138
diff changeset
139 MAILBOX_SYNC_AUTO_STOP = 0x20
1552
bc3307f2f35d Only NOOP and CHECK will now always do a real mailbox sync. Other commands
Timo Sirainen <tss@iki.fi>
parents: 1534
diff changeset
140 };
bc3307f2f35d Only NOOP and CHECK will now always do a real mailbox sync. Other commands
Timo Sirainen <tss@iki.fi>
parents: 1534
diff changeset
141
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
142 enum mailbox_sync_type {
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
143 MAILBOX_SYNC_TYPE_EXPUNGE = 0x01,
3016
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
144 MAILBOX_SYNC_TYPE_FLAGS = 0x02,
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
145 MAILBOX_SYNC_TYPE_KEYWORDS = 0x04
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
146 };
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
147
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
148 struct mail_storage;
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 889
diff changeset
149 struct mail_search_arg;
3016
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
150 struct mail_keywords;
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
151 struct mailbox;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
152 struct mailbox_list_context;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
153 struct mailbox_transaction_context;
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
155 struct mailbox_list {
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
156 const char *name;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
157 enum mailbox_flags flags;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
158 };
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
159
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
160 struct mailbox_status {
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
161 uint32_t messages;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
162 uint32_t recent;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
163 uint32_t unseen;
674
b7aefd0d7611 Locking changes triggered a bit larger cleanup :) If we have to wait for a
Timo Sirainen <tss@iki.fi>
parents: 568
diff changeset
164
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
165 uint32_t uidvalidity;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
166 uint32_t uidnext;
450
925d6eb5f8be MailStorage interface change. We now let storage call several sync-functions
Timo Sirainen <tss@iki.fi>
parents: 410
diff changeset
167
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
168 uint32_t first_unseen_seq;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
169
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
170 unsigned int diskspace_full:1;
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
171
3254
a2943c050571 Keywords are now stored in X-Keywords headers in mbox. Did several related
Timo Sirainen <tss@iki.fi>
parents: 3248
diff changeset
172 const array_t *ARRAY_DEFINE_PTR(keywords, const char *);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
173 };
450
925d6eb5f8be MailStorage interface change. We now let storage call several sync-functions
Timo Sirainen <tss@iki.fi>
parents: 410
diff changeset
174
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
175 struct mailbox_sync_rec {
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
176 uint32_t seq1, seq2;
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
177 enum mailbox_sync_type type;
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
178 };
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
179
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
180 struct mail {
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
181 /* always set */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
182 struct mailbox *box;
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
183 struct mailbox_transaction_context *transaction;
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
184 uint32_t seq, uid;
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
185
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
186 unsigned int expunged:1;
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
187 unsigned int has_nuls:1; /* message data is known to contain NULs */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
188 unsigned int has_no_nuls:1; /* -''- known to not contain NULs */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
189 };
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
190
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
191 struct mail_storage_callbacks {
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
192 /* Alert: Not enough disk space */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
193 void (*alert_no_diskspace)(struct mailbox *mailbox, void *context);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
194 /* "* OK <text>" */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
195 void (*notify_ok)(struct mailbox *mailbox, const char *text,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
196 void *context);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
197 /* "* NO <text>" */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
198 void (*notify_no)(struct mailbox *mailbox, const char *text,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
199 void *context);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
200
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
201 };
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
202
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
203 typedef void mailbox_notify_callback_t(struct mailbox *box, void *context);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
204
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
205 void mail_storage_init(void);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
206 void mail_storage_deinit(void);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
207
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
208 /* register all mail storages */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
209 void mail_storage_register_all(void);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
210
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
211 /* Register mail storage class with given name - all methods that are NULL
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
212 are set to default methods */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
213 void mail_storage_class_register(struct mail_storage *storage_class);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
214 void mail_storage_class_unregister(struct mail_storage *storage_class);
1642
72c6e848f583 API changes: Don't keep variables in mailbox class.
Timo Sirainen <tss@iki.fi>
parents: 1640
diff changeset
215
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
216 /* Create a new instance of registered mail storage class with given
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
217 storage-specific data. If data is NULL, it tries to use defaults.
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
218 May return NULL if anything fails.
1642
72c6e848f583 API changes: Don't keep variables in mailbox class.
Timo Sirainen <tss@iki.fi>
parents: 1640
diff changeset
219
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
220 If namespace is non-NULL, all mailbox names are expected to begin with it.
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
221 hierarchy_sep overrides the default separator if it's not '\0'. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
222 struct mail_storage *
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
223 mail_storage_create(const char *name, const char *data, const char *user,
3260
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
224 enum mail_storage_flags flags,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
225 enum mail_storage_lock_method lock_method);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
226 void mail_storage_destroy(struct mail_storage *storage);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
227
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
228 struct mail_storage *
3260
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
229 mail_storage_create_default(const char *user, enum mail_storage_flags flags,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
230 enum mail_storage_lock_method lock_method);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
231 struct mail_storage *
3033
146897976cfa Added mail_debug setting. Moved full_filesystem_access from global variable
Timo Sirainen <tss@iki.fi>
parents: 3016
diff changeset
232 mail_storage_create_with_data(const char *data, const char *user,
3260
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
233 enum mail_storage_flags flags,
6a179bf1272e Moved several getenv()s from lib-storage to main code. deliver binary was
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
234 enum mail_storage_lock_method lock_method);
1639
3621292209f4 Explicit lock() method for mailbox.
Timo Sirainen <tss@iki.fi>
parents: 1638
diff changeset
235
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
236 char mail_storage_get_hierarchy_sep(struct mail_storage *storage);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
237
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
238 /* Set storage callback functions to use. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
239 void mail_storage_set_callbacks(struct mail_storage *storage,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
240 struct mail_storage_callbacks *callbacks,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
241 void *context);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
242
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
243 /* name is allowed to contain multiple new hierarchy levels.
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
244 If directory is TRUE, the mailbox should be created so that it
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
245 can contain children. The mailbox itself doesn't have to be
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
246 created as long as it shows in LIST. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
247 int mail_storage_mailbox_create(struct mail_storage *storage, const char *name,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
248 int directory);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
249 /* Only the specified mailbox is deleted, ie. folders under the
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
250 specified mailbox must not be deleted. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
251 int mail_storage_mailbox_delete(struct mail_storage *storage, const char *name);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
252 /* If the name has inferior hierarchical names, then the inferior
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
253 hierarchical names MUST also be renamed (ie. foo -> bar renames
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
254 also foo/bar -> bar/bar). newname may contain multiple new
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
255 hierarchies.
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
256
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
257 If oldname is case-insensitively "INBOX", the mails are moved
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
258 into new folder but the INBOX folder must not be deleted. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
259 int mail_storage_mailbox_rename(struct mail_storage *storage,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
260 const char *oldname, const char *newname);
1172
f7c273202dc3 Support for IDLE extension.
Timo Sirainen <tss@iki.fi>
parents: 1151
diff changeset
261
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
262 /* Initialize new mailbox list request. mask may contain '%' and '*'
2350
1371d41c375f Moved namespace and hierarchy separator handling to imap-specific code. LIST
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
263 wildcards as defined in RFC3501. Matching against "INBOX" is
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
264 case-insensitive, but anything else is not. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
265 struct mailbox_list_context *
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
266 mail_storage_mailbox_list_init(struct mail_storage *storage,
2350
1371d41c375f Moved namespace and hierarchy separator handling to imap-specific code. LIST
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
267 const char *ref, const char *mask,
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
268 enum mailbox_list_flags flags);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
269 /* Get next mailbox. Returns the mailbox name */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
270 struct mailbox_list *
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
271 mail_storage_mailbox_list_next(struct mailbox_list_context *ctx);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
272 /* Deinitialize mailbox list request. Returns FALSE if some error
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
273 occured while listing. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
274 int mail_storage_mailbox_list_deinit(struct mailbox_list_context *ctx);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
275
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
276 /* Subscribe/unsubscribe mailbox. There should be no error when
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
277 subscribing to already subscribed mailbox. Subscribing to
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
278 unexisting mailboxes is optional. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
279 int mail_storage_set_subscribed(struct mail_storage *storage,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
280 const char *name, int set);
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
281
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
282 /* Returns mailbox name status */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
283 int mail_storage_get_mailbox_name_status(struct mail_storage *storage,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
284 const char *name,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
285 enum mailbox_name_status *status);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
286
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
287 /* Returns the error message of last occured error. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
288 const char *mail_storage_get_last_error(struct mail_storage *storage,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
289 int *syntax_error_r);
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
290
3245
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
291 /* Open a mailbox. If input stream is given, mailbox is opened read-only
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
292 using it as a backend. If storage doesn't support stream backends and its
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
293 tried to be used, NULL is returned.
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
294
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
295 Note that append and copy may open the selected mailbox again
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
296 with possibly different readonly-state. */
3245
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
297 struct mailbox *mailbox_open(struct mail_storage *storage, const char *name,
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
298 struct istream *input,
6491dab63e54 Added input stream parameter to mailbox_open(). With mbox it now allows
Timo Sirainen <tss@iki.fi>
parents: 3209
diff changeset
299 enum mailbox_open_flags flags);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
300 /* Close the box. Returns FALSE if some cleanup errors occured, but
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
301 the mailbox was closed anyway. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
302 int mailbox_close(struct mailbox *box);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
303
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
304 /* Returns storage of given mailbox */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
305 struct mail_storage *mailbox_get_storage(struct mailbox *box);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
306
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
307 /* Returns name of given mailbox */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
308 const char *mailbox_get_name(struct mailbox *box);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
309
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
310 /* Returns TRUE if mailbox is read-only. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
311 int mailbox_is_readonly(struct mailbox *box);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
312
1958
4dec6a3d79fd s/custom flags/keywords/
Timo Sirainen <tss@iki.fi>
parents: 1917
diff changeset
313 /* Returns TRUE if mailbox currently supports adding keywords. */
4dec6a3d79fd s/custom flags/keywords/
Timo Sirainen <tss@iki.fi>
parents: 1917
diff changeset
314 int mailbox_allow_new_keywords(struct mailbox *box);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
315
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
316 /* Gets the mailbox status information. */
2350
1371d41c375f Moved namespace and hierarchy separator handling to imap-specific code. LIST
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
317 int mailbox_get_status(struct mailbox *box, enum mailbox_status_items items,
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
318 struct mailbox_status *status);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
319
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
320 /* Synchronize the mailbox. */
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
321 struct mailbox_sync_context *
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
322 mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags);
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
323 int mailbox_sync_next(struct mailbox_sync_context *ctx,
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
324 struct mailbox_sync_rec *sync_rec_r);
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
325 int mailbox_sync_deinit(struct mailbox_sync_context *ctx,
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
326 struct mailbox_status *status_r);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
327
2322
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
328 /* Call given callback function when something changes in the mailbox.
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
329 It's done until this function is called with callback = NULL. */
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
330 void mailbox_notify_changes(struct mailbox *box, unsigned int min_interval,
aae574ed7f4c Broke mailbox_sync() into iterator.
Timo Sirainen <tss@iki.fi>
parents: 2316
diff changeset
331 mailbox_notify_callback_t *callback, void *context);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
332
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
333 struct mailbox_transaction_context *
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
334 mailbox_transaction_begin(struct mailbox *box,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
335 enum mailbox_transaction_flags flags);
2518
f8be7a5e273a Added sync flags parameter to mailbox_transaction_commit(), so EXPUNGE can
Timo Sirainen <tss@iki.fi>
parents: 2511
diff changeset
336 int mailbox_transaction_commit(struct mailbox_transaction_context *t,
f8be7a5e273a Added sync flags parameter to mailbox_transaction_commit(), so EXPUNGE can
Timo Sirainen <tss@iki.fi>
parents: 2511
diff changeset
337 enum mailbox_sync_flags flags);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
338 void mailbox_transaction_rollback(struct mailbox_transaction_context *t);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
339
3016
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
340 /* Build mail_keywords from NULL-terminated keywords list. */
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
341 struct mail_keywords *
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
342 mailbox_keywords_create(struct mailbox_transaction_context *t,
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
343 const char *const keywords[]);
3138
fbe844061fe2 Internal changes in how keywords are handled. struct mail_keywords isn't
Timo Sirainen <tss@iki.fi>
parents: 3086
diff changeset
344 void mailbox_keywords_free(struct mailbox_transaction_context *t,
fbe844061fe2 Internal changes in how keywords are handled. struct mail_keywords isn't
Timo Sirainen <tss@iki.fi>
parents: 3086
diff changeset
345 struct mail_keywords *keywords);
3016
61c8d205d887 Initial support for keywords. Syncing to mbox/maildir doesn't work yet.
Timo Sirainen <tss@iki.fi>
parents: 2996
diff changeset
346
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
347 /* Convert uid range to sequence range. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
348 int mailbox_get_uids(struct mailbox *box, uint32_t uid1, uint32_t uid2,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
349 uint32_t *seq1_r, uint32_t *seq2_r);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
350
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2322
diff changeset
351 /* Initialize header lookup for given headers. */
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2322
diff changeset
352 struct mailbox_header_lookup_ctx *
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2322
diff changeset
353 mailbox_header_lookup_init(struct mailbox *box, const char *const headers[]);
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2322
diff changeset
354 void mailbox_header_lookup_deinit(struct mailbox_header_lookup_ctx *ctx);
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2322
diff changeset
355
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
356 /* Modify sort_program to specify a sort program acceptable for
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
357 search_init(). If mailbox supports no sorting, it's simply set to
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
358 {MAIL_SORT_END}. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
359 int mailbox_search_get_sorting(struct mailbox *box,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
360 enum mail_sort_type *sort_program);
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
361 /* Initialize new search request. Search arguments are given so that
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
362 the storage can optimize the searching as it wants.
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
363
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
364 If sort_program is non-NULL, it requests that the returned messages
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
365 are sorted by the given criteria. sort_program must have gone
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
366 through search_get_sorting(). */
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
367 struct mail_search_context *
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
368 mailbox_search_init(struct mailbox_transaction_context *t,
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
369 const char *charset, struct mail_search_arg *args,
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
370 const enum mail_sort_type *sort_program);
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
371 /* Deinitialize search request. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
372 int mailbox_search_deinit(struct mail_search_context *ctx);
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
373 /* Search the next message. Returns 1 if found, 0 if not, -1 if failure. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
374 int mailbox_search_next(struct mail_search_context *ctx, struct mail *mail);
1637
a64391b49589 API change for copying messages.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
375
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
376 /* Save a mail into mailbox. timezone_offset specifies the timezone in
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
377 minutes in which received_date was originally given with. To use
2190
755ec9442a58 mailbox_save() and mailbox_copy() functions can now return the saved mail so
Timo Sirainen <tss@iki.fi>
parents: 2062
diff changeset
378 current time, set received_date to (time_t)-1.
755ec9442a58 mailbox_save() and mailbox_copy() functions can now return the saved mail so
Timo Sirainen <tss@iki.fi>
parents: 2062
diff changeset
379
2446
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
380 If want_mail is TRUE, mail_r will be set in mailbox_save_finish() and
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
381 the saved message can be accessed using it. Note that setting it may
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
382 require mailbox syncing, so don't set it unless you need it. */
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
383 struct mail_save_context *
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
384 mailbox_save_init(struct mailbox_transaction_context *t,
3086
66c44404f9a1 Keyword fixes.
Timo Sirainen <tss@iki.fi>
parents: 3033
diff changeset
385 enum mail_flags flags, struct mail_keywords *keywords,
2446
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
386 time_t received_date, int timezone_offset,
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
387 const char *from_envelope, struct istream *input,
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
388 int want_mail);
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
389 int mailbox_save_continue(struct mail_save_context *ctx);
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
390 int mailbox_save_finish(struct mail_save_context *ctx, struct mail *dest_mail);
2446
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
391 void mailbox_save_cancel(struct mail_save_context *ctx);
47e1e05cede0 Changed mail saving API to be nonblocking.
Timo Sirainen <tss@iki.fi>
parents: 2422
diff changeset
392
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
393 /* Copy given message. If dest_mail is non-NULL, the copied message can be
2190
755ec9442a58 mailbox_save() and mailbox_copy() functions can now return the saved mail so
Timo Sirainen <tss@iki.fi>
parents: 2062
diff changeset
394 accessed using it. Note that setting it non-NULL may require mailbox
755ec9442a58 mailbox_save() and mailbox_copy() functions can now return the saved mail so
Timo Sirainen <tss@iki.fi>
parents: 2062
diff changeset
395 syncing, so don't give give it unless you need it. */
755ec9442a58 mailbox_save() and mailbox_copy() functions can now return the saved mail so
Timo Sirainen <tss@iki.fi>
parents: 2062
diff changeset
396 int mailbox_copy(struct mailbox_transaction_context *t, struct mail *mail,
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
397 struct mail *dest_mail);
1640
db14aa8e2b5c API change for expunging messages. Not exactly what I wanted, but good
Timo Sirainen <tss@iki.fi>
parents: 1639
diff changeset
398
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
399 /* Returns TRUE if mailbox is now in inconsistent state, meaning that
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
400 the message IDs etc. may have changed - only way to recover this
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
401 would be to fully close the mailbox and reopen it. With IMAP
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
402 connection this would mean a forced disconnection since we can't
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
403 do forced CLOSE. */
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1845
diff changeset
404 int mailbox_is_inconsistent(struct mailbox *box);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
405
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
406 /* Returns message's flags */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
407 enum mail_flags mail_get_flags(struct mail *mail);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
408 /* Returns message's keywords */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
409 const char *const *mail_get_keywords(struct mail *mail);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
410 /* Returns message's MIME parts */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
411 const struct message_part *mail_get_parts(struct mail *mail);
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
412
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
413 struct mail *mail_alloc(struct mailbox_transaction_context *t,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
414 enum mail_fetch_field wanted_fields,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
415 struct mailbox_header_lookup_ctx *wanted_headers);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
416 void mail_free(struct mail *mail);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
417 int mail_set_seq(struct mail *mail, uint32_t seq);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
418
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
419 /* Get the time message was received (IMAP INTERNALDATE).
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
420 Returns (time_t)-1 if error occured. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
421 time_t mail_get_received_date(struct mail *mail);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
422 /* Get the Date-header in mail. Timezone is in minutes.
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
423 Returns (time_t)-1 if error occured, 0 if field wasn't found or
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
424 couldn't be parsed. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
425 time_t mail_get_date(struct mail *mail, int *timezone);
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
426
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
427 /* Get the full virtual size of mail (IMAP RFC822.SIZE).
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
428 Returns (uoff_t)-1 if error occured */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
429 uoff_t mail_get_virtual_size(struct mail *mail);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
430 /* Get the full physical size of mail.
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
431 Returns (uoff_t)-1 if error occured */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
432 uoff_t mail_get_physical_size(struct mail *mail);
988
8028c4dcf38f mail-storage.h interface changes, affects pretty much everything.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
433
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
434 /* Get value for single header field */
3248
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
435 const char *mail_get_first_header(struct mail *mail, const char *field);
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
436 /* Return a NULL-terminated list of values for each found field. */
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
437 const char *const *mail_get_headers(struct mail *mail, const char *field);
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
438 /* Returns stream containing specified headers. */
3248
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
439 struct istream *
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
440 mail_get_header_stream(struct mail *mail,
ff47e78ad717 Renamed mail_get_header() to mail_get_first_header() and mail_gets_headers()
Timo Sirainen <tss@iki.fi>
parents: 3245
diff changeset
441 struct mailbox_header_lookup_ctx *headers);
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
442 /* Returns input stream pointing to beginning of message header.
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
443 hdr_size and body_size are updated unless they're NULL. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
444 struct istream *mail_get_stream(struct mail *mail,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
445 struct message_size *hdr_size,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
446 struct message_size *body_size);
1637
a64391b49589 API change for copying messages.
Timo Sirainen <tss@iki.fi>
parents: 1622
diff changeset
447
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
448 /* Get any of the "special" fields. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
449 const char *mail_get_special(struct mail *mail, enum mail_fetch_field field);
1638
e95c0e462591 API change for updating message flags.
Timo Sirainen <tss@iki.fi>
parents: 1637
diff changeset
450
3209
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
451 /* Update message flags. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
452 int mail_update_flags(struct mail *mail, enum modify_type modify_type,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
453 enum mail_flags flags);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
454 /* Update message keywords. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
455 int mail_update_keywords(struct mail *mail, enum modify_type modify_type,
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
456 struct mail_keywords *keywords);
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
457
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
458 /* Expunge this message. Sequence numbers don't change until commit. */
923ff19873d4 Major mail-storage API changes. It's now a bit cleaner and much more plugin
Timo Sirainen <tss@iki.fi>
parents: 3207
diff changeset
459 int mail_expunge(struct mail *mail);
450
925d6eb5f8be MailStorage interface change. We now let storage call several sync-functions
Timo Sirainen <tss@iki.fi>
parents: 410
diff changeset
460
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
461 #endif