linux-container: Do not rely on 'isatty?'.
This avoids problems where 'isatty?' return #t but 'ttyname' fails with ENOTTY or such. * gnu/build/linux-container.scm (mount-file-systems): Remove call of 'isatty?'. Directly call 'ttyname' and catch 'system-error'.master
parent
e69dc54559
commit
168aba2978
|
@ -128,13 +128,19 @@ for the process."
|
||||||
"/dev/fuse"))
|
"/dev/fuse"))
|
||||||
|
|
||||||
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
|
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
|
||||||
;; associated with standard input.
|
;; associated with standard input when there is one.
|
||||||
(let ((in (current-input-port))
|
(let* ((in (current-input-port))
|
||||||
|
(tty (catch 'system-error
|
||||||
|
(lambda ()
|
||||||
|
;; This call throws if IN does not correspond to a tty.
|
||||||
|
;; This is more reliable than 'isatty?'.
|
||||||
|
(ttyname in))
|
||||||
|
(const #f)))
|
||||||
(console (scope "/dev/console")))
|
(console (scope "/dev/console")))
|
||||||
(when (isatty? in)
|
(when tty
|
||||||
(touch console)
|
(touch console)
|
||||||
(chmod console #o600)
|
(chmod console #o600)
|
||||||
(bind-mount (ttyname in) console)))
|
(bind-mount tty console)))
|
||||||
|
|
||||||
;; Setup standard input/output/error.
|
;; Setup standard input/output/error.
|
||||||
(symlink "/proc/self/fd" (scope "/dev/fd"))
|
(symlink "/proc/self/fd" (scope "/dev/fd"))
|
||||||
|
|
Reference in New Issue