Mercurial > dovecot > core-2.2
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 |
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 | 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 }; |