+ /*
+ * Called once per file with an opened file descriptor. All
+ * pre-file-parse operations (whether stdin or a file) should go
+ * here.
+ *
+ * This calls down into the nested parser, which drills down and
+ * fully parses a file and all its dependences (i.e., `so'). It
+ * then runs the cleanup validators and pushes to output.
+ */
+
+ /* Zero the parse type. */
+
+ curp->mdoc = NULL;
+ curp->man = NULL;
+
+ /* Make sure the mandotory roff parser is initialised. */
+
+ if (NULL == curp->roff) {
+ curp->roff = roff_alloc(&curp->regs, curp, mmsg);
+ assert(curp->roff);
+ }
+
+ /* Fully parse the file. */