(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))