From becc5cc0056a250f2600aa16501b96b70289752c Mon Sep 17 00:00:00 2001 From: Richard Russon Date: Fri, 1 Mar 2019 12:39:15 +0000 Subject: [PATCH] use EmailList for piping and printing messages --- commands.h | 4 ++-- index.c | 16 ++++++++++++---- pager.c | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/commands.h b/commands.h index 9013ff72c..23182a791 100644 --- a/commands.h +++ b/commands.h @@ -49,8 +49,8 @@ void mutt_display_address(struct Envelope *env); int mutt_display_message(struct Email *cur); int mutt_edit_content_type(struct Email *e, struct Body *b, FILE *fp); void mutt_enter_command(void); -void mutt_pipe_message(struct Mailbox *m, struct Email *e); -void mutt_print_message(struct Mailbox *m, struct Email *e); +void mutt_pipe_message(struct Mailbox *m, struct EmailList *el); +void mutt_print_message(struct Mailbox *m, struct EmailList *el); int mutt_save_message_ctx(struct Email *e, bool delete, bool decode, bool decrypt, struct Mailbox *m); int mutt_save_message(struct Mailbox *m, struct EmailList *el, bool delete, bool decode, bool decrypt); int mutt_select_sort(int reverse); diff --git a/index.c b/index.c index 8cff83246..400ef8cb0 100644 --- a/index.c +++ b/index.c @@ -3254,9 +3254,13 @@ int mutt_index_menu(void) } case OP_PIPE: + { if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE)) break; - mutt_pipe_message(Context->mailbox, tag ? NULL : CUR_EMAIL); + struct EmailList el = STAILQ_HEAD_INITIALIZER(el); + el_add_tagged(&el, Context, CUR_EMAIL, tag); + mutt_pipe_message(Context->mailbox, &el); + el_free(&el); #ifdef USE_IMAP /* in an IMAP folder index with imap_peek=no, piping could change @@ -3267,13 +3271,17 @@ int mutt_index_menu(void) menu->redraw |= (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS; } #endif - break; + } case OP_PRINT: + { if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE)) break; - mutt_print_message(Context->mailbox, tag ? NULL : CUR_EMAIL); + struct EmailList el = STAILQ_HEAD_INITIALIZER(el); + el_add_tagged(&el, Context, CUR_EMAIL, tag); + mutt_print_message(Context->mailbox, &el); + el_free(&el); #ifdef USE_IMAP /* in an IMAP folder index with imap_peek=no, printing could change @@ -3284,8 +3292,8 @@ int mutt_index_menu(void) menu->redraw |= (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS; } #endif - break; + } case OP_MAIN_READ_THREAD: case OP_MAIN_READ_SUBTHREAD: diff --git a/pager.c b/pager.c index a5ba3038a..aabc05925 100644 --- a/pager.c +++ b/pager.c @@ -3128,7 +3128,12 @@ int mutt_pager(const char *banner, const char *fname, int flags, struct Pager *e if (IsAttach(extra)) mutt_pipe_attachment_list(extra->actx, extra->fp, false, extra->body, false); else - mutt_pipe_message(Context->mailbox, extra->email); + { + struct EmailList el = STAILQ_HEAD_INITIALIZER(el); + el_add_tagged(&el, extra->ctx, extra->email, false); + mutt_pipe_message(extra->ctx->mailbox, &el); + el_free(&el); + } break; case OP_PRINT: @@ -3136,7 +3141,12 @@ int mutt_pager(const char *banner, const char *fname, int flags, struct Pager *e if (IsAttach(extra)) mutt_print_attachment_list(extra->actx, extra->fp, false, extra->body); else - mutt_print_message(Context->mailbox, extra->email); + { + struct EmailList el = STAILQ_HEAD_INITIALIZER(el); + el_add_tagged(&el, extra->ctx, extra->email, false); + mutt_print_message(extra->ctx->mailbox, &el); + el_free(&el); + } break; case OP_MAIL: -- 2.50.0