-/* $Id: main.c,v 1.126 2010/12/29 01:16:57 kristaps Exp $ */
+/* $Id: main.c,v 1.133 2011/01/03 23:53:51 schwarze Exp $ */
/*
- * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
/* related to missing macro arguments */
"skipping empty macro",
+ "argument count wrong",
"missing display type",
"list type must come first",
"tag lists require a width argument",
"bad comment style",
"unknown escape sequence",
"unterminated quoted string",
+
+ /* related to tables */
+ "extra data cells",
"generic error",
+ /* related to tables */
"bad table syntax",
"bad table option",
+ "bad table layout",
+ "no table layout cells specified",
+ "no table data cells specified",
"input stack limit exceeded, infinite loop?",
"skipping bad character",
"skipping text before the first section header",
}
assert(curp->roff);
- if ( ! roff_endparse(curp->roff)) {
- assert(MANDOCLEVEL_FATAL <= file_status);
- goto cleanup;
- }
+ roff_endparse(curp->roff);
/*
* With -Wstop and warnings or errors of at least
continue;
} else
break;
- case (ROFF_CONT):
+ default:
break;
}
+ /*
+ * If we encounter errors in the recursive parsebuf()
+ * call, make sure we don't continue parsing.
+ */
+
+ if (MANDOCLEVEL_FATAL <= file_status)
+ break;
+
/*
* If input parsers have not been allocated, do so now.
* We keep these instanced betwen parsers, but set them
* Lastly, push down into the parsers themselves. One
* of these will have already been set in the pset()
* routine.
+ * If libroff returns ROFF_TBL, then add it to the
+ * currently open parse. Since we only get here if
+ * there does exist data (see tbl_data.c), we're
+ * guaranteed that something's been allocated.
*/
- if (curp->man || curp->mdoc) {
+ if (ROFF_TBL == rr) {
+ assert(curp->man || curp->mdoc);
+ if (curp->man)
+ man_addspan(curp->man, roff_span(curp->roff));
+ else
+ mdoc_addspan(curp->mdoc, roff_span(curp->roff));
+
+ } else if (curp->man || curp->mdoc) {
rc = curp->man ?
man_parseln(curp->man,
curp->line, ln.buf, of) :