From: Brendan Cully Date: Mon, 1 Aug 2005 16:38:00 +0000 (+0000) Subject: Report errors occuring in _mutt_save_message. (closes #847) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52749c2060b200524503cc1a73ed17e642b2090a;p=neomutt Report errors occuring in _mutt_save_message. (closes #847) --- diff --git a/commands.c b/commands.c index 7766bf390..db28ff47f 100644 --- a/commands.c +++ b/commands.c @@ -670,21 +670,27 @@ static void set_copy_flags (HEADER *hdr, int decode, int decrypt, int *cmflags, } } -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 */ @@ -805,7 +811,13 @@ int mutt_save_message (HEADER *h, int delete, 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++) @@ -813,8 +825,12 @@ int mutt_save_message (HEADER *h, int delete, 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; + } } } } diff --git a/protos.h b/protos.h index 9826e0b42..ec006da60 100644 --- a/protos.h +++ b/protos.h @@ -339,7 +339,7 @@ int mutt_print_attachment (FILE *, BODY *); 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 *);