=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.219 retrieving revision 1.224 diff -u -p -r1.219 -r1.224 --- mandoc/man_term.c 2018/08/18 17:07:23 1.219 +++ mandoc/man_term.c 2018/12/31 07:08:12 1.224 @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.219 2018/08/18 17:07:23 schwarze Exp $ */ +/* $Id: man_term.c,v 1.224 2018/12/31 07:08:12 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2015, 2017, 2018 Ingo Schwarze @@ -27,7 +27,6 @@ #include #include "mandoc_aux.h" -#include "mandoc.h" #include "roff.h" #include "man.h" #include "out.h" @@ -81,6 +80,7 @@ static int pre_SS(DECL_ARGS); static int pre_SY(DECL_ARGS); static int pre_TP(DECL_ARGS); static int pre_UR(DECL_ARGS); +static int pre_abort(DECL_ARGS); static int pre_alternate(DECL_ARGS); static int pre_ign(DECL_ARGS); static int pre_in(DECL_ARGS); @@ -101,9 +101,9 @@ static const struct man_term_act man_term_acts[MAN_MAX { pre_SS, post_SS, 0 }, /* SS */ { pre_TP, post_TP, 0 }, /* TP */ { pre_TP, post_TP, 0 }, /* TQ */ - { pre_PP, NULL, 0 }, /* LP */ + { pre_abort, NULL, 0 }, /* LP */ { pre_PP, NULL, 0 }, /* PP */ - { pre_PP, NULL, 0 }, /* P */ + { pre_abort, NULL, 0 }, /* P */ { pre_IP, post_IP, 0 }, /* IP */ { pre_HP, post_HP, 0 }, /* HP */ { NULL, NULL, 0 }, /* SM */ @@ -117,8 +117,6 @@ static const struct man_term_act man_term_acts[MAN_MAX { pre_I, NULL, 0 }, /* I */ { pre_alternate, NULL, 0 }, /* IR */ { pre_alternate, NULL, 0 }, /* RI */ - { pre_literal, NULL, MAN_NOTEXT }, /* nf */ - { pre_literal, NULL, MAN_NOTEXT }, /* fi */ { NULL, NULL, 0 }, /* RE */ { pre_RS, post_RS, 0 }, /* RS */ { pre_DT, NULL, 0 }, /* DT */ @@ -147,7 +145,7 @@ man_term_act(enum roff_tok tok) } void -terminal_man(void *arg, const struct roff_man *man) +terminal_man(void *arg, const struct roff_meta *man) { struct termp *p; struct roff_node *n; @@ -176,18 +174,17 @@ terminal_man(void *arg, const struct roff_man *man) !strcmp(n->child->child->string, "SYNOPSIS")) { if (n->child->next->child != NULL) print_man_nodelist(p, &mt, - n->child->next->child, - &man->meta); + n->child->next->child, man); term_newln(p); break; } n = n->next; } } else { - term_begin(p, print_man_head, print_man_foot, &man->meta); + term_begin(p, print_man_head, print_man_foot, man); p->flags |= TERMP_NOSPACE; if (n != NULL) - print_man_nodelist(p, &mt, n, &man->meta); + print_man_nodelist(p, &mt, n, man); term_end(p); } p->defindent = save_defindent; @@ -222,6 +219,12 @@ print_bvspace(struct termp *p, const struct roff_node static int +pre_abort(DECL_ARGS) +{ + abort(); +} + +static int pre_ign(DECL_ARGS) { @@ -242,7 +245,7 @@ pre_literal(DECL_ARGS) term_newln(p); - if (n->tok == MAN_nf || n->tok == MAN_EX) + if (n->tok == MAN_EX) mt->fl |= MANT_LITERAL; else mt->fl &= ~MANT_LITERAL; @@ -979,13 +982,18 @@ print_man_node(DECL_ARGS) break; } + if (n->tok == ROFF_nf) + n->tok = MAN_EX; + else if (n->tok == ROFF_fi) + n->tok = MAN_EE; + if (n->tok < ROFF_MAX) { roff_term_pre(p, n); return; } act = man_term_act(n->tok); - if ((act->flags & MAN_NOTEXT) == 0) + if ((act->flags & MAN_NOTEXT) == 0 && n->tok != MAN_SM) term_fontrepl(p, TERMFONT_NONE); c = 1; @@ -997,7 +1005,7 @@ print_man_node(DECL_ARGS) if (act->post != NULL) (*act->post)(p, mt, n, meta); - if ((act->flags & MAN_NOTEXT) == 0) + if ((act->flags & MAN_NOTEXT) == 0 && n->tok != MAN_SM) term_fontrepl(p, TERMFONT_NONE); out: