From: Sam S. <sd...@gn...> - 2002-05-26 21:15:46
|
all interested parties please try the appended patch. I tested it only on linux, so I am especially interested in what other platform users think. Specifically win32: what's the MS-way to do ioctl/FIONBIO? basically, I added the :timeout keyword arg to SOCKET-ACCEPT and SOCKET-CONNECT so that (socket-accept s :timeout x) == (if (socket-wait s x) (socket-accept s) (error 'timeout)) and similarly for SOCKET-CONNECT. Todd, this is not what you want, I know, you prefer the UNIX way of returning NIL instead of signaling an error. The lisp way (as I understand it) is to return a valid object or to signal an error. You can get the behavior you want using IGNORE-ERRORS, while a careless user might get stuck with SOCKET-CONNECT returning NIL here: (let ((s (socket-connect 80 "www.foo.com" :timeout 1))) (format s "GET /~2%") (read-all s)) if S is NIL, format will succeed, while READ-ALL will probably block trying to read from *STANDARD-INPUT*. -- Sam Steingold (http://www.podval.org/~sds) running RedHat7.2 GNU/Linux <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.palestine-central.com/links.html> Live free or die. |