From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 7240f677 for ; Mon, 3 Dec 2018 21:54:27 -0500 (EST) Date: Mon, 3 Dec 2018 21:54:27 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: mandoc: Clean up the validation of .Pp, .PP, .sp, and .br. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-Id: <381db3925da49a05@fantadrom.bsd.lv> Log Message: ----------- Clean up the validation of .Pp, .PP, .sp, and .br. Make sure all combinations are handled, and are handled in a systematic manner. This resolves some erratic duplicate handling, handles a number of missing cases, and improves diagnostics in various respects. Move validation of .br and .sp to the roff validation module rather than doing that twice in the mdoc and man validation modules. Move the node relinking function to the roff library where it belongs. In validation functions, only look at the node itself, at previous nodes, and at descendants, not at following nodes or ancestors, such that only nodes are inspected which are already validated. Modified Files: -------------- mandoc: libmdoc.h man_validate.c mdoc.c mdoc_macro.c mdoc_validate.c roff.c roff_int.h roff_validate.c mandoc/regress/man/PP: empty.out_lint mandoc/regress/man/blank: afterSH.out_lint afterSS.out_lint line.out_lint mandoc/regress/mdoc/Sh: parborder.out_lint mandoc/regress/mdoc/blank: line.out_lint mandoc/regress/roff/args: roff.out_lint mandoc/regress/roff/cond: if.out_lint Revision Data ------------- Index: parborder.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/Sh/parborder.out_lint,v retrieving revision 1.5 retrieving revision 1.6 diff -Lregress/mdoc/Sh/parborder.out_lint -Lregress/mdoc/Sh/parborder.out_lint -u -p -r1.5 -r1.6 --- regress/mdoc/Sh/parborder.out_lint +++ regress/mdoc/Sh/parborder.out_lint @@ -1,7 +1,7 @@ mandoc: parborder.in:9:2: WARNING: skipping paragraph macro: Pp after Sh mandoc: parborder.in:11:2: WARNING: skipping paragraph macro: Pp at the end of Sh -mandoc: parborder.in:13:2: WARNING: skipping paragraph macro: Pp after Sh mandoc: parborder.in:17:2: WARNING: skipping paragraph macro: Pp after Ss mandoc: parborder.in:19:2: WARNING: skipping paragraph macro: Pp at the end of Ss mandoc: parborder.in:15:2: WARNING: skipping paragraph macro: Pp before Ss mandoc: parborder.in:22:2: WARNING: skipping paragraph macro: Pp at the end of Ss +mandoc: parborder.in:13:2: WARNING: skipping paragraph macro: Pp after Sh Index: roff_int.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/roff_int.h,v retrieving revision 1.9 retrieving revision 1.10 diff -Lroff_int.h -Lroff_int.h -u -p -r1.9 -r1.10 --- roff_int.h +++ roff_int.h @@ -1,7 +1,7 @@ /* $Id$ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2013, 2014, 2015 Ingo Schwarze + * Copyright (c) 2013, 2014, 2015, 2018 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -26,6 +26,7 @@ struct roff_node *roff_block_alloc(struc struct roff_node *roff_head_alloc(struct roff_man *, int, int, int); struct roff_node *roff_body_alloc(struct roff_man *, int, int, int); void roff_node_unlink(struct roff_man *, struct roff_node *); +void roff_node_relink(struct roff_man *, struct roff_node *); void roff_node_free(struct roff_node *); void roff_node_delete(struct roff_man *, struct roff_node *); Index: man_validate.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/man_validate.c,v retrieving revision 1.138 retrieving revision 1.139 diff -Lman_validate.c -Lman_validate.c -u -p -r1.138 -r1.139 --- man_validate.c +++ man_validate.c @@ -49,16 +49,16 @@ static void check_text(CHKARGS); static void post_AT(CHKARGS); static void post_IP(CHKARGS); static void post_OP(CHKARGS); +static void post_SH(CHKARGS); static void post_TH(CHKARGS); static void post_UC(CHKARGS); static void post_UR(CHKARGS); static void post_in(CHKARGS); -static void post_vs(CHKARGS); static const v_check man_valids[MAN_MAX - MAN_TH] = { post_TH, /* TH */ - NULL, /* SH */ - NULL, /* SS */ + post_SH, /* SH */ + post_SH, /* SS */ NULL, /* TP */ NULL, /* TQ */ check_abort,/* LP */ @@ -151,15 +151,7 @@ man_node_validate(struct roff_man *man) break; default: if (n->tok < ROFF_MAX) { - switch (n->tok) { - case ROFF_br: - case ROFF_sp: - post_vs(man, n); - break; - default: - roff_validate(man); - break; - } + roff_validate(man); break; } assert(n->tok >= MAN_TH && n->tok < MAN_MAX); @@ -240,6 +232,42 @@ post_OP(CHKARGS) } static void +post_SH(CHKARGS) +{ + struct roff_node *nc; + + if (n->type != ROFFT_BODY || (nc = n->child) == NULL) + return; + + if (nc->tok == MAN_PP && nc->body->child != NULL) { + while (nc->body->last != NULL) { + man->next = ROFF_NEXT_CHILD; + roff_node_relink(man, nc->body->last); + man->last = n; + } + } + + if (nc->tok == MAN_PP || nc->tok == ROFF_sp || nc->tok == ROFF_br) { + mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, + nc->line, nc->pos, "%s after %s", + roff_name[nc->tok], roff_name[n->tok]); + roff_node_delete(man, nc); + } + + /* + * Trailing PP is empty, so it is deleted by check_par(). + * Trailing sp is significant. + */ + + if ((nc = n->last) != NULL && nc->tok == ROFF_br) { + mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, + nc->line, nc->pos, "%s at the end of %s", + roff_name[nc->tok], roff_name[n->tok]); + roff_node_delete(man, nc); + } +} + +static void post_UR(CHKARGS) { if (n->type == ROFFT_HEAD && n->child == NULL) @@ -267,6 +295,14 @@ check_par(CHKARGS) roff_node_delete(man, n); break; case ROFFT_BODY: + if (n->child != NULL && + (n->child->tok == ROFF_sp || n->child->tok == ROFF_br)) { + mandoc_vmsg(MANDOCERR_PAR_SKIP, + man->parse, n->child->line, n->child->pos, + "%s after %s", roff_name[n->child->tok], + roff_name[n->tok]); + roff_node_delete(man, n->child); + } if (n->child == NULL) mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, n->line, n->pos, @@ -493,31 +529,4 @@ post_in(CHKARGS) mandoc_asprintf(&s, "+%s", n->child->string); free(n->child->string); n->child->string = s; -} - -static void -post_vs(CHKARGS) -{ - - if (NULL != n->prev) - return; - - switch (n->parent->tok) { - case MAN_SH: - case MAN_SS: - case MAN_PP: - mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, n->line, n->pos, - "%s after %s", roff_name[n->tok], - roff_name[n->parent->tok]); - /* FALLTHROUGH */ - case TOKEN_NONE: - /* - * Don't warn about this because it occurs in pod2man - * and would cause considerable (unfixable) warnage. - */ - roff_node_delete(man, n); - break; - default: - break; - } } Index: roff.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/roff.c,v retrieving revision 1.343 retrieving revision 1.344 diff -Lroff.c -Lroff.c -u -p -r1.343 -r1.344 --- roff.c +++ roff.c @@ -1067,6 +1067,14 @@ roff_node_unlink(struct roff_man *man, s } void +roff_node_relink(struct roff_man *man, struct roff_node *n) +{ + roff_node_unlink(man, n); + n->prev = n->next = NULL; + roff_node_append(man, n); +} + +void roff_node_free(struct roff_node *n) { Index: mdoc_macro.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mdoc_macro.c,v retrieving revision 1.225 retrieving revision 1.226 diff -Lmdoc_macro.c -Lmdoc_macro.c -u -p -r1.225 -r1.226 --- mdoc_macro.c +++ mdoc_macro.c @@ -1243,7 +1243,7 @@ blk_part_imp(MACRO_PROT_ARGS) for (n = body->child; n && n->next; n = n->next) /* Do nothing. */ ; if (n && n->tok == MDOC_Ns) - mdoc_node_relink(mdoc, n); + roff_node_relink(mdoc, n); } static void Index: libmdoc.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/libmdoc.h,v retrieving revision 1.113 retrieving revision 1.114 diff -Llibmdoc.h -Llibmdoc.h -u -p -r1.113 -r1.114 --- libmdoc.h +++ libmdoc.h @@ -69,7 +69,6 @@ void mdoc_tail_alloc(struct roff_man enum roff_tok); struct roff_node *mdoc_endbody_alloc(struct roff_man *, int, int, enum roff_tok, struct roff_node *); -void mdoc_node_relink(struct roff_man *, struct roff_node *); void mdoc_node_validate(struct roff_man *); void mdoc_state(struct roff_man *, struct roff_node *); void mdoc_state_reset(struct roff_man *); Index: roff_validate.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/roff_validate.c,v retrieving revision 1.10 retrieving revision 1.11 diff -Lroff_validate.c -Lroff_validate.c -u -p -r1.10 -r1.11 --- roff_validate.c +++ roff_validate.c @@ -29,17 +29,19 @@ typedef void (*roff_valid_fp)(ROFF_VALID_ARGS); +static void roff_valid_br(ROFF_VALID_ARGS); static void roff_valid_ft(ROFF_VALID_ARGS); +static void roff_valid_sp(ROFF_VALID_ARGS); static const roff_valid_fp roff_valids[ROFF_MAX] = { - NULL, /* br */ + roff_valid_br, /* br */ NULL, /* ce */ roff_valid_ft, /* ft */ NULL, /* ll */ NULL, /* mc */ NULL, /* po */ NULL, /* rj */ - NULL, /* sp */ + roff_valid_sp, /* sp */ NULL, /* ta */ NULL, /* ti */ }; @@ -57,6 +59,31 @@ roff_validate(struct roff_man *man) } static void +roff_valid_br(ROFF_VALID_ARGS) +{ + struct roff_node *np; + + if (n->child != NULL) + mandoc_vmsg(MANDOCERR_ARG_SKIP, man->parse, + n->line, n->pos, "br %s", n->child->string); + + if ((np = n->prev) == NULL) + return; + + switch (np->tok) { + case ROFF_br: + case ROFF_sp: + case MDOC_Pp: + mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, + n->line, n->pos, "br after %s", roff_name[np->tok]); + roff_node_delete(man, n); + break; + default: + break; + } +} + +static void roff_valid_ft(ROFF_VALID_ARGS) { const char *cp; @@ -96,4 +123,33 @@ roff_valid_ft(ROFF_VALID_ARGS) mandoc_vmsg(MANDOCERR_FT_BAD, man->parse, n->line, n->pos, "ft %s", cp); roff_node_delete(man, n); +} + +static void +roff_valid_sp(ROFF_VALID_ARGS) +{ + struct roff_node *np; + + if (n->child != NULL && n->child->next != NULL) + mandoc_vmsg(MANDOCERR_ARG_EXCESS, man->parse, + n->child->next->line, n->child->next->pos, + "sp ... %s", n->child->next->string); + + if ((np = n->prev) == NULL) + return; + + switch (np->tok) { + case ROFF_br: + mandoc_msg(MANDOCERR_PAR_SKIP, man->parse, + np->line, np->pos, "br before sp"); + roff_node_delete(man, np); + break; + case MDOC_Pp: + mandoc_msg(MANDOCERR_PAR_SKIP, man->parse, + n->line, n->pos, "sp after Pp"); + roff_node_delete(man, n); + break; + default: + break; + } } Index: mdoc.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mdoc.c,v retrieving revision 1.269 retrieving revision 1.270 diff -Lmdoc.c -Lmdoc.c -u -p -r1.269 -r1.270 --- mdoc.c +++ mdoc.c @@ -155,15 +155,6 @@ mdoc_elem_alloc(struct roff_man *mdoc, i mdoc->next = ROFF_NEXT_CHILD; } -void -mdoc_node_relink(struct roff_man *mdoc, struct roff_node *p) -{ - - roff_node_unlink(mdoc, p); - p->prev = p->next = NULL; - roff_node_append(mdoc, p); -} - /* * Parse free-form text, that is, a line that does not begin with the * control character. Index: mdoc_validate.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mdoc_validate.c,v retrieving revision 1.363 retrieving revision 1.364 diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.363 -r1.364 --- mdoc_validate.c +++ mdoc_validate.c @@ -370,15 +370,7 @@ mdoc_node_validate(struct roff_man *mdoc /* Call the macro's postprocessor. */ if (n->tok < ROFF_MAX) { - switch(n->tok) { - case ROFF_br: - case ROFF_sp: - post_par(mdoc); - break; - default: - roff_validate(mdoc); - break; - } + roff_validate(mdoc); break; } @@ -956,7 +948,7 @@ build_list(struct roff_man *mdoc, int to for (ic = 1;; ic++) { roff_elem_alloc(mdoc, n->line, n->pos, tok); mdoc->last->flags |= NODE_NOSRC; - mdoc_node_relink(mdoc, n); + roff_node_relink(mdoc, n); n = mdoc->last = mdoc->last->parent; mdoc->next = ROFF_NEXT_SIBLING; if (n->next == NULL) @@ -1297,7 +1289,7 @@ post_nm(POST_ARGS) mandoc_xr_add(mdoc->meta.msec, n->child->string, -1, -1); if (n->last != NULL && n->last->tok == MDOC_Pp) - mdoc_node_relink(mdoc, n->last); + roff_node_relink(mdoc, n->last); if (mdoc->meta.name == NULL) deroff(&mdoc->meta.name, n); @@ -1376,7 +1368,7 @@ post_display(POST_ARGS) mdoc->parse, n->line, n->pos, "Bd"); mdoc->next = ROFF_NEXT_SIBLING; while (n->body->child != NULL) - mdoc_node_relink(mdoc, + roff_node_relink(mdoc, n->body->child); roff_node_delete(mdoc, n); break; @@ -1659,7 +1651,7 @@ post_bl_block(POST_ARGS) mandoc_msg(MANDOCERR_PAR_MOVE, mdoc->parse, nc->line, nc->pos, roff_name[nc->tok]); - mdoc_node_relink(mdoc, nc); + roff_node_relink(mdoc, nc); } else if (n->norm->Bl.comp == 0 && n->norm->Bl.type != LIST_column) { mandoc_vmsg(MANDOCERR_PAR_SKIP, @@ -1819,7 +1811,7 @@ post_bl(POST_ARGS) roff_body_alloc(mdoc, nchild->line, nchild->pos, MDOC_It); while (nchild->tok != MDOC_It) { - mdoc_node_relink(mdoc, nchild); + roff_node_relink(mdoc, nchild); if ((nchild = nnext) == NULL) break; nnext = nchild->next; @@ -1938,7 +1930,7 @@ post_sm(POST_ARGS) mandoc_vmsg(MANDOCERR_SM_BAD, mdoc->parse, nch->line, nch->pos, "%s %s", roff_name[mdoc->last->tok], nch->string); - mdoc_node_relink(mdoc, nch); + roff_node_relink(mdoc, nch); return; } @@ -2522,7 +2514,8 @@ post_ignpar(POST_ARGS) } if ((np = mdoc->last->child) != NULL) - if (np->tok == MDOC_Pp) { + if (np->tok == MDOC_Pp || + np->tok == ROFF_br || np->tok == ROFF_sp) { mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, np->line, np->pos, "%s after %s", roff_name[np->tok], @@ -2531,7 +2524,7 @@ post_ignpar(POST_ARGS) } if ((np = mdoc->last->last) != NULL) - if (np->tok == MDOC_Pp) { + if (np->tok == MDOC_Pp || np->tok == ROFF_br) { mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, np->line, np->pos, "%s at the end of %s", roff_name[np->tok], @@ -2576,33 +2569,13 @@ post_par(POST_ARGS) { struct roff_node *np; - np = mdoc->last; - if (np->tok != ROFF_br && np->tok != ROFF_sp) - post_prevpar(mdoc); + post_prevpar(mdoc); - if (np->tok == ROFF_sp) { - if (np->child != NULL && np->child->next != NULL) - mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse, - np->child->next->line, np->child->next->pos, - "sp ... %s", np->child->next->string); - } else if (np->child != NULL) + np = mdoc->last; + if (np->child != NULL) mandoc_vmsg(MANDOCERR_ARG_SKIP, mdoc->parse, np->line, np->pos, "%s %s", roff_name[np->tok], np->child->string); - - if ((np = mdoc->last->prev) == NULL) { - np = mdoc->last->parent; - if (np->tok != MDOC_Sh && np->tok != MDOC_Ss) - return; - } else if (np->tok != MDOC_Pp && - (mdoc->last->tok != ROFF_br || - (np->tok != ROFF_sp && np->tok != ROFF_br))) - return; - - mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, - mdoc->last->line, mdoc->last->pos, "%s after %s", - roff_name[mdoc->last->tok], roff_name[np->tok]); - roff_node_delete(mdoc, mdoc->last); } static void Index: roff.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/roff/args/roff.out_lint,v retrieving revision 1.5 retrieving revision 1.6 diff -Lregress/roff/args/roff.out_lint -Lregress/roff/args/roff.out_lint -u -p -r1.5 -r1.6 --- regress/roff/args/roff.out_lint +++ regress/roff/args/roff.out_lint @@ -14,3 +14,4 @@ mandoc: roff.in:69:7: STYLE: unterminate mandoc: roff.in:69:13: STYLE: whitespace at end of input line mandoc: roff.in:70:11: STYLE: unterminated quoted argument mandoc: roff.in:70:17: STYLE: whitespace at end of input line +mandoc: roff.in:72:2: WARNING: skipping paragraph macro: br at the end of SH Index: empty.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/man/PP/empty.out_lint,v retrieving revision 1.4 retrieving revision 1.5 diff -Lregress/man/PP/empty.out_lint -Lregress/man/PP/empty.out_lint -u -p -r1.4 -r1.5 --- regress/man/PP/empty.out_lint +++ regress/man/PP/empty.out_lint @@ -1,3 +1,4 @@ mandoc: empty.in:8:2: WARNING: skipping paragraph macro: PP empty mandoc: empty.in:11:2: WARNING: skipping paragraph macro: PP empty mandoc: empty.in:14:2: WARNING: skipping paragraph macro: PP empty +mandoc: empty.in:6:2: WARNING: skipping paragraph macro: PP after SH Index: afterSS.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/man/blank/afterSS.out_lint,v retrieving revision 1.4 retrieving revision 1.5 diff -Lregress/man/blank/afterSS.out_lint -Lregress/man/blank/afterSS.out_lint -u -p -r1.4 -r1.5 --- regress/man/blank/afterSS.out_lint +++ regress/man/blank/afterSS.out_lint @@ -1,4 +1,6 @@ +mandoc: afterSS.in:11:2: WARNING: skipping paragraph macro: PP after SS mandoc: afterSS.in:33:2: WARNING: skipping paragraph macro: br after SS mandoc: afterSS.in:37:2: WARNING: skipping paragraph macro: sp after SS +mandoc: afterSS.in:46:2: WARNING: skipping paragraph macro: PP after SS mandoc: afterSS.in:73:2: WARNING: skipping paragraph macro: br after SS mandoc: afterSS.in:78:2: WARNING: skipping paragraph macro: sp after SS Index: line.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/man/blank/line.out_lint,v retrieving revision 1.5 retrieving revision 1.6 diff -Lregress/man/blank/line.out_lint -Lregress/man/blank/line.out_lint -u -p -r1.5 -r1.6 --- regress/man/blank/line.out_lint +++ regress/man/blank/line.out_lint @@ -1,8 +1,13 @@ -mandoc: line.in:6:2: WARNING: skipping paragraph macro: sp after SH +mandoc: line.in:18:2: WARNING: skipping paragraph macro: br after br mandoc: line.in:24:2: WARNING: skipping paragraph macro: br after PP mandoc: line.in:26:2: WARNING: skipping paragraph macro: PP empty +mandoc: line.in:29:2: WARNING: skipping paragraph macro: br before sp +mandoc: line.in:33:2: WARNING: skipping paragraph macro: br after sp mandoc: line.in:36:2: WARNING: skipping paragraph macro: sp after PP mandoc: line.in:39:2: WARNING: skipping paragraph macro: sp after PP +mandoc: line.in:47:2: WARNING: skipping paragraph macro: br before sp +mandoc: line.in:51:2: WARNING: skipping paragraph macro: br after sp mandoc: line.in:54:1: WARNING: skipping paragraph macro: sp after PP -mandoc: line.in:82:2: WARNING: skipping paragraph macro: sp after SH +mandoc: line.in:6:2: WARNING: skipping paragraph macro: sp after SH mandoc: line.in:85:2: WARNING: skipping paragraph macro: sp after SS +mandoc: line.in:82:2: WARNING: skipping paragraph macro: sp after SH Index: afterSH.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/man/blank/afterSH.out_lint,v retrieving revision 1.4 retrieving revision 1.5 diff -Lregress/man/blank/afterSH.out_lint -Lregress/man/blank/afterSH.out_lint -u -p -r1.4 -r1.5 --- regress/man/blank/afterSH.out_lint +++ regress/man/blank/afterSH.out_lint @@ -1,4 +1,6 @@ +mandoc: afterSH.in:10:2: WARNING: skipping paragraph macro: PP after SH mandoc: afterSH.in:32:2: WARNING: skipping paragraph macro: br after SH mandoc: afterSH.in:36:2: WARNING: skipping paragraph macro: sp after SH +mandoc: afterSH.in:45:2: WARNING: skipping paragraph macro: PP after SH mandoc: afterSH.in:72:2: WARNING: skipping paragraph macro: br after SH mandoc: afterSH.in:77:2: WARNING: skipping paragraph macro: sp after SH Index: line.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/mdoc/blank/line.out_lint,v retrieving revision 1.5 retrieving revision 1.6 diff -Lregress/mdoc/blank/line.out_lint -Lregress/mdoc/blank/line.out_lint -u -p -r1.5 -r1.6 --- regress/mdoc/blank/line.out_lint +++ regress/mdoc/blank/line.out_lint @@ -11,13 +11,15 @@ mandoc: line.in:19:2: WARNING: skipping mandoc: line.in:21:2: WARNING: skipping paragraph macro: br before Pp mandoc: line.in:25:2: WARNING: skipping paragraph macro: br after Pp mandoc: line.in:27:2: WARNING: skipping paragraph macro: Pp before Pp +mandoc: line.in:30:2: WARNING: skipping paragraph macro: br before sp mandoc: line.in:34:2: WARNING: skipping paragraph macro: br after sp mandoc: line.in:37:2: WARNING: skipping paragraph macro: sp after Pp mandoc: line.in:40:2: WARNING: skipping paragraph macro: sp after Pp +mandoc: line.in:48:2: WARNING: skipping paragraph macro: br before sp mandoc: line.in:52:2: WARNING: skipping paragraph macro: br after sp mandoc: line.in:55:1: WARNING: skipping paragraph macro: sp after Pp mandoc: line.in:82:2: WARNING: skipping paragraph macro: sp after Sh mandoc: line.in:84:2: WARNING: skipping paragraph macro: Pp at the end of Sh -mandoc: line.in:86:2: WARNING: skipping paragraph macro: Pp after Sh mandoc: line.in:89:2: WARNING: skipping paragraph macro: Pp after Ss mandoc: line.in:91:2: WARNING: skipping paragraph macro: Pp at the end of Ss +mandoc: line.in:86:2: WARNING: skipping paragraph macro: Pp after Sh Index: if.out_lint =================================================================== RCS file: /home/cvs/mandoc/mandoc/regress/roff/cond/if.out_lint,v retrieving revision 1.5 retrieving revision 1.6 diff -Lregress/roff/cond/if.out_lint -Lregress/roff/cond/if.out_lint -u -p -r1.5 -r1.6 --- regress/roff/cond/if.out_lint +++ regress/roff/cond/if.out_lint @@ -1,2 +1,4 @@ mandoc: if.in:15:2: WARNING: conditional request controls empty scope: if mandoc: if.in:17:2: WARNING: conditional request controls empty scope: if +mandoc: if.in:42:2: WARNING: skipping paragraph macro: br before sp +mandoc: if.in:71:2: WARNING: skipping paragraph macro: br after br -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv