xreadall() returns void... how does that even compile?
diff --git a/lib/lib.c b/lib/lib.c
index 08c991d..0cef3af 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -570,7 +570,7 @@
 	if (fd == -1) return 0;
 	len = fdlength(fd);
 	buf = xmalloc(len+1);
-	buf[xreadall(fd, buf, len)] = 0;
+	buf[readall(fd, buf, len)] = 0;
 
 	return buf;
 }