view src/lib-storage/index/maildir/maildir-storage.h @ 2322:aae574ed7f4c HEAD

Broke mailbox_sync() into iterator.
author Timo Sirainen <tss@iki.fi>
date Mon, 12 Jul 2004 14:35:50 +0300
parents 755ec9442a58
children 1371d41c375f
line wrap: on
line source

#ifndef __MAILDIR_STORAGE_H
#define __MAILDIR_STORAGE_H

/* Hierarchy separator in Maildir++ filenames - shouldn't be changed */
#define MAILDIR_FS_SEP '.'
#define MAILDIR_FS_SEP_S "."

#define SUBSCRIPTION_FILE_NAME "subscriptions"
#define MAILDIR_INDEX_PREFIX "dovecot.index"

#include "index-storage.h"

struct maildir_save_context;
struct maildir_copy_context;

struct maildir_transaction_context {
	struct index_transaction_context ictx;
	struct maildir_save_context *save_ctx;
	struct maildir_copy_context *copy_ctx;
};

extern struct mail maildir_mail;

/* Return -1 = error, 0 = file not found, 1 = ok */
typedef int maildir_file_do_func(struct index_mailbox *ibox,
				 const char *path, void *context);

int maildir_file_do(struct index_mailbox *ibox, uint32_t seq,
		    maildir_file_do_func *func, void *context);
const char *maildir_generate_tmp_filename(const struct timeval *tv);
int maildir_create_tmp(struct index_mailbox *ibox, const char *dir,
		       mode_t mode, const char **fname_r);

struct mailbox_list_context *
maildir_mailbox_list_init(struct mail_storage *storage,
			  const char *mask, enum mailbox_list_flags flags);
int maildir_mailbox_list_deinit(struct mailbox_list_context *ctx);
struct mailbox_list *
maildir_mailbox_list_next(struct mailbox_list_context *ctx);

struct mailbox_sync_context *
maildir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags);
int maildir_storage_sync_force(struct index_mailbox *ibox);

struct mailbox_transaction_context *
maildir_transaction_begin(struct mailbox *box, int hide);
int maildir_transaction_commit(struct mailbox_transaction_context *t);
void maildir_transaction_rollback(struct mailbox_transaction_context *t);

int maildir_save(struct mailbox_transaction_context *t,
		 const struct mail_full_flags *flags,
		 time_t received_date, int timezone_offset,
		 const char *from_envelope, struct istream *data,
		 struct mail **mail_r);
int maildir_save_commit(struct maildir_save_context *ctx);
void maildir_save_rollback(struct maildir_save_context *ctx);

int maildir_copy(struct mailbox_transaction_context *t, struct mail *mail,
		 struct mail **dest_mail_r);
int maildir_copy_commit(struct maildir_copy_context *ctx);
void maildir_copy_rollback(struct maildir_copy_context *ctx);

const char *maildir_fix_mailbox_name(struct index_storage *storage,
				     const char *name, int remove_namespace);
const char *maildir_get_path(struct index_storage *storage, const char *name);

int maildir_sync_last_commit(struct index_mailbox *ibox);

int maildir_filename_get_flags(const char *fname, enum mail_flags *flags_r,
			       keywords_mask_t keywords_r);
const char *maildir_filename_set_flags(const char *fname, enum mail_flags flags,
				       keywords_mask_t keywords);

unsigned int maildir_hash(const void *p);
int maildir_cmp(const void *p1, const void *p2);

#endif