syscalls: 'terminal-columns' ignores non-file ports.
* guix/build/syscalls.scm (terminal-columns): Call 'terminal-window-size' only when PORT is a file port. * tests/syscalls.scm ("terminal-columns non-file port"): New test.
This commit is contained in:
parent
9f088725c0
commit
6d2b43915f
|
@ -915,10 +915,12 @@ always a positive integer."
|
||||||
|
|
||||||
(catch 'system-error
|
(catch 'system-error
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
(if (file-port? port)
|
||||||
(match (window-size-columns (terminal-window-size port))
|
(match (window-size-columns (terminal-window-size port))
|
||||||
;; Things like Emacs shell-mode return 0, which is unreasonable.
|
;; Things like Emacs shell-mode return 0, which is unreasonable.
|
||||||
(0 (fall-back))
|
(0 (fall-back))
|
||||||
((? number? columns) columns)))
|
((? number? columns) columns))
|
||||||
|
(fall-back)))
|
||||||
(lambda args
|
(lambda args
|
||||||
(let ((errno (system-error-errno args)))
|
(let ((errno (system-error-errno args)))
|
||||||
(if (= errno ENOTTY)
|
(if (= errno ENOTTY)
|
||||||
|
|
|
@ -257,4 +257,8 @@
|
||||||
(test-assert "terminal-columns"
|
(test-assert "terminal-columns"
|
||||||
(> (terminal-columns) 0))
|
(> (terminal-columns) 0))
|
||||||
|
|
||||||
|
(test-assert "terminal-columns non-file port"
|
||||||
|
(> (terminal-columns (open-input-string "Join us now, share the software!"))
|
||||||
|
0))
|
||||||
|
|
||||||
(test-end)
|
(test-end)
|
||||||
|
|
Loading…
Reference in New Issue