/usr/include/dovecot/imapc-storage.h is in dovecot-dev 1:2.2.9-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | #ifndef IMAPC_STORAGE_H
#define IMAPC_STORAGE_H
#include "index-storage.h"
#include "imapc-settings.h"
#define IMAPC_STORAGE_NAME "imapc"
#define IMAPC_LIST_ESCAPE_CHAR '%'
#define IMAPC_LIST_BROKEN_CHAR '~'
struct imap_arg;
struct imapc_untagged_reply;
struct imapc_command_reply;
struct imapc_mailbox;
struct imapc_storage_client;
typedef void imapc_storage_callback_t(const struct imapc_untagged_reply *reply,
struct imapc_storage_client *client);
typedef void imapc_mailbox_callback_t(const struct imapc_untagged_reply *reply,
struct imapc_mailbox *mbox);
struct imapc_storage_event_callback {
char *name;
imapc_storage_callback_t *callback;
};
struct imapc_mailbox_event_callback {
const char *name;
imapc_mailbox_callback_t *callback;
};
#define IMAPC_HAS_FEATURE(mstorage, feature) \
(((mstorage)->set->parsed_features & feature) != 0)
#define IMAPC_BOX_HAS_FEATURE(mbox, feature) \
(((mbox)->storage->set->parsed_features & feature) != 0)
struct imapc_namespace {
const char *prefix;
char separator;
enum mail_namespace_type type;
};
struct imapc_storage_client {
int refcount;
/* either one of these may not be available: */
struct imapc_storage *_storage;
struct imapc_mailbox_list *_list;
struct imapc_client *client;
ARRAY(struct imapc_storage_event_callback) untagged_callbacks;
};
struct imapc_storage {
struct mail_storage storage;
const struct imapc_settings *set;
struct ioloop *root_ioloop;
struct imapc_storage_client *client;
struct imapc_mailbox *cur_status_box;
struct mailbox_status *cur_status;
unsigned int reopen_count;
ARRAY(struct imapc_namespace) remote_namespaces;
unsigned int namespaces_requested:1;
};
struct imapc_mail_cache {
uint32_t uid;
/* either fd != -1 or buf != NULL */
int fd;
buffer_t *buf;
};
struct imapc_fetch_request {
ARRAY(struct imapc_mail *) mails;
};
struct imapc_mailbox {
struct mailbox box;
struct imapc_storage *storage;
struct imapc_client_mailbox *client_box;
struct mail_index_transaction *delayed_sync_trans;
struct mail_index_view *sync_view, *delayed_sync_view;
struct timeout *to_idle_check, *to_idle_delay;
ARRAY(struct imapc_fetch_request *) fetch_requests;
/* if non-empty, contains the latest FETCH command we're going to be
sending soon (but still waiting to see if we can increase its
UID range) */
string_t *pending_fetch_cmd;
struct imapc_fetch_request *pending_fetch_request;
struct timeout *to_pending_fetch_send;
ARRAY(struct imapc_mailbox_event_callback) untagged_callbacks;
ARRAY(struct imapc_mailbox_event_callback) resp_text_callbacks;
enum mail_flags permanent_flags;
ARRAY_TYPE(uint32_t) delayed_expunged_uids;
uint32_t sync_uid_validity;
uint32_t sync_uid_next;
uint32_t sync_fetch_first_uid;
uint32_t sync_next_lseq;
uint32_t sync_next_rseq;
uint32_t exists_count;
uint32_t min_append_uid;
/* keep the previous fetched message body cached,
mainly for partial IMAP fetches */
struct imapc_mail_cache prev_mail_cache;
uint32_t prev_skipped_rseq, prev_skipped_uid;
struct imapc_sync_context *sync_ctx;
const char *guid_fetch_field_name;
unsigned int selecting:1;
unsigned int syncing:1;
unsigned int initial_sync_done:1;
unsigned int selected:1;
unsigned int exists_received:1;
};
struct imapc_simple_context {
struct imapc_storage_client *client;
int ret;
};
int imapc_storage_client_create(struct mail_namespace *ns,
const struct imapc_settings *imapc_set,
const struct mail_storage_settings *mail_set,
struct imapc_storage_client **client_r,
const char **error_r);
void imapc_storage_client_unref(struct imapc_storage_client **client);
struct mail_save_context *
imapc_save_alloc(struct mailbox_transaction_context *_t);
int imapc_save_begin(struct mail_save_context *ctx, struct istream *input);
int imapc_save_continue(struct mail_save_context *ctx);
int imapc_save_finish(struct mail_save_context *ctx);
void imapc_save_cancel(struct mail_save_context *ctx);
int imapc_copy(struct mail_save_context *ctx, struct mail *mail);
int imapc_transaction_save_commit_pre(struct mail_save_context *ctx);
void imapc_transaction_save_commit_post(struct mail_save_context *ctx,
struct mail_index_transaction_commit_result *result);
void imapc_transaction_save_rollback(struct mail_save_context *ctx);
void imapc_mailbox_run(struct imapc_mailbox *mbox);
void imapc_mail_cache_free(struct imapc_mail_cache *cache);
int imapc_mailbox_select(struct imapc_mailbox *mbox);
bool imap_resp_text_code_parse(const char *str, enum mail_error *error_r);
void imapc_copy_error_from_reply(struct imapc_storage *storage,
enum mail_error default_error,
const struct imapc_command_reply *reply);
void imapc_simple_context_init(struct imapc_simple_context *sctx,
struct imapc_storage_client *client);
void imapc_simple_run(struct imapc_simple_context *sctx);
void imapc_simple_callback(const struct imapc_command_reply *reply,
void *context);
int imapc_mailbox_commit_delayed_trans(struct imapc_mailbox *mbox,
bool *changes_r);
void imapc_mailbox_noop(struct imapc_mailbox *mbox);
void imapc_mailbox_set_corrupted(struct imapc_mailbox *mbox,
const char *reason, ...) ATTR_FORMAT(2, 3);
void imapc_storage_client_register_untagged(struct imapc_storage_client *client,
const char *name,
imapc_storage_callback_t *callback);
void imapc_mailbox_register_untagged(struct imapc_mailbox *mbox,
const char *name,
imapc_mailbox_callback_t *callback);
void imapc_mailbox_register_resp_text(struct imapc_mailbox *mbox,
const char *key,
imapc_mailbox_callback_t *callback);
void imapc_mailbox_register_callbacks(struct imapc_mailbox *mbox);
#endif
|