aerc

Working clone of aerc-mail.org
git clone git://git.danielmoch.com/aerc.git
Log | Files | Refs | README | LICENSE

commit 3cf6c82633fb153663e7927e20818f355d949a89
parent d30a6e3d1f1cf035d018ec27145ef57c4ce41606
Author: Drew DeVault <sir@cmpwn.com>
Date:   Sun, 26 May 2019 11:18:51 -0400

msgviewer: copy stderr into pager

This prevents a broken filter config from being a silent error

Diffstat:
Mwidgets/msgviewer.go | 18+++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go @@ -386,15 +386,31 @@ func (pv *PartViewer) attemptCopy() { header.SetText("Content-Description", pv.part.Description) if pv.filter != nil { stdout, _ := pv.filter.StdoutPipe() + stderr, _ := pv.filter.StderrPipe() pv.filter.Start() + ch := make(chan interface{}) go func() { _, err := io.Copy(pv.pagerin, stdout) if err != nil { pv.err = err pv.Invalidate() } - pv.pagerin.Close() stdout.Close() + ch <- nil + }() + go func() { + _, err := io.Copy(pv.pagerin, stderr) + if err != nil { + pv.err = err + pv.Invalidate() + } + stderr.Close() + ch <- nil + }() + go func() { + <-ch + <-ch + pv.pagerin.Close() }() } go func() {