version 1.125, 2010/12/22 11:38:17 |
version 1.139, 2011/01/22 13:16:02 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* 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> |
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 153 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
Line 153 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
|
|
/* related to missing macro arguments */ |
/* related to missing macro arguments */ |
"skipping empty macro", |
"skipping empty macro", |
|
"argument count wrong", |
"missing display type", |
"missing display type", |
"list type must come first", |
"list type must come first", |
"tag lists require a width argument", |
"tag lists require a width argument", |
"missing font type", |
"missing font type", |
|
"skipping end of block that is not open", |
|
|
/* related to bad macro arguments */ |
/* related to bad macro arguments */ |
"skipping argument", |
"skipping argument", |
Line 176 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
Line 178 static const char * const mandocerrs[MANDOCERR_MAX] = |
|
"bad comment style", |
"bad comment style", |
"unknown escape sequence", |
"unknown escape sequence", |
"unterminated quoted string", |
"unterminated quoted string", |
|
|
"generic error", |
"generic error", |
|
|
|
/* related to tables */ |
|
"bad table syntax", |
|
"bad table option", |
|
"bad table layout", |
|
"no table layout cells specified", |
|
"no table data cells specified", |
|
"ignore data in cell", |
|
"data block still open", |
|
"ignoring extra data cells", |
|
|
"input stack limit exceeded, infinite loop?", |
"input stack limit exceeded, infinite loop?", |
"skipping bad character", |
"skipping bad character", |
|
"escaped character not allowed in a name", |
"skipping text before the first section header", |
"skipping text before the first section header", |
"skipping unknown macro", |
"skipping unknown macro", |
"NOT IMPLEMENTED: skipping request", |
"NOT IMPLEMENTED, please use groff: skipping request", |
"line scope broken", |
"line scope broken", |
"argument count wrong", |
"argument count wrong", |
"skipping end of block that is not open", |
"skipping end of block that is not open", |
Line 522 fdesc(struct curparse *curp) |
|
Line 535 fdesc(struct curparse *curp) |
|
} |
} |
|
|
assert(curp->roff); |
assert(curp->roff); |
if ( ! roff_endparse(curp->roff)) { |
roff_endparse(curp->roff); |
assert(MANDOCLEVEL_FATAL <= file_status); |
|
goto cleanup; |
|
} |
|
|
|
/* |
/* |
* With -Wstop and warnings or errors of at least |
* With -Wstop and warnings or errors of at least |
|
|
continue; |
continue; |
} else |
} else |
break; |
break; |
case (ROFF_CONT): |
default: |
break; |
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. |
* If input parsers have not been allocated, do so now. |
* We keep these instanced betwen parsers, but set them |
* We keep these instanced betwen parsers, but set them |
* locally per parse routine since we can use different |
* locally per parse routine since we can use different |
|
|
* Lastly, push down into the parsers themselves. One |
* Lastly, push down into the parsers themselves. One |
* of these will have already been set in the pset() |
* of these will have already been set in the pset() |
* routine. |
* 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 ? |
rc = curp->man ? |
man_parseln(curp->man, |
man_parseln(curp->man, |
curp->line, ln.buf, of) : |
curp->line, ln.buf, of) : |