Welcome to the CHICKEN Scheme pasting service
non-blocking read for threads added by damo on Fri Mar 28 09:00:13 2025
(define (non-blocking-read-line input-port)
(let ((posix-file-number (port->fileno input-port))
(return-value ""))
(when (file-select posix-file-number #f 1)
(do ((ch (car (file-read posix-file-number 1)) (car (file-read posix-file-number 1))))
((string= ch "\n"))
(set! return-value (string-append return-value ch))))
(if (not (string= return-value ""))
(set! return-value (string-append return-value "\n")))
return-value))