emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/eshell esh-proc.el


From: Glenn Morris
Subject: [Emacs-diffs] emacs/lisp/eshell esh-proc.el
Date: Sun, 23 Nov 2008 03:05:33 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       08/11/23 03:05:33

Modified files:
        lisp/eshell    : esh-proc.el 

Log message:
        (eshell-gather-process-output):
        Set process-connection-type nil for all but the first element of a
        pipeline.  (Bug#1388)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/eshell/esh-proc.el?cvsroot=emacs&r1=1.21&r2=1.22

Patches:
Index: esh-proc.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/eshell/esh-proc.el,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- esh-proc.el 6 May 2008 03:36:20 -0000       1.21
+++ esh-proc.el 23 Nov 2008 03:05:29 -0000      1.22
@@ -250,11 +250,27 @@
     (cond
      ((fboundp 'start-process)
       (setq proc
+           ;; 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)))
+                    ;; `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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]