=================================================================== RCS file: /cvs/mandoc/read.c,v retrieving revision 1.149 retrieving revision 1.150.2.3 diff -u -p -r1.149 -r1.150.2.3 --- mandoc/read.c 2016/07/10 13:34:30 1.149 +++ mandoc/read.c 2017/01/09 02:21:37 1.150.2.3 @@ -1,4 +1,4 @@ -/* $Id: read.c,v 1.149 2016/07/10 13:34:30 schwarze Exp $ */ +/* $Id: read.c,v 1.150.2.3 2017/01/09 02:21:37 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2016 Ingo Schwarze @@ -143,7 +143,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "empty argument, using 0n", "missing display type, using -ragged", "list type is not the first argument", - "missing -width in -tag list, using 8n", + "missing -width in -tag list, using 6n", "missing utility name, using \"\"", "missing function name, using \"\"", "empty head in list item", @@ -291,13 +291,6 @@ choose_parser(struct mparse *curp) } } - if (curp->man == NULL) { - curp->man = roff_man_alloc(curp->roff, curp, curp->defos, - curp->options & MPARSE_QUICK ? 1 : 0); - curp->man->macroset = MACROSET_MAN; - curp->man->first->tok = TOKEN_NONE; - } - if (format == MPARSE_MDOC) { mdoc_hash_init(); curp->man->macroset = MACROSET_MDOC; @@ -324,6 +317,7 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size const char *save_file; char *cp; size_t pos; /* byte number in the ln buffer */ + size_t j; /* auxiliary byte number in the blk buffer */ enum rofferr rr; int of; int lnn; /* line number in the real file */ @@ -429,14 +423,21 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size } if ('"' == blk.buf[i + 1] || '#' == blk.buf[i + 1]) { + j = i; i += 2; /* Comment, skip to end of line */ for (; i < blk.sz; ++i) { - if ('\n' == blk.buf[i]) { - ++i; - ++lnn; - break; - } + if (blk.buf[i] != '\n') + continue; + if (blk.buf[i - 1] == ' ' || + blk.buf[i - 1] == '\t') + mandoc_msg( + MANDOCERR_SPACE_EOL, + curp, curp->line, + pos + i-1 - j, NULL); + ++i; + ++lnn; + break; } /* Backout trailing whitespaces */ @@ -562,15 +563,7 @@ rerun: break; } - /* - * If input parsers have not been allocated, do so now. - * We keep these instanced between parsers, but set them - * locally per parse routine since we can use different - * parsers with each one. - */ - - if (curp->man == NULL || - curp->man->macroset == MACROSET_NONE) + if (curp->man->macroset == MACROSET_NONE) choose_parser(curp); /* @@ -683,10 +676,6 @@ read_whole_file(struct mparse *curp, const char *file, static void mparse_end(struct mparse *curp) { - - if (curp->man == NULL && curp->sodest == NULL) - curp->man = roff_man_alloc(curp->roff, curp, curp->defos, - curp->options & MPARSE_QUICK ? 1 : 0); if (curp->man->macroset == MACROSET_NONE) curp->man->macroset = MACROSET_MAN; if (curp->man->macroset == MACROSET_MDOC) @@ -842,11 +831,8 @@ mparse_alloc(int options, enum mandoclevel wlevel, man void mparse_reset(struct mparse *curp) { - roff_reset(curp->roff); - - if (curp->man != NULL) - roff_man_reset(curp->man); + roff_man_reset(curp->man); if (curp->secondary) curp->secondary->sz = 0;