dovecot-1.2: Maildir: Use i_stream_stat() instead of i_stream_ge...

dovecot at dovecot.org dovecot at dovecot.org
Mon Jun 1 02:29:59 EEST 2009


details:   http://hg.dovecot.org/dovecot-1.2/rev/e77a5e5ffc9d
changeset: 9099:e77a5e5ffc9d
user:      Timo Sirainen <tss at iki.fi>
date:      Sun May 31 19:29:53 2009 -0400
description:
Maildir: Use i_stream_stat() instead of i_stream_get_fd()+fstat(). Fixes zlib plugin.

diffstat:

1 file changed, 6 insertions(+), 9 deletions(-)
src/lib-storage/index/maildir/maildir-mail.c |   15 ++++++---------

diffs (34 lines):

diff -r 6e42cd6ae8a7 -r e77a5e5ffc9d src/lib-storage/index/maildir/maildir-mail.c
--- a/src/lib-storage/index/maildir/maildir-mail.c	Thu May 28 14:42:21 2009 -0400
+++ b/src/lib-storage/index/maildir/maildir-mail.c	Sun May 31 19:29:53 2009 -0400
@@ -72,8 +72,9 @@ static int maildir_mail_stat(struct mail
 {
 	struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
 	struct index_mail *imail = (struct index_mail *)mail;
+	const struct stat *stp;
 	const char *path;
-	int fd, ret;
+	int ret;
 
 	if (mail->lookup_abort == MAIL_LOOKUP_ABORT_NOT_IN_CACHE)
 		return mail_set_aborted(mail);
@@ -86,15 +87,11 @@ static int maildir_mail_stat(struct mail
 	}
 
 	if (imail->data.stream != NULL) {
-		fd = i_stream_get_fd(imail->data.stream);
-		i_assert(fd != -1);
-
 		imail->mail.stats_fstat_lookup_count++;
-		if (fstat(fd, st) < 0) {
-			mail_storage_set_critical(&mbox->storage->storage,
-						  "fstat(maildir) failed: %m");
-			return -1;
-		}
+		stp = i_stream_stat(imail->data.stream, FALSE);
+		if (stp == NULL)
+			return -1;
+		*st = *stp;
 	} else if (mail->uid != 0) {
 		imail->mail.stats_stat_lookup_count++;
 		ret = maildir_file_do(mbox, mail->uid, do_stat, st);


More information about the dovecot-cvs mailing list