~ruther/guix-local

6d2b43915f8a628588f03136b3008902f7643e06 — Ludovic Courtès 10 years ago 9f08872
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.
2 files changed, 10 insertions(+), 4 deletions(-)

M guix/build/syscalls.scm
M tests/syscalls.scm
M guix/build/syscalls.scm => guix/build/syscalls.scm +6 -4
@@ 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)

M tests/syscalls.scm => tests/syscalls.scm +4 -0
@@ 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)