1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-13 23:20:32 +02:00

* tests/ports.test (non-blocking-I/O): a couple more details:

a) combine the O_NONBLOCK flag with the default flags instead
	of replacing them.  b) check EWOULDBLOCK as well as EAGAIN.
This commit is contained in:
Gary Houston 2000-03-31 19:23:52 +00:00
parent cffcab3013
commit 8cc58ec1cc

View file

@ -195,18 +195,20 @@
(string=? (read-line) "moon")))))
;;; non-blocking mode on a port. create a pipe and set O_NONBLOCK on
;;; the reading end. try to read a byte: should get EAGAIN error.
;;; the reading end. try to read a byte: should get EAGAIN or
;;; EWOULDBLOCK error.
(catch-test-errors
(let* ((p (pipe))
(r (car p)))
(fcntl r F_SETFL O_NONBLOCK)
(fcntl r F_SETFL (logior (fcntl r F_GETFL) O_NONBLOCK))
(pass-if "non-blocking-I/O"
(catch 'system-error
(lambda () (read-char r) #f)
(lambda (key . args)
(and (eq? key 'system-error)
(= (car (list-ref args 3)) EAGAIN)))))))
(let ((errno (car (list-ref args 3))))
(or (= errno EAGAIN)
(= errno EWOULDBLOCK)))))))))
;;;; Pipe (popen) ports.