mail-index.h revision cec8e298523c65f9ed832a2d1fc65068708d9f7d
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Create index if it doesn't exist */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Update \Recent flag counters */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Compressing and cache updates are not performed */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Invalidate memory maps before accessing them */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio MAIL_INDEX_OPEN_FLAG_MMAP_INVALIDATE = 0x08,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* internal: we're creating the index */
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio /* Rebuild flag is set while index is being rebuilt or when
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio some error is noticed in the index file. If this flag is set,
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio the index shouldn't be used before rebuilding it. */
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio MAIL_INDEX_HDR_FLAG_COMPRESS_CACHE = NBO32_BIT3,
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio MAIL_INDEX_HDR_FLAG_DIRTY_MESSAGES = NBO32_BIT4,
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio MAIL_INDEX_HDR_FLAG_DIRTY_CUSTOMFLAGS = NBO32_BIT5,
21909d3b620d97e81dd946b959a47efe88d2b7d8Fabiano Fidêncio MAIL_INDEX_HDR_FLAG_MAILDIR_NEW = NBO32_BIT6
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* If binary flags are set, it's not checked whether mail is
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio missing CRs. So this flag may be set as an optimization for
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio regular non-binary mails as well if it's known that it contains
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio valid CR+LF line breaks. */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio MAIL_INDEX_FLAG_BINARY_HEADER = NBO32_BIT0,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Mail flags have been changed in index, but not written into
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio actual mailbox yet. */
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio /* Maildir: Mail file is in new/ dir instead of cur/ */
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio /* Mail header or body is known to contain NUL characters. */
e17e37cd0e2109e7f1bd4ae48edfc8cca85b3f93Fabiano Fidêncio /* Mail header or body is known to not contain NUL characters. */
enum mail_lock_type {
MAIL_LOCK_UNLOCK = 0,
enum mail_lock_notify_type {
enum mail_index_error {
struct mail_index_header {
struct mail_index_record {
struct mail_index {
void *context);
unsigned int seq);
unsigned int first_uid,
unsigned int last_uid,
unsigned int *seq_r);
int external_change);
int external_change);
unsigned int indexid;
unsigned int sync_id;
unsigned int excl_lock_counter;
unsigned int expunge_counter;
int mbox_fd;
unsigned int mbox_lock_counter;
unsigned int mbox_sync_counter;
int maildir_lock_fd;
void *mmap_base;
unsigned int first_recent_uid;
void *lock_notify_context;
unsigned int set_flags;
unsigned int cache_later_locks;
#ifdef DEV_T_STRUCT
# define MAIL_INDEX_PRIVATE_FILL 0
#define MAIL_INDEX_PRIVATE_FILL \
void *context);
unsigned int seq);
struct mail_index_record *
int external_change);
int external_change);
((struct mail_index_record *) \
((struct mail_index_record *) \
sizeof(struct mail_index_record))
STMT_START { \
} STMT_END
sizeof(struct mail_index_record))