mbox-file.c revision b5e6f6f27c1461f0f9f202615eeb738a645188c3
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen/* Copyright (C) 2002-2003 Timo Sirainen */
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen /* read-only mbox stream */
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen fd = open(mbox->path, mbox->mbox_readonly ? O_RDONLY : O_RDWR);
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen if (fd == -1 && errno == EACCES && !mbox->mbox_readonly) {
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainenvoid mbox_file_close(struct mbox_mailbox *mbox)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainenint mbox_file_open_stream(struct mbox_mailbox *mbox)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen /* read-only mbox stream */
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen i_assert(mbox->mbox_fd == -1 && mbox->mbox_readonly);
709aa305126c32b49657e53d04826087b6838c16Timo Sirainen i_stream_create_from_data(default_pool, NULL, 0);
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen i_stream_create_mmap(mbox->mbox_fd, default_pool,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen i_stream_create_file(mbox->mbox_fd, default_pool,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen i_stream_create_raw_mbox(default_pool, mbox->mbox_file_stream);
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainenvoid mbox_file_close_stream(struct mbox_mailbox *mbox)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen /* read-only mbox stream */
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainenint mbox_file_seek(struct mbox_mailbox *mbox, struct mail_index_view *view,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen ret = mail_index_lookup_ext(view, seq, mbox->mbox_ext_idx, &data);
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen mail_storage_set_critical(&mbox->storage->storage,
7501b9f694460101b41d1d708ebc3ec2b0400b1cTimo Sirainen "Cached message offset lost for seq %u in mbox file %s",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen if (istream_raw_mbox_seek(mbox->mbox_stream, offset) < 0) {
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen mail_storage_set_error(&mbox->storage->storage,
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen "Mailbox isn't a valid mbox file");
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen mail_storage_set_critical(&mbox->storage->storage,
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen "Cached message offset %s is invalid for mbox file %s",
3343a61404603b21c246783a7963b77833095f31Timo Sirainen /* we're dirty - make sure this is the correct mail */
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen ret = mbox_sync_parse_match_mail(mbox, view, seq);