fix: restore ioctl block in simple.lisp (was lost in edit)
This commit is contained in:
@@ -40,9 +40,22 @@
|
|||||||
(values a nil)))))))
|
(values a nil)))))))
|
||||||
(when (and cols rows (> cols 0) (> rows 0))
|
(when (and cols rows (> cols 0) (> rows 0))
|
||||||
(values cols rows)))
|
(values cols rows)))
|
||||||
|
;; ioctl on stdout fd — fast, correct after SIGWINCH at runtime.
|
||||||
(multiple-value-bind (cols rows)
|
(multiple-value-bind (cols rows)
|
||||||
(when (and rows cols (> rows 0) (> cols 0))
|
(ignore-errors
|
||||||
(values cols rows))))))
|
(let* ((+tiocgwinsz+ 21523)
|
||||||
|
(winsize (sb-alien:make-alien sb-alien:unsigned-short 4)))
|
||||||
|
(unwind-protect
|
||||||
|
(progn
|
||||||
|
(sb-unix:unix-ioctl (sb-sys:fd-stream-fd
|
||||||
|
(backend-output-stream b))
|
||||||
|
+tiocgwinsz+
|
||||||
|
(sb-alien:alien-sap winsize))
|
||||||
|
(values (sb-alien:deref winsize 1)
|
||||||
|
(sb-alien:deref winsize 0)))
|
||||||
|
(sb-alien:free-alien winsize))))
|
||||||
|
(when (and cols rows (> cols 0) (> rows 0))
|
||||||
|
(values cols rows)))
|
||||||
(ignore-errors
|
(ignore-errors
|
||||||
(let ((tty-fd (sb-unix:unix-open "/dev/tty" 0 0))) ; O_RDONLY
|
(let ((tty-fd (sb-unix:unix-open "/dev/tty" 0 0))) ; O_RDONLY
|
||||||
(when (and tty-fd (numberp tty-fd) (> tty-fd 0))
|
(when (and tty-fd (numberp tty-fd) (> tty-fd 0))
|
||||||
|
|||||||
Reference in New Issue
Block a user