Mercurial > dovecot > core-2.2
changeset 3628:571336db01f4 HEAD
Added MAILBOX_OPEN_NO_INDEX_FILES flag and made streamed mboxes by default
also indexed.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 30 Sep 2005 21:55:00 +0300 |
parents | c0e35566dd14 |
children | e05a1af4bbc7 |
files | src/lib-storage/index/maildir/maildir-storage.c src/lib-storage/index/mbox/mbox-lock.c src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/mail-storage.h |
diffstat | 4 files changed, 40 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-storage.c Fri Sep 30 21:46:30 2005 +0300 +++ b/src/lib-storage/index/maildir/maildir-storage.c Fri Sep 30 21:55:00 2005 +0300 @@ -417,7 +417,12 @@ index_dir = maildir_get_index_path(istorage, name); control_dir = maildir_get_control_path(storage, name); - index = index_storage_alloc(index_dir, path, MAILDIR_INDEX_PREFIX); + if ((flags & MAILBOX_OPEN_NO_INDEX_FILES) != 0) + index = mail_index_alloc(NULL, NULL); + else { + index = index_storage_alloc(index_dir, path, + MAILDIR_INDEX_PREFIX); + } /* for shared mailboxes get the create mode from the permissions of dovecot-shared file. */
--- a/src/lib-storage/index/mbox/mbox-lock.c Fri Sep 30 21:46:30 2005 +0300 +++ b/src/lib-storage/index/mbox/mbox-lock.c Fri Sep 30 21:55:00 2005 +0300 @@ -297,9 +297,6 @@ return -1; } - if (max_wait_time == 0) - return 0; - now = time(NULL); if (now >= max_wait_time) return 0; @@ -341,9 +338,6 @@ return -1; } - if (max_wait_time == 0) - return 0; - now = time(NULL); if (now >= max_wait_time) return 0; @@ -381,11 +375,16 @@ fl.l_start = 0; fl.l_len = 0; - if (max_wait_time == 0) + if (max_wait_time == 0) { + i_assert(lock_type == F_UNLCK); wait_type = F_SETLK; - else { + } else { wait_type = F_SETLKW; - alarm(I_MIN(max_wait_time, 5)); + now = time(NULL); + if (now >= max_wait_time) + alarm(1); + else + alarm(I_MIN(max_wait_time - now, 5)); } while (fcntl(ctx->mbox->mbox_fd, wait_type, &fl) < 0) { @@ -396,7 +395,7 @@ } now = time(NULL); - if (max_wait_time != 0 && now >= max_wait_time) { + if (now >= max_wait_time) { alarm(0); return 0; }
--- a/src/lib-storage/index/mbox/mbox-storage.c Fri Sep 30 21:46:30 2005 +0300 +++ b/src/lib-storage/index/mbox/mbox-storage.c Fri Sep 30 21:55:00 2005 +0300 @@ -541,7 +541,13 @@ index_dir = mbox_get_index_dir(istorage, name); } - index = index_storage_alloc(index_dir, path, MBOX_INDEX_PREFIX); + if ((flags & MAILBOX_OPEN_NO_INDEX_FILES) != 0) + index = mail_index_alloc(NULL, NULL); + else { + index = index_storage_alloc(index_dir, path, + MBOX_INDEX_PREFIX); + } + mbox = mbox_alloc(storage, index, name, flags); if (mbox == NULL) return NULL; @@ -564,12 +570,26 @@ mbox_mailbox_open_stream(struct mbox_storage *storage, const char *name, struct istream *input, enum mailbox_open_flags flags) { + struct index_storage *istorage = INDEX_STORAGE(storage); struct mail_index *index; struct mbox_mailbox *mbox; + const char *path, *index_dir; flags |= MAILBOX_OPEN_READONLY; - index = mail_index_alloc(NULL, NULL); + if ((flags & MAILBOX_OPEN_NO_INDEX_FILES) != 0) + index = mail_index_alloc(NULL, NULL); + else { + path = mbox_get_path(istorage, name); + index_dir = mbox_get_index_dir(istorage, name); + + /* make sure the required directories are also there */ + if (create_mbox_index_dirs(istorage, name) < 0) + return NULL; + + index = index_storage_alloc(index_dir, path, MBOX_INDEX_PREFIX); + } + mbox = mbox_alloc(storage, index, name, flags); if (mbox == NULL) return NULL;
--- a/src/lib-storage/mail-storage.h Fri Sep 30 21:46:30 2005 +0300 +++ b/src/lib-storage/mail-storage.h Fri Sep 30 21:55:00 2005 +0300 @@ -37,7 +37,9 @@ (eg. when opening mailbox just for STATUS). */ MAILBOX_OPEN_FAST = 0x02, /* Don't reset MAIL_RECENT flags when syncing */ - MAILBOX_OPEN_KEEP_RECENT = 0x04 + MAILBOX_OPEN_KEEP_RECENT = 0x04, + /* Don't create index files for the mailbox */ + MAILBOX_OPEN_NO_INDEX_FILES = 0x08 }; enum mailbox_list_flags {