$OpenBSD: patch-base_utils_c,v 1.6 2009/01/10 16:16:21 henning Exp $
--- base/utils.c.orig	Sun Nov 30 18:22:58 2008
+++ base/utils.c	Sat Jan 10 17:14:26 2009
@@ -610,8 +610,16 @@ int my_system(char *cmd,int timeout,int *early_timeout
 				/* handle errors */
 				if(bytes_read==-1){
 					/* we encountered a recoverable error, so try again */
-					if(errno==EINTR || errno==EAGAIN)
+					if(errno==EINTR)
 						continue;
+					else if (errno == EAGAIN) {
+						struct pollfd	pfd;
+
+						pfd.fd = fd[0];
+						pfd.events = POLLIN;
+						poll(&pfd, 1, -1);
+						continue;
+						}
 					else
 						break;
 					}
