}
}
-void _mutt_save_message (HEADER *h, CONTEXT *ctx, int delete, int decode, int decrypt)
+int _mutt_save_message (HEADER *h, CONTEXT *ctx, int delete, int decode, int decrypt)
{
int cmflags, chflags;
+ int rc;
set_copy_flags (h, decode, decrypt, &cmflags, &chflags);
if (decode || decrypt)
mutt_parse_mime_message (Context, h);
- if (mutt_append_message (ctx, Context, h, cmflags, chflags) == 0 && delete)
+ if ((rc = mutt_append_message (ctx, Context, h, cmflags, chflags)) != 0)
+ return rc;
+
+ if (delete)
{
mutt_set_flag (Context, h, M_DELETE, 1);
if (option (OPTDELETEUNTAG))
mutt_set_flag (Context, h, M_TAG, 0);
}
+
+ return 0;
}
/* returns 0 if the copy/save was successful, or -1 on error/abort */
if (mx_open_mailbox (buf, M_APPEND, &ctx) != NULL)
{
if (h)
- _mutt_save_message(h, &ctx, delete, decode, decrypt);
+ {
+ if (_mutt_save_message(h, &ctx, delete, decode, decrypt) != 0)
+ {
+ mx_close_mailbox (&ctx, NULL);
+ return -1;
+ }
+ }
else
{
for (i = 0; i < Context->vcount; i++)
if (Context->hdrs[Context->v2r[i]]->tagged)
{
mutt_message_hook (Context, Context->hdrs[Context->v2r[i]], M_MESSAGEHOOK);
- _mutt_save_message(Context->hdrs[Context->v2r[i]],
- &ctx, delete, decode, decrypt);
+ if (_mutt_save_message(Context->hdrs[Context->v2r[i]],
+ &ctx, delete, decode, decrypt) != 0)
+ {
+ mx_close_mailbox (&ctx, NULL);
+ return -1;
+ }
}
}
}
int mutt_query_complete (char *, size_t);
int mutt_query_variables (LIST *queries);
int mutt_save_attachment (FILE *, BODY *, char *, int, HEADER *);
-void _mutt_save_message (HEADER *, CONTEXT *, int, int, int);
+int _mutt_save_message (HEADER *, CONTEXT *, int, int, int);
int mutt_save_message (HEADER *, int, int, int, int *);
int mutt_search_command (int, int);
int mutt_strwidth (const char *);