Forgot to check in xfdopen(). My bad.

Failure of fdopen() is most likely failure of malloc() for the FILE structure.
diff --git a/lib/xwrap.c b/lib/xwrap.c
index adf3e75..9f1dc99 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -172,6 +172,15 @@
   return fd;
 }
 
+FILE *xfdopen(int fd, char *mode)
+{
+  FILE *f = fdopen(fd, mode);
+
+  if (!f) perror_exit("xfdopen");
+
+  return f;
+}
+
 // Die unless we can open/create a file, returning FILE *.
 FILE *xfopen(char *path, char *mode)
 {