maildir-index.h revision db1ee4a91a6572602302115e02146b29adea3a54
7cb128dc4cae2a03a742f63ba7afee23c78e3af0Phil Carmody#ifndef __MAILDIR_INDEX_H
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#define __MAILDIR_INDEX_H
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#include <sys/time.h>
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#include <dirent.h>
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#include "mail-index.h"
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch/* ":2,DFRST" - leave the 2 extra for other clients' additions */
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#define MAILDIR_LOCATION_EXTRA_SPACE 10
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschstruct mail_index *
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschmaildir_index_alloc(const char *maildir, const char *index_dir,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch const char *control_dir);
0a3769a4ef3afbbbd05df38f43ec7382fd65a2b6Florian Zeitz
0a3769a4ef3afbbbd05df38f43ec7382fd65a2b6Florian Zeitz/* Return new filename base to save into tmp/ */
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschconst char *maildir_generate_tmp_filename(const struct timeval *tv);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_create_tmp(struct mail_index *index, const char *dir,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch const char **path);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschconst char *maildir_get_location(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch struct mail_index_record *rec);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschenum mail_flags maildir_filename_get_flags(const char *fname,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch enum mail_flags default_flags);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschconst char *maildir_filename_set_flags(const char *fname,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch enum mail_flags flags);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_index_rebuild(struct mail_index *index);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_index_sync_readonly(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch const char *fname, int *found);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_index_sync(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch enum mail_lock_type lock_type, int *changes);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_index_append_file(struct mail_index *index, const char *dir,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch const char *fname, int new_dir);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_index_update_flags(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch struct mail_index_record *rec, unsigned int seq,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch enum mail_flags flags, int external_change);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschstruct istream *maildir_open_mail(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch struct mail_index_record *rec,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch time_t *internal_date, int *deleted);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschint maildir_expunge_mail(struct mail_index *index,
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch struct mail_index_record *rec);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Boschvoid maildir_clean_tmp(const char *dir);
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch#endif
ab90f702ceedb7ba445a9a592be0b213b27cbafaStephan Bosch