Mercurial > dovecot > core-2.2
changeset 9251:08cf5c1814ef HEAD
Transaction log view code cleanups.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 09 May 2009 12:32:04 -0400 |
parents | 4d6f33fa08ee |
children | 937dca181d77 |
files | src/lib-index/Makefile.am src/lib-index/mail-transaction-log-view-private.h src/lib-index/mail-transaction-log-view.c |
diffstat | 3 files changed, 44 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/Makefile.am Sat May 09 12:29:08 2009 -0400 +++ b/src/lib-index/Makefile.am Sat May 09 12:32:04 2009 -0400 @@ -47,6 +47,7 @@ mail-index-view-private.h \ mail-transaction-log.h \ mail-transaction-log-private.h \ + mail-transaction-log-view-private.h \ mailbox-list-index.h \ mailbox-list-index-private.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib-index/mail-transaction-log-view-private.h Sat May 09 12:32:04 2009 -0400 @@ -0,0 +1,33 @@ +#ifndef MAIL_TRANSACTION_LOG_VIEW_PRIVATE_H +#define MAIL_TRANSACTION_LOG_VIEW_PRIVATE_H + +#include "mail-transaction-log-private.h" + +struct mail_transaction_log_view { + struct mail_transaction_log *log; + struct mail_transaction_log_view *next; + + uint32_t min_file_seq, max_file_seq; + uoff_t min_file_offset, max_file_offset; + + struct mail_transaction_header tmp_hdr; + + /* a list of log files we've referenced. we have to keep this list + explicitly because more files may be added into the linked list + at any time. */ + ARRAY_DEFINE(file_refs, struct mail_transaction_log_file *); + struct mail_transaction_log_file *cur, *head, *tail; + uoff_t cur_offset; + + uint64_t prev_modseq; + uint32_t prev_file_seq; + uoff_t prev_file_offset; + + struct mail_transaction_log_file *mark_file; + uoff_t mark_offset, mark_next_offset; + uint64_t mark_modseq; + + unsigned int broken:1; +}; + +#endif
--- a/src/lib-index/mail-transaction-log-view.c Sat May 09 12:29:08 2009 -0400 +++ b/src/lib-index/mail-transaction-log-view.c Sat May 09 12:32:04 2009 -0400 @@ -3,34 +3,7 @@ #include "lib.h" #include "array.h" #include "mail-index-private.h" -#include "mail-transaction-log-private.h" - -struct mail_transaction_log_view { - struct mail_transaction_log *log; - struct mail_transaction_log_view *next; - - uint32_t min_file_seq, max_file_seq; - uoff_t min_file_offset, max_file_offset; - - struct mail_transaction_header tmp_hdr; - - /* a list of log files we've referenced. we have to keep this list - explicitly because more files may be added into the linked list - at any time. */ - ARRAY_DEFINE(file_refs, struct mail_transaction_log_file *); - struct mail_transaction_log_file *cur, *head, *tail; - uoff_t cur_offset; - - uint64_t prev_modseq; - uint32_t prev_file_seq; - uoff_t prev_file_offset; - - struct mail_transaction_log_file *mark_file; - uoff_t mark_offset, mark_next_offset; - uint64_t mark_modseq; - - unsigned int broken:1; -}; +#include "mail-transaction-log-view-private.h" struct mail_transaction_log_view * mail_transaction_log_view_open(struct mail_transaction_log *log) @@ -98,7 +71,7 @@ uint32_t max_file_seq, uoff_t max_file_offset, bool *reset_r) { - struct mail_transaction_log_file *file, *const *files; + struct mail_transaction_log_file *file, *const *files, *tail; uoff_t start_offset, end_offset; unsigned int i; uint32_t seq; @@ -114,15 +87,16 @@ return -1; } + tail = view->log->files; if (min_file_seq == 0) { /* index file doesn't exist yet. this transaction log should start from the beginning */ - if (view->log->files->hdr.prev_file_seq != 0) { + if (tail->hdr.prev_file_seq != 0) { /* but it doesn't */ return 0; } - min_file_seq = view->log->files->hdr.file_seq; + min_file_seq = tail->hdr.file_seq; min_file_offset = 0; if (max_file_seq == 0) { @@ -131,10 +105,10 @@ } } - if (min_file_seq == view->log->files->hdr.prev_file_seq && - min_file_offset == view->log->files->hdr.prev_file_offset) { + if (min_file_seq == tail->hdr.prev_file_seq && + min_file_offset == tail->hdr.prev_file_offset) { /* we can skip this */ - min_file_seq = view->log->files->hdr.file_seq; + min_file_seq = tail->hdr.file_seq; min_file_offset = 0; if (min_file_seq > max_file_seq) { @@ -153,14 +127,12 @@ return -1; } - if (min_file_offset > 0 && - min_file_offset < view->log->files->hdr.hdr_size) { + if (min_file_offset > 0 && min_file_offset < tail->hdr.hdr_size) { /* log file offset is probably corrupted in the index file. */ mail_transaction_log_view_set_corrupted(view, "file_seq=%u, min_file_offset (%"PRIuUOFF_T ") < hdr_size (%u)", - min_file_seq, min_file_offset, - view->log->files->hdr.hdr_size); + min_file_seq, min_file_offset, tail->hdr.hdr_size); return -1; }