Drawing progress leaves terminal in confusing state when piping a message
from pager to less(1). See http://bugs.mutt.org/1771
+Updated in #569279.
+
--- a/imap/message.c
+++ b/imap/message.c
-@@ -489,8 +489,9 @@
+@@ -398,7 +398,7 @@
+ char path[_POSIX_PATH_MAX];
+ char *pc;
+ long bytes;
+- progress_t progressbar;
++ progress_t progressbar, *pbar;
+ int uid;
+ int cacheno;
+ IMAP_CACHE *cache;
+@@ -495,9 +495,15 @@
imap_error ("imap_fetch_message()", buf);
goto bail;
}
- mutt_progress_init (&progressbar, _("Fetching message..."),
- M_PROGRESS_SIZE, NetInc, bytes);
-+ if (!isendwin())
+- if (imap_read_literal (msg->fp, idata, bytes, &progressbar) < 0)
++ if (!isendwin())
++ {
+ mutt_progress_init (&progressbar, _("Fetching message..."),
+ M_PROGRESS_SIZE, NetInc, bytes);
- if (imap_read_literal (msg->fp, idata, bytes, &progressbar) < 0)
++ pbar = &progressbar;
++ }
++ else
++ pbar = NULL;
++ if (imap_read_literal (msg->fp, idata, bytes, pbar) < 0)
goto bail;
/* pick up trailing line */
+ if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)