mbox-storage.h revision 4b41116563110d00330896a568eff1078c382827
2875N/A#ifndef __MBOX_STORAGE_H
2875N/A#define __MBOX_STORAGE_H
2875N/A
2875N/A/* Padding to leave in X-Keywords header when rewriting mbox */
2875N/A#define MBOX_HEADER_PADDING 50
2875N/A/* Don't write Content-Length header unless it's value is larger than this. */
2875N/A#define MBOX_MIN_CONTENT_LENGTH_SIZE 1024
2875N/A
2875N/A#define MBOX_STORAGE_NAME "mbox"
2875N/A#define MBOX_SUBSCRIPTION_FILE_NAME ".subscriptions"
2875N/A#define MBOX_INDEX_PREFIX "dovecot.index"
2875N/A#define MBOX_INDEX_DIR_NAME ".imap"
2875N/A
2875N/A#include "index-storage.h"
2875N/A#include "mailbox-list-private.h"
2875N/A
2875N/Astruct mbox_storage {
2875N/A struct mail_storage storage;
2875N/A
2875N/A union mailbox_list_module_context list_module_ctx;
2875N/A};
2875N/A
3158N/Astruct mbox_mailbox {
2875N/A struct index_mailbox ibox;
2875N/A struct mbox_storage *storage;
2875N/A
2875N/A const char *path;
2875N/A
2875N/A int mbox_fd;
2875N/A struct istream *mbox_stream, *mbox_file_stream;
3025N/A int mbox_lock_type;
2875N/A dev_t mbox_dev;
2875N/A ino_t mbox_ino;
2875N/A unsigned int mbox_excl_locks, mbox_shared_locks;
2875N/A struct dotlock *mbox_dotlock;
2875N/A unsigned int mbox_lock_id, mbox_global_lock_id;
2875N/A struct timeout *keep_lock_to;
2875N/A bool mbox_readonly, mbox_writeonly;
2875N/A time_t mbox_dirty_stamp;
2875N/A off_t mbox_dirty_size;
2875N/A
2875N/A uint32_t mbox_ext_idx;
2875N/A
2875N/A unsigned int no_mbox_file:1;
2875N/A unsigned int mbox_sync_dirty:1;
2875N/A unsigned int mbox_do_dirty_syncs:1;
2875N/A unsigned int mbox_very_dirty_syncs:1;
3025N/A unsigned int mbox_save_md5:1;
2875N/A unsigned int mbox_dotlocked:1;
2875N/A unsigned int syncing:1;
2875N/A};
2875N/A
2875N/Astruct mbox_transaction_context {
2875N/A struct index_transaction_context ictx;
2875N/A union mail_index_transaction_module_context module_ctx;
2875N/A
2875N/A struct mbox_save_context *save_ctx;
2875N/A unsigned int mbox_lock_id;
3025N/A unsigned int mbox_modified:1;
3025N/A};
3025N/A
3025N/Aextern struct mail_vfuncs mbox_mail_vfuncs;
3025N/Aextern const char *mbox_hide_headers[], *mbox_save_drop_headers[];
2875N/Aextern unsigned int mbox_hide_headers_count, mbox_save_drop_headers_count;
2875N/A
2875N/Aint mbox_set_syscall_error(struct mbox_mailbox *mbox, const char *function);
2875N/A
2875N/Avoid mbox_transaction_class_init(void);
2875N/Avoid mbox_transaction_class_deinit(void);
2875N/A
2875N/Astruct mailbox_sync_context *
2875N/Ambox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags);
2875N/A
2875N/Aint mbox_save_init(struct mailbox_transaction_context *_t,
2875N/A enum mail_flags flags, struct mail_keywords *keywords,
2875N/A time_t received_date, int timezone_offset,
2875N/A const char *from_envelope, struct istream *input,
2875N/A struct mail *dest_mail, struct mail_save_context **ctx_r);
2875N/Aint mbox_save_continue(struct mail_save_context *ctx);
2875N/Aint mbox_save_finish(struct mail_save_context *ctx);
2875N/Avoid mbox_save_cancel(struct mail_save_context *ctx);
2875N/A
2875N/Aint mbox_transaction_save_commit(struct mbox_save_context *ctx);
2875N/Avoid mbox_transaction_save_rollback(struct mbox_save_context *ctx);
2875N/A
2875N/A#endif
3014N/A