diff options
| author | Drew DeVault <sir@cmpwn.com> | 2019-05-26 11:18:51 -0400 | 
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2019-05-26 11:18:51 -0400 | 
| commit | 3cf6c82633fb153663e7927e20818f355d949a89 (patch) | |
| tree | 8d7e429ddbd3cc74d18cf1c4762085aee88ac69e | |
| parent | d30a6e3d1f1cf035d018ec27145ef57c4ce41606 (diff) | |
msgviewer: copy stderr into pager
This prevents a broken filter config from being a silent error
| -rw-r--r-- | widgets/msgviewer.go | 18 | 
1 files changed, 17 insertions, 1 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 39ee637..e0fe6aa 100644 --- 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() {  | 
