src__lib__libast__features__lib.diff   [plain text]


--- src/lib/libast/features/lib.orig	2004-12-02 16:13:10.000000000 -0500
+++ src/lib/libast/features/lib	2005-05-25 22:16:41.000000000 -0400
@@ -327,6 +328,7 @@
 		int		i;
 		int		fds[2];
 		char		buf[128];
+		struct	pollfd pfd;
 
 		static char	msg[] = "abcd";
 
@@ -344,6 +346,18 @@
 		for (i = 0; i < sizeof(msg); i++)
 			if (buf[i] != msg[i])
 				return 1;
+
+		if (pipe(fds) < 0)
+			return 1;
+		if (write(fds[1], msg, sizeof(msg)) != sizeof(msg))
+				return 1;
+		if (recv(fds[0], buf, sizeof(buf), MSG_PEEK) != sizeof(msg))
+			return 1;
+		pfd.fd = fds[0];
+		pfd.events = POLLIN;
+		if (poll(&pfd, 1, 0) != 1 || pfd.revents != POLLIN)
+			return 1;
+
 		return 0;
 	}
 }end