aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/eshell
diff options
context:
space:
mode:
authorGlenn Morris <[email protected]>2008-11-23 03:05:51 +0000
committerGlenn Morris <[email protected]>2008-11-23 03:05:51 +0000
commit403e4dc9896abde019ebb48c0303de5c9e1c44e6 (patch)
tree80f8afde5dc208d4b05a21442084e8c34c48d906 /lisp/eshell
parent5101a9dc47c9dfbe0326c4f6501139b514261b42 (diff)
(eshell-gather-process-output):
Set process-connection-type nil for all but the first element of a pipeline. (Bug#1388)
Diffstat (limited to 'lisp/eshell')
-rw-r--r--lisp/eshell/esh-proc.el26
1 files changed, 21 insertions, 5 deletions
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index 25d9dd6466..39fea83cd8 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -250,11 +250,27 @@ Used only on systems which do not support async subprocesses.")
(cond
((fboundp 'start-process)
(setq proc
- (apply 'start-process
- (file-name-nondirectory command) nil
- ;; `start-process' can't deal with relative
- ;; filenames
- (append (list (expand-file-name command)) args)))
+ ;; Bug#1388. Some commands (eg bc) check isatty to decide
+ ;; whether they are being called interactively.
+ ;; A normal shell pipeline has:
+ ;; first: stdin tty , stdout pipe
+ ;; rest : stdin pipe, stdout pipe
+ ;; last : stdin pipe, stdout tty
+ ;; We have:
+ ;; first: stdin tty , stdout tty
+ ;; last : stdin pipe, stdout pipe
+ ;; In other words, the first and last elements have the
+ ;; wrong kind of stdout. (Perhaps this does not matter much...)
+ ;; FIXME which is better for the first element:
+ ;; tty/tty (as now), or pipe/pipe?
+ (let ((process-connection-type
+ (unless (and eshell-in-pipeline-p
+ (not (eq eshell-in-pipeline-p 'first)))
+ process-connection-type)))
+ (apply 'start-process
+ (file-name-nondirectory command) nil
+ ;; `start-process' can't deal with relative filenames
+ (append (list (expand-file-name command)) args))))
(eshell-record-process-object proc)
(set-process-buffer proc (current-buffer))
(if (eshell-interactive-output-p)