+static enum mandoclevel
+passthrough(const char *file)
+{
+ char buf[BUFSIZ];
+ const char *syscall;
+ ssize_t nr, nw, off;
+ int fd;
+
+ fd = open(file, O_RDONLY);
+ if (fd == -1) {
+ syscall = "open";
+ goto fail;
+ }
+
+ while ((nr = read(fd, buf, BUFSIZ)) != -1 && nr != 0)
+ for (off = 0; off < nr; off += nw)
+ if ((nw = write(STDOUT_FILENO, buf + off,
+ (size_t)(nr - off))) == -1 || nw == 0) {
+ syscall = "write";
+ goto fail;
+ }
+
+ if (nr == 0) {
+ close(fd);
+ return(MANDOCLEVEL_OK);
+ }
+
+ syscall = "read";
+fail:
+ fprintf(stderr, "%s: %s: SYSERR: %s: %s",
+ progname, file, syscall, strerror(errno));
+ return(MANDOCLEVEL_SYSERR);
+}
+