=================================================================== RCS file: /cvs/mandoc/read.c,v retrieving revision 1.164 retrieving revision 1.173 diff -u -p -r1.164 -r1.173 --- mandoc/read.c 2017/04/29 12:45:42 1.164 +++ mandoc/read.c 2017/06/08 00:23:30 1.173 @@ -1,4 +1,4 @@ -/* $Id: read.c,v 1.164 2017/04/29 12:45:42 schwarze Exp $ */ +/* $Id: read.c,v 1.173 2017/06/08 00:23:30 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2017 Ingo Schwarze @@ -75,8 +75,8 @@ static void mparse_parse_buffer(struct mparse *, str static const enum mandocerr mandoclimits[MANDOCLEVEL_MAX] = { MANDOCERR_OK, + MANDOCERR_STYLE, MANDOCERR_WARNING, - MANDOCERR_WARNING, MANDOCERR_ERROR, MANDOCERR_UNSUPP, MANDOCERR_MAX, @@ -86,6 +86,14 @@ static const enum mandocerr mandoclimits[MANDOCLEVEL_M static const char * const mandocerrs[MANDOCERR_MAX] = { "ok", + "generic style suggestion", + + "useless macro", + "consider using OS macro", + "errnos out of order", + "duplicate errno", + "description line ends with a full stop", + "generic warning", /* related to the prologue */ @@ -133,6 +141,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "fill mode already enabled, skipping", "fill mode already disabled, skipping", "line scope broken", + "skipping blank line in line scope", /* related to missing macro arguments */ "skipping empty request", @@ -168,6 +177,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "unknown AT&T UNIX version", "comma in function argument", "parenthesis in function name", + "unknown library name", "invalid content in Rs block", "invalid Boolean argument", "unknown font, skipping request", @@ -220,6 +230,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = "NOT IMPLEMENTED: Bd -file", "skipping display without arguments", "missing list type, using -item", + "argument is not numeric, using 1", "missing manual name, using \"\"", "uname(3) system call failed, using UNKNOWN", "unknown standard specifier", @@ -241,7 +252,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = static const char * const mandoclevels[MANDOCLEVEL_MAX] = { "SUCCESS", - "RESERVED", + "STYLE", "WARNING", "ERROR", "UNSUPP", @@ -319,7 +330,6 @@ 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 */ @@ -401,79 +411,14 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size continue; } - /* Trailing backslash = a plain char. */ - - if (blk.buf[i] != '\\' || i + 1 == blk.sz) { - ln.buf[pos++] = blk.buf[i++]; - continue; - } - - /* - * Found escape and at least one other character. - * When it's a newline character, skip it. - * When there is a carriage return in between, - * skip that one as well. - */ - - if ('\r' == blk.buf[i + 1] && i + 2 < blk.sz && - '\n' == blk.buf[i + 2]) - ++i; - if ('\n' == blk.buf[i + 1]) { - i += 2; - ++lnn; - continue; - } - - 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 (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 */ - for (; pos > 0; --pos) { - if (ln.buf[pos - 1] != ' ') - break; - if (pos > 2 && ln.buf[pos - 2] == '\\') - break; - } - break; - } - - /* Catch escaped bogus characters. */ - - c = (unsigned char) blk.buf[i+1]; - - if ( ! (isascii(c) && - (isgraph(c) || isblank(c)))) { - mandoc_vmsg(MANDOCERR_CHAR_BAD, curp, - curp->line, pos, "0x%x", c); - i += 2; - ln.buf[pos++] = '?'; - continue; - } - - /* Some other escape sequence, copy & cont. */ - ln.buf[pos++] = blk.buf[i++]; - ln.buf[pos++] = blk.buf[i++]; } - if (pos >= ln.sz) + if (pos + 1 >= ln.sz) resize_buf(&ln, 256); + if (i == blk.sz || blk.buf[i] == '\0') + ln.buf[pos++] = '\n'; ln.buf[pos] = '\0'; /*