The branch "master" has been updated in SBCL:
via a799c7b28e3590a00b2d915035649fc9b8ac737b (commit)
from 6202d11d2e44916de589d493bbfe5a8e51e12346 (commit)
- Log -----------------------------------------------------------------
commit a799c7b28e3590a00b2d915035649fc9b8ac737b
Author: Stas Boukarev <stassats@...>
Date: Fri Jul 27 03:09:56 2012 +0400
run-program: Don't make pty the process's controlling terminal.
When called without an existing pty, for example in Slime, run-program
will make the created pty as the process's controlling.
(process-close (run-program "cat" () :pty t :search t :wait nil))
was terminated with SIGHUP when called under Slime.
---
NEWS | 2 ++
src/code/run-program.lisp | 12 ++++++++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/NEWS b/NEWS
index f9085fb..2791c82 100644
--- a/NEWS
+++ b/NEWS
@@ -46,6 +46,8 @@ changes relative to sbcl-1.0.57:
* bug fix: FORMAT used to loop infinitely in some cases when a COLINC
parameter was zero, now it signals an error. (lp#905817, fixed since
1.0.56.19)
+ * bug fix: run-program with :pty t no longer makes the pty as the process's
+ controling terminal.
changes in sbcl-1.0.57 relative to sbcl-1.0.56:
* RANDOM enhancements and bug fixes:
diff --git a/src/code/run-program.lisp b/src/code/run-program.lisp
index 3cc2e85..97d6d55 100644
--- a/src/code/run-program.lisp
+++ b/src/code/run-program.lisp
@@ -386,14 +386,16 @@ status slot."
;; First try to use the Unix98 pty api.
(let* ((master-name (coerce (format nil "/dev/ptmx") 'base-string))
(master-fd (sb-unix:unix-open master-name
- sb-unix:o_rdwr
+ (logior sb-unix:o_rdwr
+ sb-unix:o_noctty)
#o666)))
(when master-fd
(grantpt master-fd)
(unlockpt master-fd)
(let* ((slave-name (ptsname master-fd))
(slave-fd (sb-unix:unix-open slave-name
- sb-unix:o_rdwr
+ (logior sb-unix:o_rdwr
+ sb-unix:o_noctty)
#o666)))
(when slave-fd
(return-from find-a-pty
@@ -408,13 +410,15 @@ status slot."
(let* ((master-name (coerce (format nil "/dev/pty~C~X" char digit)
'base-string))
(master-fd (sb-unix:unix-open master-name
- sb-unix:o_rdwr
+ (logior sb-unix:o_rdwr
+ sb-unix:o_noctty)
#o666)))
(when master-fd
(let* ((slave-name (coerce (format nil "/dev/tty~C~X" char digit)
'base-string))
(slave-fd (sb-unix:unix-open slave-name
- sb-unix:o_rdwr
+ (logior sb-unix:o_rdwr
+ sb-unix:o_noctty)
#o666)))
(when slave-fd
(return-from find-a-pty
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL
|