diff options
author | 2017-05-05 15:16:25 +0000 | |
---|---|---|
committer | 2017-05-05 15:16:25 +0000 | |
commit | 6561cb236ca8d6ce04d90c88a7bf8b7d5848f466 (patch) | |
tree | 4ad83851593a955661527309d25c26aabb32d005 | |
parent | Implement two quirks to support the Arasan eMMC 5.1 controller found on (diff) | |
download | wireguard-openbsd-6561cb236ca8d6ce04d90c88a7bf8b7d5848f466.tar.xz wireguard-openbsd-6561cb236ca8d6ce04d90c88a7bf8b7d5848f466.zip |
Move .sp to the roff modules. Enough infrastructure is in place
now that this actually saves code: -70 LOC.
-rw-r--r-- | regress/usr.bin/mandoc/man/blank/line.out_lint | 4 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Pp/arg.out_lint | 2 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/cond/close.out_lint | 1 | ||||
-rw-r--r-- | usr.bin/mandoc/man.c | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/man_html.c | 24 | ||||
-rw-r--r-- | usr.bin/mandoc/man_macro.c | 6 | ||||
-rw-r--r-- | usr.bin/mandoc/man_term.c | 53 | ||||
-rw-r--r-- | usr.bin/mandoc/man_validate.c | 7 | ||||
-rw-r--r-- | usr.bin/mandoc/mandocdb.c | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc.c | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_argv.c | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_html.c | 30 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_macro.c | 8 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_man.c | 24 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_markdown.c | 6 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_state.c | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_term.c | 46 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_validate.c | 10 | ||||
-rw-r--r-- | usr.bin/mandoc/roff.c | 12 | ||||
-rw-r--r-- | usr.bin/mandoc/roff.h | 6 | ||||
-rw-r--r-- | usr.bin/mandoc/roff_html.c | 24 | ||||
-rw-r--r-- | usr.bin/mandoc/roff_term.c | 28 | ||||
-rw-r--r-- | usr.bin/mandoc/roff_validate.c | 3 |
23 files changed, 115 insertions, 196 deletions
diff --git a/regress/usr.bin/mandoc/man/blank/line.out_lint b/regress/usr.bin/mandoc/man/blank/line.out_lint index 8480cfc2b62..cf3507f587b 100644 --- a/regress/usr.bin/mandoc/man/blank/line.out_lint +++ b/regress/usr.bin/mandoc/man/blank/line.out_lint @@ -1,4 +1,8 @@ mandoc: line.in:5:2: WARNING: skipping paragraph macro: sp after SH +mandoc: line.in:23:2: WARNING: skipping paragraph macro: br after PP mandoc: line.in:25:2: WARNING: skipping paragraph macro: PP empty +mandoc: line.in:35:2: WARNING: skipping paragraph macro: sp after PP +mandoc: line.in:38:2: WARNING: skipping paragraph macro: sp after PP +mandoc: line.in:53:1: WARNING: skipping paragraph macro: sp after PP mandoc: line.in:81:2: WARNING: skipping paragraph macro: sp after SH mandoc: line.in:84:2: WARNING: skipping paragraph macro: sp after SS diff --git a/regress/usr.bin/mandoc/mdoc/Pp/arg.out_lint b/regress/usr.bin/mandoc/mdoc/Pp/arg.out_lint index 58b97965e93..048f13fa8ce 100644 --- a/regress/usr.bin/mandoc/mdoc/Pp/arg.out_lint +++ b/regress/usr.bin/mandoc/mdoc/Pp/arg.out_lint @@ -1,3 +1,3 @@ mandoc: arg.in:11:5: ERROR: skipping all arguments: br drop this +mandoc: arg.in:13:8: ERROR: skipping excess arguments: sp ... drop this mandoc: arg.in:9:2: ERROR: skipping all arguments: Pp drop -mandoc: arg.in:13:8: ERROR: skipping excess arguments: sp ... drop diff --git a/regress/usr.bin/mandoc/roff/cond/close.out_lint b/regress/usr.bin/mandoc/roff/cond/close.out_lint index c59a98d79e4..4800694a1da 100644 --- a/regress/usr.bin/mandoc/roff/cond/close.out_lint +++ b/regress/usr.bin/mandoc/roff/cond/close.out_lint @@ -1 +1,2 @@ mandoc: close.in:14:2: ERROR: appending missing end of block: if +mandoc: close.in:14:9: WARNING: skipping paragraph macro: sp after PP diff --git a/usr.bin/mandoc/man.c b/usr.bin/mandoc/man.c index 4895f0fbd16..2d9eb25c215 100644 --- a/usr.bin/mandoc/man.c +++ b/usr.bin/mandoc/man.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man.c,v 1.119 2017/05/01 23:27:23 schwarze Exp $ */ +/* $OpenBSD: man.c,v 1.120 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -95,7 +95,7 @@ man_ptext(struct roff_man *man, int line, char *buf, int offs) /* Allocate a blank entry. */ if (man->last->tok != MAN_SH && man->last->tok != MAN_SS) { - roff_elem_alloc(man, line, offs, MAN_sp); + roff_elem_alloc(man, line, offs, ROFF_sp); man->next = ROFF_NEXT_SIBLING; } return 1; diff --git a/usr.bin/mandoc/man_html.c b/usr.bin/mandoc/man_html.c index fc6d9ed59bf..7096553943e 100644 --- a/usr.bin/mandoc/man_html.c +++ b/usr.bin/mandoc/man_html.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man_html.c,v 1.93 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: man_html.c,v 1.94 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -67,7 +67,6 @@ static int man_ign_pre(MAN_ARGS); static int man_in_pre(MAN_ARGS); static void man_root_post(MAN_ARGS); static void man_root_pre(MAN_ARGS); -static int man_sp_pre(MAN_ARGS); static const struct htmlman __mans[MAN_MAX - MAN_TH] = { { NULL, NULL }, /* TH */ @@ -90,7 +89,6 @@ static const struct htmlman __mans[MAN_MAX - MAN_TH] = { { man_I_pre, NULL }, /* I */ { man_alt_pre, NULL }, /* IR */ { man_alt_pre, NULL }, /* RI */ - { man_sp_pre, NULL }, /* sp */ { NULL, NULL }, /* nf */ { NULL, NULL }, /* fi */ { NULL, NULL }, /* RE */ @@ -302,6 +300,7 @@ print_man_node(MAN_ARGS) t = h->tag; if (n->tok < ROFF_MAX) { roff_html_pre(h, n); + child = 0; break; } @@ -411,25 +410,6 @@ man_root_post(MAN_ARGS) print_tagq(h, t); } - -static int -man_sp_pre(MAN_ARGS) -{ - struct roffsu su; - - SCALE_VS_INIT(&su, 1); - if (NULL != (n = n->child)) - if ( ! a2roffsu(n->string, &su, SCALE_VS)) - su.scale = 1.0; - - print_otag(h, TAG_DIV, "suh", &su); - - /* So the div isn't empty: */ - print_text(h, "\\~"); - - return 0; -} - static int man_SH_pre(MAN_ARGS) { diff --git a/usr.bin/mandoc/man_macro.c b/usr.bin/mandoc/man_macro.c index a1304c0f373..5ee147afdd3 100644 --- a/usr.bin/mandoc/man_macro.c +++ b/usr.bin/mandoc/man_macro.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man_macro.c,v 1.81 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: man_macro.c,v 1.82 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2012-2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -59,7 +59,6 @@ const struct man_macro __man_macros[MAN_MAX - MAN_TH] = { { in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* I */ { in_line_eoln, 0 }, /* IR */ { in_line_eoln, 0 }, /* RI */ - { in_line_eoln, MAN_NSCOPED }, /* sp */ { in_line_eoln, MAN_NSCOPED }, /* nf */ { in_line_eoln, MAN_NSCOPED }, /* fi */ { blk_close, MAN_BSCOPE }, /* RE */ @@ -329,8 +328,7 @@ in_line_eoln(MACRO_PROT_ARGS) roff_name[tok], buf + *pos); break; } - if (buf[*pos] != '\0' && man->last != n && - (tok == MAN_PD || tok == MAN_sp)) { + if (buf[*pos] != '\0' && man->last != n && tok == MAN_PD) { mandoc_vmsg(MANDOCERR_ARG_EXCESS, man->parse, line, *pos, "%s ... %s", roff_name[tok], buf + *pos); diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c index b57891320bb..4c7d332b6a3 100644 --- a/usr.bin/mandoc/man_term.c +++ b/usr.bin/mandoc/man_term.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man_term.c,v 1.149 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: man_term.c,v 1.150 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -81,7 +81,6 @@ static int pre_alternate(DECL_ARGS); static int pre_ign(DECL_ARGS); static int pre_in(DECL_ARGS); static int pre_literal(DECL_ARGS); -static int pre_sp(DECL_ARGS); static void post_IP(DECL_ARGS); static void post_HP(DECL_ARGS); @@ -112,7 +111,6 @@ static const struct termact __termacts[MAN_MAX - MAN_TH] = { { pre_I, NULL, 0 }, /* I */ { pre_alternate, NULL, 0 }, /* IR */ { pre_alternate, NULL, 0 }, /* RI */ - { pre_sp, NULL, MAN_NOTEXT }, /* sp */ { pre_literal, NULL, 0 }, /* nf */ { pre_literal, NULL, 0 }, /* fi */ { NULL, NULL, 0 }, /* RE */ @@ -390,55 +388,6 @@ pre_in(DECL_ARGS) } static int -pre_sp(DECL_ARGS) -{ - struct roffsu su; - int i, len; - - if ((NULL == n->prev && n->parent)) { - switch (n->parent->tok) { - case MAN_SH: - case MAN_SS: - case MAN_PP: - case MAN_LP: - case MAN_P: - return 0; - default: - break; - } - } - - if (n->child == NULL) - len = 1; - else { - if ( ! a2roffsu(n->child->string, &su, SCALE_VS)) - su.scale = 1.0; - len = term_vspan(p, &su); - } - - if (len == 0) - term_newln(p); - else if (len < 0) - p->skipvsp -= len; - else - for (i = 0; i < len; i++) - term_vspace(p); - - /* - * Handle an explicit break request in the same way - * as an overflowing line. - */ - - if (p->flags & TERMP_BRIND) { - p->offset = p->rmargin; - p->rmargin = p->maxrmargin; - p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); - } - - return 0; -} - -static int pre_HP(DECL_ARGS) { struct roffsu su; diff --git a/usr.bin/mandoc/man_validate.c b/usr.bin/mandoc/man_validate.c index 7fa8e9fbb8e..38c9f6d3e4f 100644 --- a/usr.bin/mandoc/man_validate.c +++ b/usr.bin/mandoc/man_validate.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man_validate.c,v 1.97 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: man_validate.c,v 1.98 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -72,7 +72,6 @@ static const v_check __man_valids[MAN_MAX - MAN_TH] = { NULL, /* I */ NULL, /* IR */ NULL, /* RI */ - post_vs, /* sp */ NULL, /* nf */ NULL, /* fi */ NULL, /* RE */ @@ -123,6 +122,7 @@ man_node_validate(struct roff_man *man) if (n->tok < ROFF_MAX) { switch (n->tok) { case ROFF_br: + case ROFF_sp: post_vs(man, n); break; default: @@ -443,6 +443,9 @@ post_vs(CHKARGS) switch (n->parent->tok) { case MAN_SH: case MAN_SS: + case MAN_PP: + case MAN_LP: + case MAN_P: mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, n->line, n->pos, "%s after %s", roff_name[n->tok], roff_name[n->parent->tok]); diff --git a/usr.bin/mandoc/mandocdb.c b/usr.bin/mandoc/mandocdb.c index 9bf8a78169f..6763f1f200a 100644 --- a/usr.bin/mandoc/mandocdb.c +++ b/usr.bin/mandoc/mandocdb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mandocdb.c,v 1.197 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mandocdb.c,v 1.198 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -287,7 +287,6 @@ static const struct mdoc_handler __mdocs[MDOC_MAX - MDOC_Dd] = { { NULL, 0, 0 }, /* En */ { NULL, TYPE_Dx, NODE_NOSRC }, /* Dx */ { NULL, 0, 0 }, /* %Q */ - { NULL, 0, 0 }, /* sp */ { NULL, 0, 0 }, /* %U */ { NULL, 0, 0 }, /* Ta */ }; diff --git a/usr.bin/mandoc/mdoc.c b/usr.bin/mandoc/mdoc.c index 7ab4487d7d9..076f2a7ffc5 100644 --- a/usr.bin/mandoc/mdoc.c +++ b/usr.bin/mandoc/mdoc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc.c,v 1.152 2017/04/29 12:43:55 schwarze Exp $ */ +/* $OpenBSD: mdoc.c,v 1.153 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -251,7 +251,7 @@ mdoc_ptext(struct roff_man *mdoc, int line, char *buf, int offs) * blank lines aren't allowed, but enough manuals assume this * behaviour that we want to work around it. */ - roff_elem_alloc(mdoc, line, offs, MDOC_sp); + roff_elem_alloc(mdoc, line, offs, ROFF_sp); mdoc->last->flags |= NODE_VALID | NODE_ENDED; mdoc->next = ROFF_NEXT_SIBLING; return 1; diff --git a/usr.bin/mandoc/mdoc_argv.c b/usr.bin/mandoc/mdoc_argv.c index cdb21b63084..30b5061c38e 100644 --- a/usr.bin/mandoc/mdoc_argv.c +++ b/usr.bin/mandoc/mdoc_argv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_argv.c,v 1.69 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_argv.c,v 1.70 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -261,7 +261,6 @@ static const struct mdocarg __mdocargs[MDOC_MAX - MDOC_Dd] = { { ARGSFL_DELIM, NULL }, /* En */ { ARGSFL_DELIM, NULL }, /* Dx */ { ARGSFL_NONE, NULL }, /* %Q */ - { ARGSFL_NONE, NULL }, /* sp */ { ARGSFL_NONE, NULL }, /* %U */ { ARGSFL_NONE, NULL }, /* Ta */ }; diff --git a/usr.bin/mandoc/mdoc_html.c b/usr.bin/mandoc/mdoc_html.c index f5d8f0da901..77a30751688 100644 --- a/usr.bin/mandoc/mdoc_html.c +++ b/usr.bin/mandoc/mdoc_html.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_html.c,v 1.159 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_html.c,v 1.160 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -106,7 +106,6 @@ static int mdoc_rs_pre(MDOC_ARGS); static int mdoc_sh_pre(MDOC_ARGS); static int mdoc_skip_pre(MDOC_ARGS); static int mdoc_sm_pre(MDOC_ARGS); -static int mdoc_sp_pre(MDOC_ARGS); static int mdoc_ss_pre(MDOC_ARGS); static int mdoc_st_pre(MDOC_ARGS); static int mdoc_sx_pre(MDOC_ARGS); @@ -235,7 +234,6 @@ static const struct htmlmdoc __mdocs[MDOC_MAX - MDOC_Dd] = { {mdoc_quote_pre, mdoc_quote_post}, /* En */ {mdoc_xx_pre, NULL}, /* Dx */ {mdoc__x_pre, mdoc__x_post}, /* %Q */ - {mdoc_sp_pre, NULL}, /* sp */ {mdoc__x_pre, mdoc__x_post}, /* %U */ {NULL, NULL}, /* Ta */ }; @@ -1007,9 +1005,9 @@ mdoc_bd_pre(MDOC_ARGS) * anyway, so don't sweat it. */ switch (nn->tok) { - case MDOC_Sm: case ROFF_br: - case MDOC_sp: + case ROFF_sp: + case MDOC_Sm: case MDOC_Bl: case MDOC_D1: case MDOC_Dl: @@ -1324,28 +1322,6 @@ mdoc_pp_pre(MDOC_ARGS) } static int -mdoc_sp_pre(MDOC_ARGS) -{ - struct roffsu su; - - SCALE_VS_INIT(&su, 1); - if (NULL != (n = n->child)) { - if ( ! a2roffsu(n->string, &su, SCALE_VS)) - su.scale = 1.0; - else if (su.scale < 0.0) - su.scale = 0.0; - } - - print_otag(h, TAG_DIV, "suh", &su); - - /* So the div isn't empty: */ - print_text(h, "\\~"); - - return 0; - -} - -static int mdoc_lk_pre(MDOC_ARGS) { struct tag *t; diff --git a/usr.bin/mandoc/mdoc_macro.c b/usr.bin/mandoc/mdoc_macro.c index 9dfd8799eca..92f334eab34 100644 --- a/usr.bin/mandoc/mdoc_macro.c +++ b/usr.bin/mandoc/mdoc_macro.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_macro.c,v 1.179 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_macro.c,v 1.180 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -195,7 +195,6 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX - MDOC_Dd] = { { blk_part_imp, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* En */ { in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* Dx */ { in_line_eoln, MDOC_JOIN }, /* %Q */ - { in_line_eoln, 0 }, /* sp */ { in_line_eoln, 0 }, /* %U */ { phrase_ta, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Ta */ }; @@ -247,9 +246,8 @@ lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) if (res != TOKEN_NONE) { if (mdoc_macros[res].flags & MDOC_CALLABLE) return res; - if (res != MDOC_sp) - mandoc_msg(MANDOCERR_MACRO_CALL, - mdoc->parse, line, ppos, p); + mandoc_msg(MANDOCERR_MACRO_CALL, + mdoc->parse, line, ppos, p); } } return TOKEN_NONE; diff --git a/usr.bin/mandoc/mdoc_man.c b/usr.bin/mandoc/mdoc_man.c index 2134b41336e..b8bc11bff4d 100644 --- a/usr.bin/mandoc/mdoc_man.c +++ b/usr.bin/mandoc/mdoc_man.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_man.c,v 1.110 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_man.c,v 1.111 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org> * @@ -71,7 +71,6 @@ static void post_nm(DECL_ARGS); static void post_percent(DECL_ARGS); static void post_pf(DECL_ARGS); static void post_sect(DECL_ARGS); -static void post_sp(DECL_ARGS); static void post_vt(DECL_ARGS); static int pre__t(DECL_ARGS); static int pre_an(DECL_ARGS); @@ -107,7 +106,7 @@ static int pre_ns(DECL_ARGS); static int pre_pp(DECL_ARGS); static int pre_rs(DECL_ARGS); static int pre_sm(DECL_ARGS); -static int pre_sp(DECL_ARGS); +static void pre_sp(DECL_ARGS); static int pre_sect(DECL_ARGS); static int pre_sy(DECL_ARGS); static void pre_syn(const struct roff_node *); @@ -126,6 +125,7 @@ static const void_fp roff_manacts[ROFF_MAX] = { pre_br, pre_ft, pre_ll, + pre_sp, }; static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = { @@ -247,7 +247,6 @@ static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = { { cond_body, pre_en, post_en, NULL, NULL }, /* En */ { NULL, NULL, NULL, NULL, NULL }, /* Dx */ { NULL, NULL, post_percent, NULL, NULL }, /* %Q */ - { NULL, pre_sp, post_sp, NULL, NULL }, /* sp */ { NULL, NULL, post_percent, NULL, NULL }, /* %U */ { NULL, NULL, NULL, NULL, NULL }, /* Ta */ }; @@ -1692,22 +1691,17 @@ pre_sm(DECL_ARGS) return 0; } -static int +static void pre_sp(DECL_ARGS) { - - if (MMAN_PP & outflags) { + if (outflags & MMAN_PP) { outflags &= ~MMAN_PP; print_line(".PP", 0); - } else + } else { print_line(".sp", 0); - return 1; -} - -static void -post_sp(DECL_ARGS) -{ - + if (n->child != NULL) + print_word(n->child->string); + } outflags |= MMAN_nl; } diff --git a/usr.bin/mandoc/mdoc_markdown.c b/usr.bin/mandoc/mdoc_markdown.c index d2228bb1d80..24a99df7e06 100644 --- a/usr.bin/mandoc/mdoc_markdown.c +++ b/usr.bin/mandoc/mdoc_markdown.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_markdown.c,v 1.20 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_markdown.c,v 1.21 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org> * @@ -222,7 +222,6 @@ static const struct md_act __md_acts[MDOC_MAX - MDOC_Dd] = { { md_cond_body, md_pre_En, md_post_En, NULL, NULL }, /* En */ { NULL, NULL, NULL, NULL, NULL }, /* Dx */ { NULL, NULL, md_post_pc, NULL, NULL }, /* %Q */ - { NULL, md_pre_Pp, NULL, NULL, NULL }, /* sp */ { NULL, md_pre_Lk, md_post_pc, NULL, NULL }, /* %U */ { NULL, NULL, NULL, NULL, NULL }, /* Ta */ }; @@ -323,6 +322,9 @@ md_node(struct roff_node *n) case ROFF_br: process_children = md_pre_br(n); break; + case ROFF_sp: + process_children = md_pre_Pp(n); + break; default: process_children = 0; break; diff --git a/usr.bin/mandoc/mdoc_state.c b/usr.bin/mandoc/mdoc_state.c index 280240ab707..1d364c72179 100644 --- a/usr.bin/mandoc/mdoc_state.c +++ b/usr.bin/mandoc/mdoc_state.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_state.c,v 1.7 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_state.c,v 1.8 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> * @@ -155,7 +155,6 @@ static const state_handler __state_handlers[MDOC_MAX - MDOC_Dd] = { NULL, /* En */ NULL, /* Dx */ NULL, /* %Q */ - NULL, /* sp */ NULL, /* %U */ NULL, /* Ta */ }; diff --git a/usr.bin/mandoc/mdoc_term.c b/usr.bin/mandoc/mdoc_term.c index 49142bbf7ee..c9c430d90b9 100644 --- a/usr.bin/mandoc/mdoc_term.c +++ b/usr.bin/mandoc/mdoc_term.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_term.c,v 1.253 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_term.c,v 1.254 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -113,7 +113,7 @@ static int termp_rs_pre(DECL_ARGS); static int termp_sh_pre(DECL_ARGS); static int termp_skip_pre(DECL_ARGS); static int termp_sm_pre(DECL_ARGS); -static int termp_sp_pre(DECL_ARGS); +static int termp_pp_pre(DECL_ARGS); static int termp_ss_pre(DECL_ARGS); static int termp_sy_pre(DECL_ARGS); static int termp_tag_pre(DECL_ARGS); @@ -128,7 +128,7 @@ static const struct termact __termacts[MDOC_MAX - MDOC_Dd] = { { NULL, NULL }, /* Os */ { termp_sh_pre, termp_sh_post }, /* Sh */ { termp_ss_pre, termp_ss_post }, /* Ss */ - { termp_sp_pre, NULL }, /* Pp */ + { termp_pp_pre, NULL }, /* Pp */ { termp_d1_pre, termp_bl_post }, /* D1 */ { termp_d1_pre, termp_bl_post }, /* Dl */ { termp_bd_pre, termp_bd_post }, /* Bd */ @@ -230,7 +230,7 @@ static const struct termact __termacts[MDOC_MAX - MDOC_Dd] = { { termp_under_pre, NULL }, /* Fr */ { NULL, NULL }, /* Ud */ { NULL, termp_lb_post }, /* Lb */ - { termp_sp_pre, NULL }, /* Lp */ + { termp_pp_pre, NULL }, /* Lp */ { termp_lk_pre, NULL }, /* Lk */ { termp_under_pre, NULL }, /* Mt */ { termp_quote_pre, termp_quote_post }, /* Brq */ @@ -241,7 +241,6 @@ static const struct termact __termacts[MDOC_MAX - MDOC_Dd] = { { termp_quote_pre, termp_quote_post }, /* En */ { termp_xx_pre, termp_xx_post }, /* Dx */ { NULL, termp____post }, /* %Q */ - { termp_sp_pre, NULL }, /* sp */ { NULL, termp____post }, /* %U */ { NULL, NULL }, /* Ta */ }; @@ -1493,9 +1492,9 @@ termp_bd_pre(DECL_ARGS) * anyway, so don't sweat it. */ switch (nn->tok) { - case MDOC_Sm: case ROFF_br: - case MDOC_sp: + case ROFF_sp: + case MDOC_Sm: case MDOC_Bl: case MDOC_D1: case MDOC_Dl: @@ -1642,37 +1641,10 @@ termp_in_post(DECL_ARGS) } static int -termp_sp_pre(DECL_ARGS) +termp_pp_pre(DECL_ARGS) { - struct roffsu su; - int i, len; - - switch (n->tok) { - case MDOC_sp: - if (n->child) { - if ( ! a2roffsu(n->child->string, &su, SCALE_VS)) - su.scale = 1.0; - len = term_vspan(p, &su); - } else - len = 1; - break; - case ROFF_br: - len = 0; - break; - default: - len = 1; - fn_prio = 0; - break; - } - - if (0 == len) - term_newln(p); - else if (len < 0) - p->skipvsp -= len; - else - for (i = 0; i < len; i++) - term_vspace(p); - + fn_prio = 0; + term_vspace(p); return 0; } diff --git a/usr.bin/mandoc/mdoc_validate.c b/usr.bin/mandoc/mdoc_validate.c index 50ebbdca2cb..79a23f62a63 100644 --- a/usr.bin/mandoc/mdoc_validate.c +++ b/usr.bin/mandoc/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_validate.c,v 1.241 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: mdoc_validate.c,v 1.242 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -225,7 +225,6 @@ static const v_post __mdoc_valids[MDOC_MAX - MDOC_Dd] = { post_en, /* En */ post_xx, /* Dx */ NULL, /* %Q */ - post_par, /* sp */ NULL, /* %U */ NULL, /* Ta */ }; @@ -326,6 +325,7 @@ mdoc_node_validate(struct roff_man *mdoc) if (n->tok < ROFF_MAX) { switch(n->tok) { case ROFF_br: + case ROFF_sp: post_par(mdoc); break; default: @@ -2084,10 +2084,10 @@ post_par(POST_ARGS) struct roff_node *np; np = mdoc->last; - if (np->tok != ROFF_br && np->tok != MDOC_sp) + if (np->tok != ROFF_br && np->tok != ROFF_sp) post_prevpar(mdoc); - if (np->tok == MDOC_sp) { + 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, @@ -2103,7 +2103,7 @@ post_par(POST_ARGS) return; } else if (np->tok != MDOC_Pp && np->tok != MDOC_Lp && (mdoc->last->tok != ROFF_br || - (np->tok != MDOC_sp && np->tok != ROFF_br))) + (np->tok != ROFF_sp && np->tok != ROFF_br))) return; mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, diff --git a/usr.bin/mandoc/roff.c b/usr.bin/mandoc/roff.c index 455cb4c365d..3e7dd5ab390 100644 --- a/usr.bin/mandoc/roff.c +++ b/usr.bin/mandoc/roff.c @@ -1,4 +1,4 @@ -/* $OpenBSD: roff.c,v 1.170 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: roff.c,v 1.171 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -209,7 +209,8 @@ static enum rofferr roff_userdef(ROFF_ARGS); #define ROFFNUM_WHITE (1 << 1) /* Skip whitespace in roff_evalnum(). */ const char *__roff_name[MAN_MAX + 1] = { - "br", "ft", "ll", NULL, + "br", "ft", "ll", "sp", + NULL, "ab", "ad", "af", "aln", "als", "am", "am1", "ami", "ami1", "as", "as1", "asciify", @@ -299,14 +300,14 @@ const char *__roff_name[MAN_MAX + 1] = { "Fr", "Ud", "Lb", "Lp", "Lk", "Mt", "Brq", "Bro", "Brc", "%C", "Es", "En", - "Dx", "%Q", "sp", - "%U", "Ta", NULL, + "Dx", "%Q", "%U", "Ta", + NULL, "TH", "SH", "SS", "TP", "LP", "PP", "P", "IP", "HP", "SM", "SB", "BI", "IB", "BR", "RB", "R", "B", "I", "IR", "RI", - "sp", "nf", "fi", + "nf", "fi", "RE", "RS", "DT", "UC", "PD", "AT", "in", "OP", "EX", "EE", "UR", @@ -318,6 +319,7 @@ static struct roffmac roffs[TOKEN_NONE] = { { roff_br, NULL, NULL, 0 }, /* br */ { roff_onearg, NULL, NULL, 0 }, /* ft */ { roff_onearg, NULL, NULL, 0 }, /* ll */ + { roff_onearg, NULL, NULL, 0 }, /* sp */ { NULL, NULL, NULL, 0 }, /* ROFF_MAX */ { roff_unsupp, NULL, NULL, 0 }, /* ab */ { roff_line_ignore, NULL, NULL, 0 }, /* ad */ diff --git a/usr.bin/mandoc/roff.h b/usr.bin/mandoc/roff.h index faa0b4fa75e..063fff05573 100644 --- a/usr.bin/mandoc/roff.h +++ b/usr.bin/mandoc/roff.h @@ -1,4 +1,4 @@ -/* $OpenBSD: roff.h,v 1.27 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: roff.h,v 1.28 2017/05/05 15:16:26 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -69,6 +69,7 @@ enum roff_tok { ROFF_br = 0, ROFF_ft, ROFF_ll, + ROFF_sp, ROFF_MAX, ROFF_ab, ROFF_ad, @@ -261,7 +262,6 @@ enum roff_tok { ROFF_shift, ROFF_sizes, ROFF_so, - /* MAN_sp, MDOC_sp */ ROFF_spacewidth, ROFF_special, ROFF_spreadwarn, @@ -429,7 +429,6 @@ enum roff_tok { MDOC_En, MDOC_Dx, MDOC__Q, - MDOC_sp, MDOC__U, MDOC_Ta, MDOC_MAX, @@ -453,7 +452,6 @@ enum roff_tok { MAN_I, MAN_IR, MAN_RI, - MAN_sp, MAN_nf, MAN_fi, MAN_RE, diff --git a/usr.bin/mandoc/roff_html.c b/usr.bin/mandoc/roff_html.c index 250f311a2e2..c17b155155c 100644 --- a/usr.bin/mandoc/roff_html.c +++ b/usr.bin/mandoc/roff_html.c @@ -1,6 +1,7 @@ -/* $OpenBSD: roff_html.c,v 1.2 2017/05/05 02:06:17 schwarze Exp $ */ +/* $OpenBSD: roff_html.c,v 1.3 2017/05/05 15:16:26 schwarze Exp $ */ /* - * Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv> + * Copyright (c) 2014, 2017 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -28,10 +29,13 @@ typedef void (*roff_html_pre_fp)(ROFF_HTML_ARGS); static void roff_html_pre_br(ROFF_HTML_ARGS); +static void roff_html_pre_sp(ROFF_HTML_ARGS); static const roff_html_pre_fp roff_html_pre_acts[ROFF_MAX] = { roff_html_pre_br, /* br */ NULL, /* ft */ + NULL, /* ll */ + roff_html_pre_sp, /* sp */ }; @@ -49,3 +53,19 @@ roff_html_pre_br(ROFF_HTML_ARGS) print_otag(h, TAG_DIV, ""); print_text(h, "\\~"); /* So the div isn't empty. */ } + +static void +roff_html_pre_sp(ROFF_HTML_ARGS) +{ + struct roffsu su; + + SCALE_VS_INIT(&su, 1); + if ((n = n->child) != NULL) { + if (a2roffsu(n->string, &su, SCALE_VS) == 0) + su.scale = 1.0; + else if (su.scale < 0.0) + su.scale = 0.0; + } + print_otag(h, TAG_DIV, "suh", &su); + print_text(h, "\\~"); /* So the div isn't empty. */ +} diff --git a/usr.bin/mandoc/roff_term.c b/usr.bin/mandoc/roff_term.c index 22638b6de7e..c58ea1ffc41 100644 --- a/usr.bin/mandoc/roff_term.c +++ b/usr.bin/mandoc/roff_term.c @@ -1,6 +1,6 @@ -/* $OpenBSD: roff_term.c,v 1.3 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: roff_term.c,v 1.4 2017/05/05 15:16:26 schwarze Exp $ */ /* - * Copyright (c) 2010, 2014, 2017 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -30,11 +30,13 @@ typedef void (*roff_term_pre_fp)(ROFF_TERM_ARGS); static void roff_term_pre_br(ROFF_TERM_ARGS); static void roff_term_pre_ft(ROFF_TERM_ARGS); static void roff_term_pre_ll(ROFF_TERM_ARGS); +static void roff_term_pre_sp(ROFF_TERM_ARGS); static const roff_term_pre_fp roff_term_pre_acts[ROFF_MAX] = { roff_term_pre_br, /* br */ roff_term_pre_ft, /* ft */ roff_term_pre_ll, /* ft */ + roff_term_pre_sp, /* br */ }; @@ -87,3 +89,25 @@ roff_term_pre_ll(ROFF_TERM_ARGS) { term_setwidth(p, n->child != NULL ? n->child->string : NULL); } + +static void +roff_term_pre_sp(ROFF_TERM_ARGS) +{ + struct roffsu su; + int len; + + if (n->child != NULL) { + if (a2roffsu(n->child->string, &su, SCALE_VS) == 0) + su.scale = 1.0; + len = term_vspan(p, &su); + } else + len = 1; + + if (len < 0) + p->skipvsp -= len; + else + while (len--) + term_vspace(p); + + roff_term_pre_br(p, n); +} diff --git a/usr.bin/mandoc/roff_validate.c b/usr.bin/mandoc/roff_validate.c index a08457f013a..11ce9e19c2e 100644 --- a/usr.bin/mandoc/roff_validate.c +++ b/usr.bin/mandoc/roff_validate.c @@ -1,4 +1,4 @@ -/* $OpenBSD: roff_validate.c,v 1.2 2017/05/05 13:17:04 schwarze Exp $ */ +/* $OpenBSD: roff_validate.c,v 1.3 2017/05/05 15:16:26 schwarze Exp $ */ /* * Copyright (c) 2010, 2017 Ingo Schwarze <schwarze@openbsd.org> * @@ -34,6 +34,7 @@ static const roff_valid_fp roff_valids[ROFF_MAX] = { NULL, /* br */ roff_valid_ft, /* ft */ NULL, /* ll */ + NULL, /* sp */ }; |