[usocket-cvs] r307 - usocket/trunk/backend

ehuelsmann at common-lisp.net ehuelsmann at common-lisp.net
Fri Feb 15 16:07:03 UTC 2008


Author: ehuelsmann
Date: Fri Feb 15 11:07:02 2008
New Revision: 307

Modified:
   usocket/trunk/backend/sbcl.lisp
Log:
sb-unix:fast-unix-select doesn't return multiple values; check 'get-errno' ourselves.

Modified: usocket/trunk/backend/sbcl.lisp
==============================================================================
--- usocket/trunk/backend/sbcl.lisp	(original)
+++ usocket/trunk/backend/sbcl.lisp	Fri Feb 15 11:07:02 2008
@@ -280,14 +280,13 @@
          (multiple-value-bind
              (secs musecs)
              (split-timeout (or timeout 1))
-           (multiple-value-bind
-               (count err)
-               (sb-unix:unix-fast-select
-                (1+ (reduce #'max (mapcar #'socket sockets)
-                            :key #'sb-bsd-sockets:socket-file-descriptor))
-                (sb-alien:addr rfds) nil nil
-                (when timeout secs) musecs)
-             (if (<= 0 count)
+           (let ((count
+		  (sb-unix:unix-fast-select
+		   (1+ (reduce #'max (mapcar #'socket sockets)
+			       :key #'sb-bsd-sockets:socket-file-descriptor))
+		   (sb-alien:addr rfds) nil nil
+		   (when timeout secs) musecs)))
+             (if (=> count 0)
                  ;; process the result...
                  (remove-if
                   #'(lambda (x)
@@ -295,7 +294,7 @@
                             (sb-bsd-sockets:socket-file-descriptor (socket x))
                             rfds)))
                   sockets)
-               (progn
+               (let ((err (sb-alien:get-errno)))
                  (unless (= err sb-unix:EINTR)
                    (error (map-errno-error err))))
                ;;###FIXME generate an error, except for EINTR



More information about the usocket-cvs mailing list