mail-storage-private.h revision a27e065f1a1f91c7fbdf7c2ea1c387441af0cbb3
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen/* Some error strings that should be used everywhere to avoid
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen permissions checks from revealing mailbox's existence */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen#define MAIL_STORAGE_ERR_MAILBOX_NOT_FOUND "Mailbox doesn't exist: %s"
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen#define MAIL_STORAGE_ERR_NO_PERMISSION "Permission denied"
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen/* Called after mailbox has been opened */
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainenextern void (*hook_mailbox_opened)(struct mailbox *box);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen void (*class_init)(void);
4ded3d18fa391ae5908f9834f1390cf55e8c99d5Timo Sirainen void (*destroy)(struct mail_storage *storage);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen bool (*autodetect)(const char *data, enum mail_storage_flags flags);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen void (*set_callbacks)(struct mail_storage *storage,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen const char *(*get_mailbox_control_dir)(struct mail_storage *storage,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen const char *name);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen const char *(*get_mailbox_index_dir)(struct mail_storage *storage,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen const char *name);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen struct mailbox *(*mailbox_open)(struct mail_storage *storage,
4ded3d18fa391ae5908f9834f1390cf55e8c99d5Timo Sirainen int (*mailbox_create)(struct mail_storage *storage, const char *name,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen int (*mailbox_delete)(struct mail_storage *storage, const char *name);
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen int (*mailbox_rename)(struct mail_storage *storage, const char *oldname,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen const char *newname);
ba153863e55d75a7c2f28c9c010a905b8887b62bTimo Sirainen int (*is_mailbox)(struct mail_storage *storage,
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen const char *(*get_last_error)(struct mail_storage *storage,
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen/* private: */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen /* Module-specific contexts. See mail_storage_module_id. */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen /* IMAP: Give a BAD reply instead of NO */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen /* Internal temporary error, as opposed to visible user errors like
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen "permission denied" or "out of disk space" */
128ab2c52a29068be87e12ab5aebbb8fdc933adfTimo Sirainen bool (*allow_new_keywords)(struct mailbox *box);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen int (*get_status)(struct mailbox *box, enum mailbox_status_items items,
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen int (*sync_next)(struct mailbox_sync_context *ctx,
void *context);
struct mailbox_transaction_context *
struct mail_keywords *
const char *const keywords[]);
struct mail *
struct mailbox_header_lookup_ctx *
const char *const headers[]);
struct mail_search_context *
struct mailbox {
char *name;
struct mailbox_vfuncs v;
struct mail_vfuncs {
struct istream *
struct mail_private {
struct mail_vfuncs v;
struct mailbox_list_context {
bool failed;
struct mailbox_transaction_context {
struct mail_search_context {
char *charset;
struct mail_save_context {
struct mailbox_sync_context {
struct mailbox_header_lookup_ctx {
extern unsigned int mail_storage_module_id;
extern unsigned int mail_storage_mail_index_module_id;
*((void **)array_idx_modifiable( \
*((void **)array_idx_modifiable( \
*((void **)array_idx_modifiable( \
bool *syntax_error_r);
enum mailbox_list_flags
void *context);