Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6206:3f6154a837c6 HEAD
Don't copy mails with hardlinks if source and destination file mode/gid are
different.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 07 Aug 2007 11:54:42 +0300 |
parents | 65e12fa51d4d |
children | 23b486d0fe6d |
files | src/lib-storage/index/maildir/maildir-copy.c |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-copy.c Tue Aug 07 11:42:45 2007 +0300 +++ b/src/lib-storage/index/maildir/maildir-copy.c Tue Aug 07 11:54:42 2007 +0300 @@ -200,6 +200,16 @@ return 1; } +static bool +maildir_compatible_file_modes(struct maildir_mailbox *mbox1, + struct mailbox *box2) +{ + struct maildir_mailbox *mbox2 = (struct maildir_mailbox *)box2; + + return mbox1->mail_create_mode == mbox2->mail_create_mode && + mbox2->mail_create_gid == mbox2->mail_create_gid; +} + int maildir_copy(struct mailbox_transaction_context *_t, struct mail *mail, enum mail_flags flags, struct mail_keywords *keywords, struct mail *dest_mail) @@ -210,7 +220,8 @@ int ret; if (mbox->storage->copy_with_hardlinks && - mail->box->storage == mbox->ibox.box.storage) { + mail->box->storage == mbox->ibox.box.storage && + maildir_compatible_file_modes(mbox, mail->box)) { t_push(); ret = maildir_copy_hardlink(t, mail, flags, keywords, dest_mail);