changeset 13682:0a3eafad58c0

maildir: When renaming filename due to broken size, don't forget message flags.
author Timo Sirainen <tss@iki.fi>
date Wed, 09 Nov 2011 12:55:37 +0200
parents 12bd19be1315
children b29d9d98f5c0
files src/lib-storage/index/maildir/maildir-mail.c
diffstat 1 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-mail.c	Wed Nov 09 00:10:07 2011 +0200
+++ b/src/lib-storage/index/maildir/maildir-mail.c	Wed Nov 09 12:55:37 2011 +0200
@@ -618,7 +618,7 @@
 {
 	struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
 	enum maildir_uidlist_rec_flag flags;
-	const char *subdir, *fname, *path, *newpath, *p;
+	const char *subdir, *fname, *path, *newpath, *p, *fname_info;
 	uoff_t size;
 	char wrong_key;
 
@@ -647,8 +647,12 @@
 		return;
 	}
 
-	newpath = t_strdup_printf("%s/%s/%s", mailbox_get_path(&mbox->box),
-				  subdir, t_strdup_until(fname, p));
+	fname_info = strchr(fname, MAILDIR_INFO_SEP);
+	if (fname_info == NULL)
+		fname_info = "";
+
+	newpath = t_strdup_printf("%s/%s/%s%s", mailbox_get_path(&mbox->box),
+				  subdir, t_strdup_until(fname, p), fname_info);
 	if (rename(path, newpath) == 0) {
 		mail_storage_set_critical(mail->box->storage,
 			"Maildir filename has wrong %c value, "