annotate src/lib-storage/index/cydir/cydir-storage.c @ 22713:cb108f786fb4

Updated copyright notices to include the year 2018.
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 01 Jan 2018 22:42:08 +0100
parents 2e2563132d5f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21390
diff changeset
1 /* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
10676
1fd7833c16ca lib-storage: Mailbox deletion API changed.
Timo Sirainen <tss@iki.fi>
parents: 10660
diff changeset
4 #include "mail-copy.h"
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "index-mail.h"
11476
3e51c846f293 Avoid including mailbox-list-private.h everywhere.
Timo Sirainen <tss@iki.fi>
parents: 10726
diff changeset
6 #include "mailbox-list-private.h"
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 #include "cydir-sync.h"
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #include "cydir-storage.h"
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 #include <sys/stat.h>
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 extern struct mail_storage cydir_storage;
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 extern struct mailbox cydir_mailbox;
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
15 static struct mail_storage *cydir_storage_alloc(void)
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 {
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 struct cydir_storage *storage;
5460
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
18 pool_t pool;
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
19
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
20 pool = pool_alloconly_create("cydir storage", 512+256);
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
21 storage = p_new(pool, struct cydir_storage, 1);
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
22 storage->storage = cydir_storage;
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
23 storage->storage.pool = pool;
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
24 return &storage->storage;
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
25 }
105e0cd21036 Added virtual mail_storage.alloc() function and changed create() to work
Timo Sirainen <tss@iki.fi>
parents: 5459
diff changeset
26
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
27 static void
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
28 cydir_storage_get_list_settings(const struct mail_namespace *ns ATTR_UNUSED,
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
29 struct mailbox_list_settings *set)
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
30 {
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
31 if (set->layout == NULL)
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
32 set->layout = MAILBOX_LIST_NAME_FS;
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
33 if (set->subscription_fname == NULL)
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
34 set->subscription_fname = CYDIR_SUBSCRIPTION_FILE_NAME;
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
35 }
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
36
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 static struct mailbox *
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
38 cydir_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list,
12586
a2780b694b2d lib-storage: mailbox_alloc() now takes a virtual mailbox name and other related API changes.
Timo Sirainen <tss@iki.fi>
parents: 12583
diff changeset
39 const char *vname, enum mailbox_flags flags)
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 {
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 struct cydir_mailbox *mbox;
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 pool_t pool;
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
44 /* cydir can't work without index files */
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
45 flags &= ~MAILBOX_FLAG_NO_INDEX_FILES;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
10726
44759fb882aa lib-storage: Increased initial mailbox pool sizes.
Timo Sirainen <tss@iki.fi>
parents: 10720
diff changeset
47 pool = pool_alloconly_create("cydir mailbox", 1024*3);
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 mbox = p_new(pool, struct cydir_mailbox, 1);
10660
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
49 mbox->box = cydir_mailbox;
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
50 mbox->box.pool = pool;
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
51 mbox->box.storage = storage;
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
52 mbox->box.list = list;
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
53 mbox->box.mail_vfuncs = &cydir_mail_vfuncs;
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
54
15341
15dfd6475f64 Replaced *_INDEX_PREFIX macros with a common MAIL_INDEX_PREFIX.
Timo Sirainen <tss@iki.fi>
parents: 15272
diff changeset
55 index_storage_mailbox_alloc(&mbox->box, vname, flags, MAIL_INDEX_PREFIX);
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
57 mbox->storage = (struct cydir_storage *)storage;
10660
56b1d4dd9c7d lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.
Timo Sirainen <tss@iki.fi>
parents: 10657
diff changeset
58 return &mbox->box;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
61 static int cydir_mailbox_open(struct mailbox *box)
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
62 {
12520
b26d6da05d48 lib-storage: Lazily look up mailbox path and permissions. Added functions to get them.
Timo Sirainen <tss@iki.fi>
parents: 12312
diff changeset
63 const char *box_path = mailbox_get_path(box);
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 struct stat st;
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
12520
b26d6da05d48 lib-storage: Lazily look up mailbox path and permissions. Added functions to get them.
Timo Sirainen <tss@iki.fi>
parents: 12312
diff changeset
66 if (stat(box_path, &st) == 0) {
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
67 /* exists, open it */
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
68 } else if (errno == ENOENT) {
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
69 mail_storage_set_error(box->storage, MAIL_ERROR_NOTFOUND,
16182
eece943c7521 "Mailbox doesn't exist" error mixed up using storage and virtual mailbox names.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
70 T_MAIL_ERR_MAILBOX_NOT_FOUND(box->vname));
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
71 return -1;
7175
93fe72ef59f6 If mail storage or mailbox can't be accessed because of EACCES, log an error
Timo Sirainen <tss@iki.fi>
parents: 7093
diff changeset
72 } else if (errno == EACCES) {
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
73 mail_storage_set_critical(box->storage, "%s",
12520
b26d6da05d48 lib-storage: Lazily look up mailbox path and permissions. Added functions to get them.
Timo Sirainen <tss@iki.fi>
parents: 12312
diff changeset
74 mail_error_eacces_msg("stat", box_path));
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
75 return -1;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 } else {
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
77 mail_storage_set_critical(box->storage, "stat(%s) failed: %m",
12520
b26d6da05d48 lib-storage: Lazily look up mailbox path and permissions. Added functions to get them.
Timo Sirainen <tss@iki.fi>
parents: 12312
diff changeset
78 box_path);
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
79 return -1;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
80 }
12521
b22766c1aa51 lib-storage: Don't allocate index until mailbox_open()
Timo Sirainen <tss@iki.fi>
parents: 12520
diff changeset
81 if (index_storage_mailbox_open(box, FALSE) < 0)
b22766c1aa51 lib-storage: Don't allocate index until mailbox_open()
Timo Sirainen <tss@iki.fi>
parents: 12520
diff changeset
82 return -1;
b22766c1aa51 lib-storage: Don't allocate index until mailbox_open()
Timo Sirainen <tss@iki.fi>
parents: 12520
diff changeset
83 mail_index_set_fsync_mode(box->index,
b22766c1aa51 lib-storage: Don't allocate index until mailbox_open()
Timo Sirainen <tss@iki.fi>
parents: 12520
diff changeset
84 box->storage->set->parsed_fsync_mode,
15063
0efc12f3eb2a lib-index: Changed mail_index_set_fsync_mode() to use a separate enum for the mask.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
85 MAIL_INDEX_FSYNC_MASK_APPENDS |
0efc12f3eb2a lib-index: Changed mail_index_set_fsync_mode() to use a separate enum for the mask.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
86 MAIL_INDEX_FSYNC_MASK_EXPUNGES);
12521
b22766c1aa51 lib-storage: Don't allocate index until mailbox_open()
Timo Sirainen <tss@iki.fi>
parents: 12520
diff changeset
87 return 0;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
90 static int
9533
530bbade4e3f Added support for creating/updating mailboxes with given metadata (guid, uid validity, etc).
Timo Sirainen <tss@iki.fi>
parents: 9508
diff changeset
91 cydir_mailbox_create(struct mailbox *box, const struct mailbox_update *update,
530bbade4e3f Added support for creating/updating mailboxes with given metadata (guid, uid validity, etc).
Timo Sirainen <tss@iki.fi>
parents: 9508
diff changeset
92 bool directory)
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 {
15112
6e90fc8dfa25 lib-storage: Removed mailbox_list.create_mailbox_dir() virtual function.
Timo Sirainen <tss@iki.fi>
parents: 15063
diff changeset
94 int ret;
6e90fc8dfa25 lib-storage: Removed mailbox_list.create_mailbox_dir() virtual function.
Timo Sirainen <tss@iki.fi>
parents: 15063
diff changeset
95
6e90fc8dfa25 lib-storage: Removed mailbox_list.create_mailbox_dir() virtual function.
Timo Sirainen <tss@iki.fi>
parents: 15063
diff changeset
96 if ((ret = index_storage_mailbox_create(box, directory)) <= 0)
6e90fc8dfa25 lib-storage: Removed mailbox_list.create_mailbox_dir() virtual function.
Timo Sirainen <tss@iki.fi>
parents: 15063
diff changeset
97 return ret;
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98
10653
5fe70b5da1b8 lib-storage: Moved mailbox directory creation code to mailbox_list backend.
Timo Sirainen <tss@iki.fi>
parents: 10582
diff changeset
99 return update == NULL ? 0 :
9726
dd4c5e43c55a mailbox_update(): Update index also.
Timo Sirainen <tss@iki.fi>
parents: 9708
diff changeset
100 index_storage_mailbox_update(box, update);
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102
5465
014236cf3dcc Moved notify settings to struct mailbox. Removed the parameters from
Timo Sirainen <tss@iki.fi>
parents: 5464
diff changeset
103 static void cydir_notify_changes(struct mailbox *box)
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 {
5465
014236cf3dcc Moved notify settings to struct mailbox. Removed the parameters from
Timo Sirainen <tss@iki.fi>
parents: 5464
diff changeset
105 if (box->notify_callback == NULL)
18981
f84c81ed5d09 lib-storage: Moved index/index-mailbox-check.c code to mailbox-watch.c
Timo Sirainen <tss@iki.fi>
parents: 18137
diff changeset
106 mailbox_watch_remove_all(box);
5465
014236cf3dcc Moved notify settings to struct mailbox. Removed the parameters from
Timo Sirainen <tss@iki.fi>
parents: 5464
diff changeset
107 else
18981
f84c81ed5d09 lib-storage: Moved index/index-mailbox-check.c code to mailbox-watch.c
Timo Sirainen <tss@iki.fi>
parents: 18137
diff changeset
108 mailbox_watch_add(box, mailbox_get_path(box));
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 struct mail_storage cydir_storage = {
10410
b757dab45756 Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents: 9730
diff changeset
112 .name = CYDIR_STORAGE_NAME,
16501
102d8a59eeda lib-storage: Added MAIL_STORAGE_CLASS_FLAG_BINARY_DATA flag for classes.
Timo Sirainen <tss@iki.fi>
parents: 16198
diff changeset
113 .class_flags = MAIL_STORAGE_CLASS_FLAG_FILE_PER_MSG |
102d8a59eeda lib-storage: Added MAIL_STORAGE_CLASS_FLAG_BINARY_DATA flag for classes.
Timo Sirainen <tss@iki.fi>
parents: 16198
diff changeset
114 MAIL_STORAGE_CLASS_FLAG_BINARY_DATA,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115
10410
b757dab45756 Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents: 9730
diff changeset
116 .v = {
9002
9d0037a997f4 Initial commit for config rewrite.
Timo Sirainen <tss@iki.fi>
parents: 8642
diff changeset
117 NULL,
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
118 cydir_storage_alloc,
9436
4f46cee3a1d4 mail storages can now be shared between namespaces.
Timo Sirainen <tss@iki.fi>
parents: 9434
diff changeset
119 NULL,
15272
ca10d2e8d8e3 lib-storage: Moved mail attribute dict to struct mail_storage.
Timo Sirainen <tss@iki.fi>
parents: 15224
diff changeset
120 index_storage_destroy,
10715
be5590207f20 lib-storage: Changed mailbox_list.iter_is_mailbox() API.
Timo Sirainen <tss@iki.fi>
parents: 10711
diff changeset
121 NULL,
9434
e374a365521d Initial commit for making mail_storage:mailbox_list to be from 1:1 to n:n.
Timo Sirainen <tss@iki.fi>
parents: 9061
diff changeset
122 cydir_storage_get_list_settings,
5462
163b48489bc6 Moved all storage destruction code to mail-storage.c and made destroy()
Timo Sirainen <tss@iki.fi>
parents: 5461
diff changeset
123 NULL,
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
124 cydir_mailbox_alloc,
21225
2f077146c48e lib-storage: Add mail_storage.list_index_corrupted()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
125 NULL,
2f077146c48e lib-storage: Add mail_storage.list_index_corrupted()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
126 NULL,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 };
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 struct mailbox cydir_mailbox = {
10410
b757dab45756 Removed MEMBER() macro. Require C99 style struct initializer.
Timo Sirainen <tss@iki.fi>
parents: 9730
diff changeset
131 .v = {
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132 index_storage_is_readonly,
7620
4b8c1c164d8f Initial CONDSTORE support.
Timo Sirainen <tss@iki.fi>
parents: 7403
diff changeset
133 index_storage_mailbox_enable,
12583
4073ccc8123f lib-storage: Replaced mailbox_list_get_name_status() with mailbox_exists().
Timo Sirainen <tss@iki.fi>
parents: 12545
diff changeset
134 index_storage_mailbox_exists,
9468
653183a81b6c Mailbox opening and closing APIs changed.
Timo Sirainen <tss@iki.fi>
parents: 9455
diff changeset
135 cydir_mailbox_open,
5466
8141168f86e1 cleaned up mailbox closing code
Timo Sirainen <tss@iki.fi>
parents: 5465
diff changeset
136 index_storage_mailbox_close,
10719
debbf3f39e0c lib-storage: Use a default non-NULL mailbox.free() so plugins don't have to check for it.
Timo Sirainen <tss@iki.fi>
parents: 10718
diff changeset
137 index_storage_mailbox_free,
9533
530bbade4e3f Added support for creating/updating mailboxes with given metadata (guid, uid validity, etc).
Timo Sirainen <tss@iki.fi>
parents: 9508
diff changeset
138 cydir_mailbox_create,
9726
dd4c5e43c55a mailbox_update(): Update index also.
Timo Sirainen <tss@iki.fi>
parents: 9708
diff changeset
139 index_storage_mailbox_update,
10676
1fd7833c16ca lib-storage: Mailbox deletion API changed.
Timo Sirainen <tss@iki.fi>
parents: 10660
diff changeset
140 index_storage_mailbox_delete,
10711
292562f9b12c lib-storage: Mailbox renaming API changed.
Timo Sirainen <tss@iki.fi>
parents: 10690
diff changeset
141 index_storage_mailbox_rename,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
142 index_storage_get_status,
6062
8341db7a1698 Moved mailbox list index sync stamp checking and updating to
Timo Sirainen <tss@iki.fi>
parents: 6023
diff changeset
143 NULL,
13876
bc9217cb0193 lib-storage: Added struct mailbox.set_subscribed() virtual method.
Timo Sirainen <tss@iki.fi>
parents: 12981
diff changeset
144 index_storage_set_subscribed,
15224
5659c178bdeb lib-storage: Added support to get/set/iterate mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents: 15112
diff changeset
145 index_storage_attribute_set,
5659c178bdeb lib-storage: Added support to get/set/iterate mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents: 15112
diff changeset
146 index_storage_attribute_get,
5659c178bdeb lib-storage: Added support to get/set/iterate mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents: 15112
diff changeset
147 index_storage_attribute_iter_init,
5659c178bdeb lib-storage: Added support to get/set/iterate mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents: 15112
diff changeset
148 index_storage_attribute_iter_next,
5659c178bdeb lib-storage: Added support to get/set/iterate mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents: 15112
diff changeset
149 index_storage_attribute_iter_deinit,
12646
87f84a76fb1e lib-storage: Return STATUS replies from mailbox list index only when it's fully up-to-date.
Timo Sirainen <tss@iki.fi>
parents: 12586
diff changeset
150 index_storage_list_index_has_changed,
87f84a76fb1e lib-storage: Return STATUS replies from mailbox list index only when it's fully up-to-date.
Timo Sirainen <tss@iki.fi>
parents: 12586
diff changeset
151 index_storage_list_index_update_sync,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
152 cydir_storage_sync_init,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153 index_mailbox_sync_next,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154 index_mailbox_sync_deinit,
5562
24b751bc0995 Added sync_notify() callback to struct mail_storage. It's now called for
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
155 NULL,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
156 cydir_notify_changes,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
157 index_transaction_begin,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
158 index_transaction_commit,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
159 index_transaction_rollback,
8495
ffb37c392166 Finished making full text search indexes work fast with virtual mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8484
diff changeset
160 NULL,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
161 index_mail_alloc,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
162 index_storage_search_init,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
163 index_storage_search_deinit,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
164 index_storage_search_next_nonblock,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
165 index_storage_search_next_update_seq,
8075
8a068f879cd1 mailbox_save_init() API was split to multiple functions.
Timo Sirainen <tss@iki.fi>
parents: 8042
diff changeset
166 cydir_save_alloc,
8a068f879cd1 mailbox_save_init() API was split to multiple functions.
Timo Sirainen <tss@iki.fi>
parents: 8042
diff changeset
167 cydir_save_begin,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
168 cydir_save_continue,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
169 cydir_save_finish,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
170 cydir_save_cancel,
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
171 mail_storage_copy,
12866
59e4c0d1457b lib-storage: Moved index_mailbox_context.save_*() methods to mailbox_vfuncs.
Timo Sirainen <tss@iki.fi>
parents: 12860
diff changeset
172 cydir_transaction_save_commit_pre,
59e4c0d1457b lib-storage: Moved index_mailbox_context.save_*() methods to mailbox_vfuncs.
Timo Sirainen <tss@iki.fi>
parents: 12860
diff changeset
173 cydir_transaction_save_commit_post,
59e4c0d1457b lib-storage: Moved index_mailbox_context.save_*() methods to mailbox_vfuncs.
Timo Sirainen <tss@iki.fi>
parents: 12860
diff changeset
174 cydir_transaction_save_rollback,
5458
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
175 index_storage_is_inconsistent
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
176 }
daca7ed634c0 Added a simple cydir mail storage backend. It trusts index files completely:
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
177 };