source:  <http://www.zipworld.com.au/~akpm/linux/#zc>

--- zc/zcs.c.orig	2001-12-11 09:00:07.000000000 -0800
+++ zc/zcs.c	2004-04-07 05:35:53.000000000 -0700
@@ -94,7 +94,14 @@
 		if (chunk > buflen)
 			chunk = buflen;
 		
+#if 0
 		ret = read(fd, buf, chunk);
+#else 
+#ifndef MSG_TRUNC
+#define MSG_TRUNC (0x20)
+#endif
+		ret = recv(fd, buf, chunk, MSG_TRUNC);
+#endif
 		if (debug > 1 && ret != chunk) {
 			printf("bigread: tried to read %lu, got %d instead\n", chunk, ret);
 		}
