Index: /trunk/source/lib/macros.lisp
===================================================================
--- /trunk/source/lib/macros.lisp	(revision 8268)
+++ /trunk/source/lib/macros.lisp	(revision 8269)
@@ -3513,4 +3513,12 @@
 	  (return ,res))))))
 
+(defmacro ignoring-eintr (&body body)
+  (let* ((res (gensym))
+         (eintr (symbol-value (read-from-string "#$EINTR"))))
+    `(loop
+      (let* ((,res ,@body))
+        (unless (eql ,res (- ,eintr))
+          (return ,res))))))
+
 (defmacro basic-stream-ioblock (s)
   `(or (basic-stream.state ,s)
