diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index ed833c10b2..5ce0abbb48 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -915,10 +915,12 @@ always a positive integer." (catch 'system-error (lambda () - (match (window-size-columns (terminal-window-size port)) - ;; Things like Emacs shell-mode return 0, which is unreasonable. - (0 (fall-back)) - ((? number? columns) columns))) + (if (file-port? port) + (match (window-size-columns (terminal-window-size port)) + ;; Things like Emacs shell-mode return 0, which is unreasonable. + (0 (fall-back)) + ((? number? columns) columns)) + (fall-back))) (lambda args (let ((errno (system-error-errno args))) (if (= errno ENOTTY) diff --git a/tests/syscalls.scm b/tests/syscalls.scm index 1b443be0c8..24ea8f5e60 100644 --- a/tests/syscalls.scm +++ b/tests/syscalls.scm @@ -257,4 +257,8 @@ (test-assert "terminal-columns" (> (terminal-columns) 0)) +(test-assert "terminal-columns non-file port" + (> (terminal-columns (open-input-string "Join us now, share the software!")) + 0)) + (test-end)