From ce7af16b13c417fe4b56f31b23fbb8f7d6e80a56 Mon Sep 17 00:00:00 2001 From: Amr Gharbeia Date: Thu, 14 May 2026 14:25:23 -0400 Subject: [PATCH] fix: restore ioctl block in simple.lisp (was lost in edit) --- src/backend/simple.lisp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/backend/simple.lisp b/src/backend/simple.lisp index 82f1697..d0a64a6 100644 --- a/src/backend/simple.lisp +++ b/src/backend/simple.lisp @@ -40,9 +40,22 @@ (values a nil))))))) (when (and cols rows (> cols 0) (> rows 0)) (values cols rows))) + ;; ioctl on stdout fd — fast, correct after SIGWINCH at runtime. (multiple-value-bind (cols rows) - (when (and rows cols (> rows 0) (> cols 0)) - (values cols rows)))))) + (ignore-errors + (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 (let ((tty-fd (sb-unix:unix-open "/dev/tty" 0 0))) ; O_RDONLY (when (and tty-fd (numberp tty-fd) (> tty-fd 0))