xopen() wants 2 arguments unless you're creating a file, in which case you
need 3.  Doing varargs for this doesn't really appeal to me (bugs in waiting)
so I made an xcreate() that takes 3 args, and had xopen() call it with 0 for
the third argument.  That way, if we feed O_CREAT to xopen() the permission
000 result should be easy to spot.
diff --git a/lib/lib.h b/lib/lib.h
index 6a398c1..cb14027 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -38,7 +38,8 @@
 void *xstrdup(char *s);
 char *xmsprintf(char *format, ...);
 void xexec(char **argv);
-int xopen(char *path, int flags, int mode);
+int xcreate(char *path, int flags, int mode);
+int xopen(char *path, int flags);
 FILE *xfopen(char *path, char *mode);
 ssize_t reread(int fd, void *buf, size_t count);
 ssize_t readall(int fd, void *buf, size_t count);
@@ -63,3 +64,4 @@
 
 struct mtab_list *getmountlist(int die);
 
+char *bunzipStream(int src_fd, int dst_fd);