]> granicus.if.org Git - neomutt/commitdiff
use EmailList for piping and printing messages
authorRichard Russon <rich@flatcap.org>
Fri, 1 Mar 2019 12:39:15 +0000 (12:39 +0000)
committerRichard Russon <rich@flatcap.org>
Fri, 1 Mar 2019 12:39:19 +0000 (12:39 +0000)
commands.h
index.c
pager.c

index 9013ff72c516421aac11ee172fe2f1990d82275e..23182a791ff781be889a111cf9526af916675d4c 100644 (file)
@@ -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 8cff83246e34f39ac30f328c60aa95c2e1ff9b9b..400ef8cb0382d8d2c658b1eaf72db70dac819b3e 100644 (file)
--- 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 a5ba3038a19bba5cf8dbce0df22c44c62c77b376..aabc05925f00540024e2743488ec4ef24ab5869c 100644 (file)
--- 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: