From dcc8d4b8ed9ddda4d87315b29a8b41325d785d7a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 16 Apr 2003 16:57:21 +0300 Subject: [PATCH] If we don't want to precache anything, don't open the file at all when building index. --HG-- branch : HEAD --- src/lib-index/maildir/Makefile.am | 3 +-- src/lib-index/maildir/maildir-build.c | 28 +++++++++++++++++++++-- src/lib-index/maildir/maildir-index.h | 3 --- src/lib-index/maildir/maildir-update.c | 31 -------------------------- 4 files changed, 27 insertions(+), 38 deletions(-) delete mode 100644 src/lib-index/maildir/maildir-update.c diff --git a/src/lib-index/maildir/Makefile.am b/src/lib-index/maildir/Makefile.am index c796003e21..e581285e94 100644 --- a/src/lib-index/maildir/Makefile.am +++ b/src/lib-index/maildir/Makefile.am @@ -13,8 +13,7 @@ libstorage_index_maildir_a_SOURCES = \ maildir-open.c \ maildir-rebuild.c \ maildir-sync.c \ - maildir-uidlist.c \ - maildir-update.c + maildir-uidlist.c noinst_HEADERS = \ maildir-index.h \ diff --git a/src/lib-index/maildir/maildir-build.c b/src/lib-index/maildir/maildir-build.c index 3eefb0ea0b..8d75d0189b 100644 --- a/src/lib-index/maildir/maildir-build.c +++ b/src/lib-index/maildir/maildir-build.c @@ -1,6 +1,7 @@ /* Copyright (C) 2002 Timo Sirainen */ #include "lib.h" +#include "istream.h" #include "str.h" #include "maildir-index.h" #include "mail-index-data.h" @@ -12,6 +13,27 @@ #include #include +static int maildir_record_update(struct mail_index *index, + struct mail_index_update *update, int fd) +{ + struct istream *input; + enum mail_data_field cache_fields; + + if (index->mail_read_mmaped) { + input = i_stream_create_mmap(fd, system_pool, + MAIL_MMAP_BLOCK_SIZE, 0, 0, FALSE); + } else { + input = i_stream_create_file(fd, system_pool, + MAIL_READ_BLOCK_SIZE, FALSE); + } + + cache_fields = index->header->cache_fields & ~DATA_FIELD_LOCATION; + mail_index_update_headers(update, input, cache_fields, NULL, NULL); + + i_stream_unref(input); + return TRUE; +} + static int maildir_index_append_fd(struct mail_index *index, int fd, const char *fname) { @@ -83,8 +105,10 @@ int maildir_index_append_file(struct mail_index *index, const char *dir, i_assert(index->lock_type != MAIL_LOCK_SHARED); - i_assert(dir != NULL); - i_assert(fname != NULL); + if ((index->header->cache_fields & ~DATA_FIELD_LOCATION) == 0) { + /* nothing cached, don't bother opening the file */ + return maildir_index_append_fd(index, -1, fname); + } path = t_strconcat(dir, "/", fname, NULL); fd = open(path, O_RDONLY); diff --git a/src/lib-index/maildir/maildir-index.h b/src/lib-index/maildir/maildir-index.h index 86f6aa6073..1a2f0fe2d1 100644 --- a/src/lib-index/maildir/maildir-index.h +++ b/src/lib-index/maildir/maildir-index.h @@ -35,9 +35,6 @@ struct istream *maildir_open_mail(struct mail_index *index, struct mail_index_record *rec, time_t *internal_date, int *deleted); -int maildir_record_update(struct mail_index *index, - struct mail_index_update *update, int fd); - void maildir_clean_tmp(const char *dir); #endif diff --git a/src/lib-index/maildir/maildir-update.c b/src/lib-index/maildir/maildir-update.c deleted file mode 100644 index c32e7001ef..0000000000 --- a/src/lib-index/maildir/maildir-update.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2002 Timo Sirainen */ - -#include "lib.h" -#include "istream.h" -#include "maildir-index.h" - -int maildir_record_update(struct mail_index *index, - struct mail_index_update *update, int fd) -{ - struct istream *input; - enum mail_data_field cache_fields; - - /* don't even bother opening the file if we're not going to do - anything */ - cache_fields = index->header->cache_fields & ~DATA_FIELD_LOCATION; - if (cache_fields == 0) - return TRUE; - - t_push(); - if (index->mail_read_mmaped) { - input = i_stream_create_mmap(fd, data_stack_pool, - MAIL_MMAP_BLOCK_SIZE, 0, 0, FALSE); - } else { - input = i_stream_create_file(fd, data_stack_pool, - MAIL_READ_BLOCK_SIZE, FALSE); - } - mail_index_update_headers(update, input, cache_fields, NULL, NULL); - i_stream_unref(input); - t_pop(); - return TRUE; -} -- 2.47.3