box->pool, sizeof(void *), 5);
ibox = p_new(box->pool, struct index_mailbox_context, 1);
+ ibox->list_index_sync_ext_id = (uint32_t)-1;
ibox->index_flags = MAIL_INDEX_OPEN_FLAG_CREATE |
mail_storage_settings_to_index_flags(box->storage->set);
ibox->next_lock_notify = time(NULL) + LOCK_NOTIFY_INTERVAL;
uint32_t vsize_hdr_ext_id;
time_t sync_last_check;
+ uint32_t list_index_sync_ext_id;
};
#define INDEX_STORAGE_CONTEXT(obj) \
return ret;
}
-static unsigned int
-index_storage_list_get_ext_id(struct mail_storage *storage,
- struct mail_index_view *view)
+static uint32_t
+index_list_get_ext_id(struct mailbox *box, struct mail_index_view *view)
{
- if (storage->list_sync_ext_id == (uint32_t)-1) {
- storage->list_sync_ext_id =
+ struct index_mailbox_context *ibox = INDEX_STORAGE_CONTEXT(box);
+
+ if (ibox->list_index_sync_ext_id == (uint32_t)-1) {
+ ibox->list_index_sync_ext_id =
mail_index_ext_register(mail_index_view_get_index(view),
"index sync", 0,
sizeof(struct index_storage_list_index_record),
sizeof(uint32_t));
}
- return storage->list_sync_ext_id;
+ return ibox->list_index_sync_ext_id;
}
int index_storage_list_index_has_changed(struct mailbox *box,
if (mail_index_is_in_memory(mail_index_view_get_index(list_view)))
return 1;
- ext_id = index_storage_list_get_ext_id(box->storage, list_view);
+ ext_id = index_list_get_ext_id(box, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
rec = data;
return;
/* get the current record */
- ext_id = index_storage_list_get_ext_id(box->storage, list_view);
+ ext_id = index_list_get_ext_id(box, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
if (expunged)
return;
new_rec.mtime = st.st_mtime & 0xffffffffU;
if (old_rec == NULL ||
- memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0) {
- mail_index_update_ext(trans, seq,
- box->storage->list_sync_ext_id,
- &new_rec, NULL);
- }
+ memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0)
+ mail_index_update_ext(trans, seq, ext_id, &new_rec, NULL);
}
storage->set = mail_storage_get_driver_settings(_storage);
- storage->maildir_list_ext_id = (uint32_t)-1;
storage->temp_prefix = p_strdup(_storage->pool,
mailbox_list_get_temp_prefix(list));
mbox->box.storage = storage;
mbox->box.list = list;
mbox->box.mail_vfuncs = &maildir_mail_vfuncs;
+ mbox->maildir_list_index_ext_id = (uint32_t)-1;
index_storage_mailbox_alloc(&mbox->box, vname, flags,
MAILDIR_INDEX_PREFIX);
const struct maildir_settings *set;
const char *temp_prefix;
-
- uint32_t maildir_list_ext_id;
};
struct maildir_mailbox {
struct maildir_index_header maildir_hdr;
uint32_t maildir_ext_id;
+ uint32_t maildir_list_index_ext_id;
unsigned int synced:1;
unsigned int syncing_commit:1;
return ret < 0 ? -1 : (full_rescan ? 0 : 1);
}
-static unsigned int maildir_list_get_ext_id(struct maildir_storage *storage,
- struct mail_index_view *view)
+static unsigned int
+maildir_list_get_ext_id(struct maildir_mailbox *mbox,
+ struct mail_index_view *view)
{
- if (storage->maildir_list_ext_id == (uint32_t)-1) {
- storage->maildir_list_ext_id =
+ if (mbox->maildir_list_index_ext_id == (uint32_t)-1) {
+ mbox->maildir_list_index_ext_id =
mail_index_ext_register(mail_index_view_get_index(view),
"maildir", 0,
sizeof(struct maildir_list_index_record),
sizeof(uint32_t));
}
- return storage->maildir_list_ext_id;
+ return mbox->maildir_list_index_ext_id;
}
int maildir_list_index_has_changed(struct mailbox *box,
if (mbox->storage->set->maildir_very_dirty_syncs)
return index_storage_list_index_has_changed(box, list_view, seq);
- ext_id = maildir_list_get_ext_id(mbox->storage, list_view);
+ ext_id = maildir_list_get_ext_id(mbox, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
rec = data;
/* get the current record */
list_view = mail_index_transaction_get_view(trans);
- ext_id = maildir_list_get_ext_id(mbox->storage, list_view);
+ ext_id = maildir_list_get_ext_id(mbox, list_view);
mail_index_lookup_ext(list_view, seq, ext_id, &data, &expunged);
if (expunged)
return;
}
if (old_rec == NULL ||
- memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0) {
- mail_index_update_ext(trans, seq,
- mbox->storage->maildir_list_ext_id,
- &new_rec, NULL);
- }
+ memcmp(old_rec, &new_rec, sizeof(*old_rec)) != 0)
+ mail_index_update_ext(trans, seq, ext_id, &new_rec, NULL);
}
struct mail_user *user;
const char *temp_path_prefix;
const struct mail_storage_settings *set;
- uint32_t list_sync_ext_id;
enum mail_storage_flags flags;