mdbox-map.c revision 96088ba9ef3b6c113a0a41f3778cd38f437ddc3d
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2007-2016 Dovecot authors, see the included COPYING file */
66bcc2a2f65576211f2f55edbe61130b96287fcdTimo Sirainen#define DBOX_FORCE_PURGE_MIN_BYTES (1024*1024*10)
66bcc2a2f65576211f2f55edbe61130b96287fcdTimo Sirainen#define MAP_STORAGE(map) (&(map)->storage->storage.storage)
66bcc2a2f65576211f2f55edbe61130b96287fcdTimo Sirainenstatic int mdbox_map_generate_uid_validity(struct mdbox_map *map);
66bcc2a2f65576211f2f55edbe61130b96287fcdTimo Sirainenvoid mdbox_map_set_corrupted(struct mdbox_map *map, const char *format, ...)
struct mdbox_map *
sizeof(struct mdbox_map_mail_index_header),
sizeof(struct mdbox_map_mail_index_record),
sizeof(uint32_t));
return map;
MAILBOX_LIST_PATH_TYPE_DIR) < 0) {
MAILBOX_LIST_PATH_TYPE_INDEX) < 0) {
unsigned int interval =
if (interval == 0) {
int ret = 0;
if (create_missing) {
if (ret > 0) {
if (ret < 0) {
if (ret == 0) {
int ret = 0;
if (fscked)
return ret;
return FALSE;
const void *data;
const void *data;
int ret;
return ret;
int ret;
return ret;
const void *data;
return uid;
const void *data;
const void *data;
bool expunged;
int ret;
return ret;
if (*ref16_p != 0)
return atomic;
const char *reason)
int ret;
if (ret <= 0) {
int ret = 0;
return ret;
struct mdbox_map_transaction_context *
bool external)
bool success;
if (external)
if (success) {
flags);
return ctx;
const char *reason)
const void *data;
if (diff > 0) {
map_uid);
unsigned int i, count;
for (i = 0; i < count; i++) {
const void *data;
int ret = 0;
if (ret == 0)
return ret;
struct mdbox_map_append_context *
return ctx;
if (interval == 0)
bool notfound;
if (want_altpath) {
return FALSE;
return FALSE;
if (notfound)
return FALSE;
return FALSE;
return FALSE;
return TRUE;
bool last;
int ret;
return FALSE;
return FALSE;
return TRUE;
bool want_altpath,
int ret;
return TRUE;
return TRUE;
return !file_too_old;
unsigned int i, count;
for (i = 0; i < count; i++) {
return TRUE;
return FALSE;
static struct dbox_file_append_context *
unsigned int i, count;
return append;
return NULL;
struct dirent *d;
int ret = 0;
&file_id) < 0)
if (errno != 0) {
return ret;
unsigned int backwards_lookup_count;
bool retry_later;
if (want_altpath) {
seq++;
int ret;
if (ret > 0)
else if (ret < 0)
if (ret <= 0) {
if (!existing) {
unsigned int count;
unsigned int count;
struct dirent *d;
unsigned int i, count;
for (i = 0; i < count; i++) {
file_id--;
unsigned int i, count;
int ret = 0;
*first_map_uid_r = 0;
*last_map_uid_r = 0;
for (i = 0; i < count; i++) {
return ret;
for (i = j = 0; i < map_uids_count; i++) {
i_unreached();
unsigned int i, count;
for (i = 0; i < count; i++) {
unsigned int i, count;
for (i = 0; i < count; i++) {
unsigned int i, count;
for (i = 0; i < count; i++) {
for (i = 0; i < count; i++) {
int ret;
if (ret <= 0) {
if (uid_validity == 0)
return uid_validity;