Mercurial > dovecot > original-hg > dovecot-1.2
view src/lib-storage/mail-copy.c @ 7086:7ed926ed7aa4 HEAD
Updated copyright notices to include year 2008.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 01 Jan 2008 22:05:21 +0200 |
parents | 65c69a53a7be |
children | 2c1e4f1fc4e0 |
line wrap: on
line source
/* Copyright (c) 2004-2008 Dovecot authors, see the included COPYING file */ #include "lib.h" #include "istream.h" #include "mail-storage-private.h" #include "mail-copy.h" int mail_storage_copy(struct mailbox_transaction_context *t, struct mail *mail, enum mail_flags flags, struct mail_keywords *keywords, struct mail *dest_mail) { struct mail_save_context *ctx; struct istream *input; const char *from_envelope; time_t received_date; if (mail_get_stream(mail, NULL, NULL, &input) < 0) return -1; if (mail_get_received_date(mail, &received_date) < 0) return -1; if (mail_get_special(mail, MAIL_FETCH_FROM_ENVELOPE, &from_envelope) < 0) return -1; if (*from_envelope == '\0') from_envelope = NULL; if (mailbox_save_init(t, flags, keywords, received_date, 0, from_envelope, input, dest_mail, &ctx) < 0) return -1; while (i_stream_read(input) != -1) { if (mailbox_save_continue(ctx) < 0) break; } if (input->stream_errno != 0) { mail_storage_set_critical(t->box->storage, "copy: i_stream_read() failed: %m"); mailbox_save_cancel(&ctx); return -1; } return mailbox_save_finish(&ctx); }