view src/lib-storage/index/index-storage.h @ 568:f2aa58c2afd0 HEAD

SEARCH CHARSET support. Currently we do it through iconv() and only ASCII characters are compared case-insensitively.
author Timo Sirainen <tss@iki.fi>
date Sun, 03 Nov 2002 10:39:43 +0200
parents c834e77b624c
children 2626acd3c6f4
line wrap: on
line source

#ifndef __INDEX_STORAGE_H
#define __INDEX_STORAGE_H

#include "mail-storage.h"
#include "mail-index.h"
#include "imap-message-cache.h"

typedef struct _IndexMailbox IndexMailbox;

struct _IndexMailbox {
	Mailbox box;

	/* expunge messages marked as deleted, requires index to be
	   exclusively locked */
	int (*expunge_locked)(IndexMailbox *ibox, int notify);

        MailboxSyncCallbacks sync_callbacks;
	void *sync_context;

	MailIndex *index;
	ImapMessageCache *cache;
	unsigned int synced_messages_count;

	unsigned int sent_diskspace_warning:1;
};

extern ImapMessageCacheIface index_msgcache_iface;

int mail_storage_set_index_error(IndexMailbox *ibox);

void index_storage_add(MailIndex *index);
MailIndex *index_storage_lookup_ref(const char *path);
void index_storage_unref(MailIndex *index);

IndexMailbox *index_storage_init(MailStorage *storage, Mailbox *box,
				 MailIndex *index, const char *name,
				 int readonly, int fast);
int index_storage_close(Mailbox *box);

int index_storage_sync_and_lock(IndexMailbox *ibox, int sync_size,
				MailLockType lock_type);
int index_storage_sync_modifylog(IndexMailbox *ibox, int hide_deleted);

int index_mailbox_fix_custom_flags(IndexMailbox *ibox, MailFlags *flags,
                                   const char *custom_flags[]);

unsigned int index_storage_get_recent_count(MailIndex *index);

int index_expunge_seek_first(IndexMailbox *ibox, unsigned int *seq,
			     MailIndexRecord **rec);
int index_expunge_mail(IndexMailbox *ibox, MailIndexRecord *rec,
		       unsigned int seq, int notify);

int index_storage_save(MailStorage *storage, const char *path,
		       IBuffer *inbuf, OBuffer *outbuf, uoff_t data_size);

int index_msgcache_open(ImapMessageCache *cache, MailIndex *index,
			MailIndexRecord *rec, ImapCacheField fields);

/* Mailbox methods: */
void index_storage_set_sync_callbacks(Mailbox *box,
				      MailboxSyncCallbacks *callbacks,
				      void *context);
int index_storage_copy(Mailbox *box, Mailbox *destbox,
		       const char *messageset, int uidset);
int index_storage_expunge(Mailbox *box, int notify);
int index_storage_get_status(Mailbox *box, MailboxStatusItems items,
			     MailboxStatus *status);
int index_storage_sync(Mailbox *box, int sync_expunges);
int index_storage_update_flags(Mailbox *box, const char *messageset, int uidset,
			       MailFlags flags, const char *custom_flags[],
			       ModifyType modify_type, int notify,
			       int *all_found);
int index_storage_fetch(Mailbox *box, MailFetchData *fetch_data,
			OBuffer *outbuf, int *all_found);
int index_storage_search(Mailbox *box, const char *charset, MailSearchArg *args,
			 OBuffer *outbuf, int uid_result);

#endif