maildir-copy.c revision 746a7ec64a09649ed3c96c88b97cdc370a7bbe2f
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe/* Copyright (c) 2002-2007 Dovecot authors, see the included COPYING file */
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe const char *dest_fname;
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe unsigned int base_end_pos;
d9d416febbde142f8afd14d5472e5ab3253c640cwrowestatic int do_save_mail_size(struct maildir_mailbox *mbox, const char *path,
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe if (!maildir_filename_get_size(fname, MAILDIR_EXTRA_FILE_SIZE,
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe ctx->dest_fname = strrchr(str_c(ctx->dest_path), '/') + 1;
d9d416febbde142f8afd14d5472e5ab3253c640cwrowestatic int do_hardlink(struct maildir_mailbox *mbox, const char *path,
f84cab2da5f8958575b1ce99ca2bf4fda34cecb6mturk if (!ctx->preserve_filename && mbox->storage->save_size_in_filename &&
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe /* we could handle the EEXIST condition by changing the
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe filename, but it practically never happens so just fallback
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe to standard copying for the rare cases when it does. */
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe if (errno == EACCES || ECANTLINK(errno) || errno == EEXIST)
d9d416febbde142f8afd14d5472e5ab3253c640cwrowe "link(%s, %s) failed: %m",
d9d416febbde142f8afd14d5472e5ab3253c640cwrowemaildir_copy_hardlink(struct maildir_transaction_context *t, struct mail *mail,
const char *src_fname;
struct maildir_transaction_context *t =
int ret;
t_push();
t_pop();
if (ret > 0)
if (ret < 0)