Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/maildir/maildir-mail.c @ 3279:b698ae839a18 HEAD
Moved mbox/maildir-specific variables from struct index_mailbox to
mbox_mailbox and maildir_mailbox.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 08 Apr 2005 16:13:45 +0300 |
parents | ff47e78ad717 |
children | 2c72492dfd91 |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-mail.c Fri Apr 08 15:14:41 2005 +0300 +++ b/src/lib-storage/index/maildir/maildir-mail.c Fri Apr 08 16:13:45 2005 +0300 @@ -10,7 +10,8 @@ #include <unistd.h> #include <sys/stat.h> -static int do_open(struct index_mailbox *ibox, const char *path, void *context) +static int +do_open(struct maildir_mailbox *mbox, const char *path, void *context) { int *fd = context; @@ -20,12 +21,13 @@ if (errno == ENOENT) return 0; - mail_storage_set_critical(ibox->box.storage, + mail_storage_set_critical(&mbox->storage->storage, "open(%s) failed: %m", path); return -1; } -static int do_stat(struct index_mailbox *ibox, const char *path, void *context) +static int +do_stat(struct maildir_mailbox *mbox, const char *path, void *context) { struct stat *st = context; @@ -34,20 +36,20 @@ if (errno == ENOENT) return 0; - mail_storage_set_critical(ibox->box.storage, + mail_storage_set_critical(&mbox->storage->storage, "stat(%s) failed: %m", path); return -1; } static struct istream * -maildir_open_mail(struct index_mailbox *ibox, uint32_t uid, int *deleted) +maildir_open_mail(struct maildir_mailbox *mbox, uint32_t uid, int *deleted) { int fd; *deleted = FALSE; fd = -1; - if (maildir_file_do(ibox, uid, do_open, &fd) < 0) + if (maildir_file_do(mbox, uid, do_open, &fd) < 0) return NULL; if (fd == -1) { @@ -55,7 +57,7 @@ return NULL; } - if (ibox->mail_read_mmaped) { + if (mbox->ibox.mail_read_mmaped) { return i_stream_create_mmap(fd, default_pool, MAIL_MMAP_BLOCK_SIZE, 0, 0, TRUE); } else { @@ -66,7 +68,8 @@ static time_t maildir_mail_get_received_date(struct mail *_mail) { - struct index_mail *mail = (struct index_mail *) _mail; + struct index_mail *mail = (struct index_mail *)_mail; + struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox; struct index_mail_data *data = &mail->data; struct stat st; int fd; @@ -85,12 +88,12 @@ i_assert(fd != -1); if (fstat(fd, &st) < 0) { - mail_storage_set_critical(mail->ibox->box.storage, + mail_storage_set_critical(&mbox->storage->storage, "fstat(maildir) failed: %m"); return (time_t)-1; } } else { - if (maildir_file_do(mail->ibox, mail->mail.mail.uid, + if (maildir_file_do(mbox, mail->mail.mail.uid, do_stat, &st) <= 0) return (time_t)-1; } @@ -105,6 +108,7 @@ static uoff_t maildir_mail_get_virtual_size(struct mail *_mail) { struct index_mail *mail = (struct index_mail *)_mail; + struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox; struct index_mail_data *data = &mail->data; const char *fname, *p; uoff_t virtual_size; @@ -119,7 +123,7 @@ return data->virtual_size; } - fname = maildir_uidlist_lookup(mail->ibox->uidlist, + fname = maildir_uidlist_lookup(mbox->uidlist, mail->mail.mail.uid, &flags); if (fname == NULL) return (uoff_t)-1; @@ -149,11 +153,12 @@ maildir_mail_get_special(struct mail *_mail, enum mail_fetch_field field) { struct index_mail *mail = (struct index_mail *)_mail; + struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox; enum maildir_uidlist_rec_flag flags; const char *fname, *end; if (field == MAIL_FETCH_UIDL_FILE_NAME) { - fname = maildir_uidlist_lookup(mail->ibox->uidlist, + fname = maildir_uidlist_lookup(mbox->uidlist, mail->mail.mail.uid, &flags); end = strchr(fname, ':'); return end == NULL ? fname : t_strdup_until(fname, end); @@ -165,6 +170,7 @@ static uoff_t maildir_mail_get_physical_size(struct mail *_mail) { struct index_mail *mail = (struct index_mail *)_mail; + struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox; struct index_mail_data *data = &mail->data; struct stat st; const char *fname, *p; @@ -175,7 +181,7 @@ if (size != (uoff_t)-1) return size; - fname = maildir_uidlist_lookup(mail->ibox->uidlist, + fname = maildir_uidlist_lookup(mbox->uidlist, mail->mail.mail.uid, &flags); if (fname == NULL) return (uoff_t)-1; @@ -195,7 +201,7 @@ } if (size == (uoff_t)-1) { - if (maildir_file_do(mail->ibox, mail->mail.mail.uid, + if (maildir_file_do(mbox, mail->mail.mail.uid, do_stat, &st) <= 0) return (uoff_t)-1; size = st.st_size; @@ -212,12 +218,13 @@ struct message_size *hdr_size, struct message_size *body_size) { - struct index_mail *mail = (struct index_mail *) _mail; + struct index_mail *mail = (struct index_mail *)_mail; + struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox; struct index_mail_data *data = &mail->data; int deleted; if (data->stream == NULL) { - data->stream = maildir_open_mail(mail->ibox, + data->stream = maildir_open_mail(mbox, mail->mail.mail.uid, &deleted); if (data->stream == NULL) { _mail->expunged = deleted;