=================================================================== RCS file: /cvs/mandoc/read.c,v retrieving revision 1.113 retrieving revision 1.129 diff -u -p -r1.113 -r1.129 --- mandoc/read.c 2015/01/22 19:26:50 1.113 +++ mandoc/read.c 2015/03/02 14:50:17 1.129 @@ -1,4 +1,4 @@ -/* $Id: read.c,v 1.113 2015/01/22 19:26:50 schwarze Exp $ */ +/* $Id: read.c,v 1.129 2015/03/02 14:50:17 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze @@ -109,7 +109,11 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "no document body", "content before first section header", "first section is not \"NAME\"", - "bad NAME section contents", + "NAME section without name", + "NAME section without description", + "description not at the end of NAME", + "bad NAME section content", + "missing description line, using \"\"", "sections out of conventional order", "duplicate section title", "unexpected section", @@ -135,18 +139,22 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "skipping empty request", "conditional request controls empty scope", "skipping empty macro", + "empty block", "empty argument, using 0n", - "argument count wrong", "missing display type, using -ragged", "list type is not the first argument", "missing -width in -tag list, using 8n", "missing utility name, using \"\"", + "missing function name, using \"\"", "empty head in list item", "empty list item", "missing font type, using \\fR", "unknown font type, using \\fR", "nothing follows prefix", + "empty reference block", "missing -std argument, adding it", + "missing option string, using \"\"", + "missing resource identifier, using \"\"", "missing eqn box, using \"\"", /* related to bad macro arguments */ @@ -156,12 +164,14 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "skipping duplicate display type", "skipping duplicate list type", "skipping -width argument", + "wrong number of cells", "unknown AT&T UNIX version", "comma in function argument", "parenthesis in function name", "invalid content in Rs block", "invalid Boolean argument", "unknown font, skipping request", + "odd number of characters in request", /* related to plain text */ "blank line in fill mode, using .sp", @@ -171,20 +181,25 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "invalid escape sequence", "undefined string, using \"\"", + /* related to tables */ + "tbl line starts with span", + "tbl column starts with span", + "skipping vertical bar in tbl layout", + "generic error", - /* related to equations */ - "unexpected equation scope closure", - "equation scope open on exit", - "overlapping equation scopes", - "unexpected end of equation", - /* related to tables */ - "no table layout cells specified", - "no table data cells specified", - "ignore data in cell", - "data block still open", - "ignoring extra data cells", + "non-alphabetic character in tbl options", + "skipping unknown tbl option", + "missing tbl option argument", + "wrong tbl option argument size", + "empty tbl layout", + "invalid character in tbl layout", + "unmatched parenthesis in tbl layout", + "tbl without any data cells", + "ignoring data in spanned tbl cell", + "ignoring extra tbl data cells", + "data block open at end of tbl", /* related to document structure and macros */ NULL, @@ -195,12 +210,12 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "skipping item outside list", "skipping column outside column list", "skipping end of block that is not open", + "fewer RS blocks open, skipping", "inserting missing end of block", "appending missing end of block", /* related to request and macro arguments */ "escaped character not allowed in a name", - "argument count wrong", "NOT IMPLEMENTED: Bd -file", "missing list type, using -item", "missing manual name, using \"\"", @@ -215,10 +230,10 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "unsupported feature", "input too large", + "unsupported control character", "unsupported roff request", - "unsupported table syntax", - "unsupported table option", - "unsupported table layout", + "eqn delim option in tbl", + "unsupported tbl layout modifier", "ignoring macro in table", }; @@ -369,9 +384,8 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size if (c & 0x80) { if ( ! (curp->filenc && preconv_encode( &blk, &i, &ln, &pos, &curp->filenc))) { - mandoc_vmsg(MANDOCERR_BADCHAR, - curp, curp->line, pos, - "0x%x", c); + mandoc_vmsg(MANDOCERR_CHAR_BAD, curp, + curp->line, pos, "0x%x", c); ln.buf[pos++] = '?'; i++; } @@ -383,10 +397,13 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size */ if (c == 0x7f || (c < 0x20 && c != 0x09)) { - mandoc_vmsg(MANDOCERR_BADCHAR, curp, - curp->line, pos, "0x%x", c); + mandoc_vmsg(c == 0x00 || c == 0x04 || + c > 0x0a ? MANDOCERR_CHAR_BAD : + MANDOCERR_CHAR_UNSUPP, + curp, curp->line, pos, "0x%x", c); i++; - ln.buf[pos++] = '?'; + if (c != '\r') + ln.buf[pos++] = '?'; continue; } @@ -440,7 +457,7 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size if ( ! (isascii(c) && (isgraph(c) || isblank(c)))) { - mandoc_vmsg(MANDOCERR_BADCHAR, curp, + mandoc_vmsg(MANDOCERR_CHAR_BAD, curp, curp->line, pos, "0x%x", c); i += 2; ln.buf[pos++] = '?'; @@ -851,6 +868,7 @@ mparse_wait(struct mparse *curp) perror("wait"); exit((int)MANDOCLEVEL_SYSERR); } + curp->child = 0; if (WIFSIGNALED(status)) { mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0, "gunzip died from signal %d", WTERMSIG(status));