-/* $Id: read.c,v 1.181 2017/06/24 18:58:33 schwarze Exp $ */
+/* $Id: read.c,v 1.191 2017/07/08 17:52:50 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
#include "mdoc.h"
#include "man.h"
#include "libmandoc.h"
-#include "roff_int.h"
#define REPARSE_LIMIT 1000
static const enum mandocerr mandoclimits[MANDOCLEVEL_MAX] = {
MANDOCERR_OK,
- MANDOCERR_STYLE,
+ MANDOCERR_OK,
MANDOCERR_WARNING,
MANDOCERR_ERROR,
MANDOCERR_UNSUPP,
"unknown architecture",
"operating system explicitly specified",
"RCS id missing",
+ "referenced manual not found",
"generic style suggestion",
"legacy man(7) date format",
+ "lower case character in document title",
"duplicate RCS id",
+ "typo in section name",
+ "unterminated quoted argument",
"useless macro",
"consider using OS macro",
"errnos out of order",
"duplicate errno",
- "description line ends with a full stop",
+ "trailing delimiter",
"no blank before trailing delimiter",
+ "fill mode already enabled, skipping",
+ "fill mode already disabled, skipping",
"function name without markup",
+ "whitespace at end of input line",
+ "bad comment style",
"generic warning",
/* related to the prologue */
"missing manual title, using UNTITLED",
"missing manual title, using \"\"",
- "lower case character in document title",
"missing manual section, using \"\"",
"unknown manual section",
"missing date, using today's date",
"cannot parse date, using it verbatim",
+ "date in the future, using it anyway",
"missing Os macro, using \"\"",
- "duplicate prologue macro",
"late prologue macro",
- "skipping late title macro",
"prologue macros out of order",
/* related to document structure */
"sections out of conventional order",
"duplicate section title",
"unexpected section",
+ "cross reference to self",
"unusual Xr order",
"unusual Xr punctuation",
"AUTHORS section without An macro",
"blocks badly nested",
"nested displays are not portable",
"moving content out of list",
- "fill mode already enabled, skipping",
- "fill mode already disabled, skipping",
+ "first macro on line",
"line scope broken",
"skipping blank line in line scope",
"missing function name, using \"\"",
"empty head in list item",
"empty list item",
+ "missing argument, using next line",
"missing font type, using \\fR",
"unknown font type, using \\fR",
"nothing follows prefix",
"missing eqn box, using \"\"",
/* related to bad macro arguments */
- "unterminated quoted argument",
"duplicate argument",
"skipping duplicate argument",
"skipping duplicate display type",
/* related to plain text */
"blank line in fill mode, using .sp",
"tab in filled text",
- "whitespace at end of input line",
"new sentence, new line",
- "bad comment style",
"invalid escape sequence",
"undefined string, using \"\"",
/* related to document structure and macros */
NULL,
+ "duplicate prologue macro",
+ "skipping late title macro",
"input stack limit exceeded, infinite loop?",
"skipping bad character",
"skipping unknown macro",
static int
mparse_buf_r(struct mparse *curp, struct buf blk, size_t i, int start)
{
- const struct tbl_span *span;
struct buf ln;
const char *save_file;
char *cp;
if (curp->man->macroset == MACROSET_NONE)
choose_parser(curp);
- /*
- * Lastly, push down into the parsers themselves.
- * 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.
- * Do the same for ROFF_EQN.
- */
-
- if (rr == ROFF_TBL)
- while ((span = roff_span(curp->roff)) != NULL)
- roff_addtbl(curp->man, span);
- else if (rr == ROFF_EQN)
- roff_addeqn(curp->man, roff_eqn(curp->roff));
- else if ((curp->man->macroset == MACROSET_MDOC ?
+ if ((curp->man->macroset == MACROSET_MDOC ?
mdoc_parseln(curp->man, curp->line, ln.buf, of) :
man_parseln(curp->man, curp->line, ln.buf, of)) == 2)
break;