mail-transaction-log-view.c revision ccffbed92cb02c24fd717808a84138240bf1885b
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen/* Copyright (C) 2003-2004 Timo Sirainen */
6e5a4cdf7ef123589e2409e0012b1024c97957d5Aki Tuomi /* a list of log files we've referenced. we have to keep this list
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen explicitly because more files may be added into the linked list
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen at any time. */
b82474d60c15409eda71c55971710fd3b12b8a0fTimo Sirainen ARRAY_DEFINE(file_refs, struct mail_transaction_log_file *);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen struct mail_transaction_log_file *cur, *head, *tail;
22535a9e685e29214082878e37a267157044618eTimo Sirainenmail_transaction_log_view_open(struct mail_transaction_log *log)
849969f639a00eab26791db3cb1b66430420c0cdTimo Sirainen view = i_new(struct mail_transaction_log_view, 1);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen array_append(&view->file_refs, &view->head, 1);
adea1e1e46ccb4ae107767fd930e3d1fb4f1d11dTimo Sirainenmail_transaction_log_view_unref_all(struct mail_transaction_log_view *view)
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen struct mail_transaction_log_file *const *files;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen unsigned int i, count;
74674a53a72dab535c61f455b2246ef2797844eaTimo Sirainen for (i = 0; i < count; i++)
10f6f2224c897fc543973efd2f46b86a3ab1148dAki Tuomivoid mail_transaction_log_view_close(struct mail_transaction_log_view **_view)
3cf67672fdc87583cb23ce088c95bb5dee60e74dTimo Sirainen for (p = &view->log->views; *p != NULL; p = &(*p)->next) {
b44650b0f48a4b5f0dc240ed836833a00b643b9fTimo Sirainenvoid mail_transaction_log_views_close(struct mail_transaction_log *log)
b44650b0f48a4b5f0dc240ed836833a00b643b9fTimo Sirainen for (view = log->views; view != NULL; view = view->next)
a3dd97fb6d92a89c3de0597fed2d4b044c7aeb84Timo Sirainenmail_transaction_log_view_set(struct mail_transaction_log_view *view,
f968e62caa52a8924bd05ebf76ff515b5c18e17bTimo Sirainen uint32_t min_file_seq, uoff_t min_file_offset,
dc9bfb7dc057964238e181d3d8b08751527bb08aTimo Sirainen uint32_t max_file_seq, uoff_t max_file_offset,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen struct mail_transaction_log_file *file, *first;
9625595c47c665f5aee57ebfcb1fcbe9ad1bf3a0Martti Rannanjärvi /* transaction log is closed already. this log view shouldn't
be5c76fabc7439fd33bc799bc3ab3f570799977bTimo Sirainen be used anymore. */
1e21e6be70994b1aa9e52ca0e2f51afefca6d0dfTimo Sirainen /* new index, transaction file not synced yet */
min_file_offset = 0;
if (max_file_seq == 0) {
min_file_offset = 0;
if (ret <= 0)
return ret;
if (min_file_offset == 0) {
if (ret <= 0)
return ret;
if (ret <= 0) {
if (ret < 0)
if (ret <= 0)
return ret;
const char *fmt, ...)
t_push();
t_pop();
const void **data_r)
const void *data;
unsigned int record_size;
record_size = 0;
if (record_size != 0 &&
uint32_t i;
for (i = 0; i < hdr_size; ) {
const void *data;
int ret = 0;
if (ret < 0) {
if (ret == 0)