[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/04: linux-container: Do not rely on 'isatty?'.
From: |
Ludovic Courtès |
Subject: |
01/04: linux-container: Do not rely on 'isatty?'. |
Date: |
Mon, 6 Feb 2017 09:51:52 +0000 (UTC) |
civodul pushed a commit to branch master
in repository guix.
commit 168aba297866295d96779239e9662821ce9e66ae
Author: Ludovic Courtès <address@hidden>
Date: Sat Feb 4 18:10:14 2017 +0100
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'.
---
gnu/build/linux-container.scm | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index b71d6a5..cd71239 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -128,13 +128,19 @@ for the process."
"/dev/fuse"))
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
- ;; associated with standard input.
- (let ((in (current-input-port))
- (console (scope "/dev/console")))
- (when (isatty? in)
+ ;; associated with standard input when there is one.
+ (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")))
+ (when tty
(touch console)
(chmod console #o600)
- (bind-mount (ttyname in) console)))
+ (bind-mount tty console)))
;; Setup standard input/output/error.
(symlink "/proc/self/fd" (scope "/dev/fd"))