diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2018-12-31 11:01:35 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2018-12-31 11:01:35 +0000 |
commit | d468455084023a046cf4d7704ba9a2729929f8c3 (patch) | |
tree | f54bf391e4330e60da17bc27ab995788e5bea3fb | |
parent | 78f075dbabee48410401582237a445cc4c94b18f (diff) |
Cleanup, minus 25 LOC, no functional change:
Delete the complicated mechanism keeping fill mode state locally in
the man(7) HTML formatter. Instead, use the state stored in the nodes.
-rw-r--r-- | usr.bin/mandoc/man_term.c | 55 |
1 files changed, 7 insertions, 48 deletions
diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c index 18533514530..80407561d5d 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.177 2018/12/31 07:07:43 schwarze Exp $ */ +/* $OpenBSD: man_term.c,v 1.178 2018/12/31 11:01:34 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> @@ -34,8 +34,6 @@ #define MAXMARGINS 64 /* maximum number of indented scopes */ struct mtermp { - int fl; -#define MANT_LITERAL (1 << 0) int lmargin[MAXMARGINS]; /* margins (incl. vis. page) */ int lmargincur; /* index of current margin */ int lmarginsz; /* actual number of nested margins */ @@ -240,14 +238,8 @@ pre_I(DECL_ARGS) static int pre_literal(DECL_ARGS) { - term_newln(p); - if (n->tok == MAN_EX) - mt->fl |= MANT_LITERAL; - else - mt->fl &= ~MANT_LITERAL; - /* * Unlike .IP and .TP, .HP does not have a HEAD. * So in case a second call to term_flushln() is needed, @@ -260,7 +252,6 @@ pre_literal(DECL_ARGS) p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); p->flags |= TERMP_NOSPACE; } - return 0; } @@ -285,7 +276,7 @@ pre_alternate(DECL_ARGS) { enum termfont font[2]; struct roff_node *nn; - int savelit, i; + int i; switch (n->tok) { case MAN_RB: @@ -315,14 +306,8 @@ pre_alternate(DECL_ARGS) default: abort(); } - - savelit = MANT_LITERAL & mt->fl; - mt->fl &= ~MANT_LITERAL; - - for (i = 0, nn = n->child; nn; nn = nn->next, i = 1 - i) { + for (i = 0, nn = n->child; nn != NULL; nn = nn->next, i = 1 - i) { term_fontrepl(p, font[i]); - if (savelit && NULL == nn->next) - mt->fl |= MANT_LITERAL; assert(nn->type == ROFFT_TEXT); term_word(p, nn->string); if (nn->flags & NODE_EOS) @@ -330,7 +315,6 @@ pre_alternate(DECL_ARGS) if (nn->next) p->flags |= TERMP_NOSPACE; } - return 0; } @@ -433,7 +417,7 @@ pre_HP(DECL_ARGS) return 0; } - if ( ! (MANT_LITERAL & mt->fl)) { + if ((n->flags & NODE_NOFILL) == 0) { p->flags |= TERMP_NOBREAK | TERMP_BRIND; p->trailspace = 2; } @@ -506,7 +490,7 @@ pre_IP(DECL_ARGS) { struct roffsu su; const struct roff_node *nn; - int len, savelit; + int len; switch (n->type) { case ROFFT_BODY: @@ -540,16 +524,8 @@ pre_IP(DECL_ARGS) case ROFFT_HEAD: p->tcol->offset = mt->offset; p->tcol->rmargin = mt->offset + len; - - savelit = MANT_LITERAL & mt->fl; - mt->fl &= ~MANT_LITERAL; - if (n->child) print_man_node(p, mt, n->child, meta); - - if (savelit) - mt->fl |= MANT_LITERAL; - return 0; case ROFFT_BODY: p->tcol->offset = mt->offset + len; @@ -558,14 +534,12 @@ pre_IP(DECL_ARGS) default: break; } - return 1; } static void post_IP(DECL_ARGS) { - switch (n->type) { case ROFFT_HEAD: term_flushln(p); @@ -587,7 +561,7 @@ pre_TP(DECL_ARGS) { struct roffsu su; struct roff_node *nn; - int len, savelit; + int len; switch (n->type) { case ROFFT_HEAD: @@ -624,9 +598,6 @@ pre_TP(DECL_ARGS) p->tcol->offset = mt->offset; p->tcol->rmargin = mt->offset + len; - savelit = MANT_LITERAL & mt->fl; - mt->fl &= ~MANT_LITERAL; - /* Don't print same-line elements. */ nn = n->child; while (NULL != nn && 0 == (NODE_LINE & nn->flags)) @@ -636,9 +607,6 @@ pre_TP(DECL_ARGS) print_man_node(p, mt, nn, meta); nn = nn->next; } - - if (savelit) - mt->fl |= MANT_LITERAL; return 0; case ROFFT_BODY: p->tcol->offset = mt->offset + len; @@ -649,14 +617,12 @@ pre_TP(DECL_ARGS) default: break; } - return 1; } static void post_TP(DECL_ARGS) { - switch (n->type) { case ROFFT_HEAD: term_flushln(p); @@ -677,7 +643,6 @@ pre_SS(DECL_ARGS) switch (n->type) { case ROFFT_BLOCK: - mt->fl &= ~MANT_LITERAL; mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); mt->offset = term_len(p, p->defindent); @@ -740,7 +705,6 @@ pre_SH(DECL_ARGS) switch (n->type) { case ROFFT_BLOCK: - mt->fl &= ~MANT_LITERAL; mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); mt->offset = term_len(p, p->defindent); @@ -980,11 +944,6 @@ 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; @@ -1014,7 +973,7 @@ out: * -man doesn't have nested macros, we don't need to be * more specific than this. */ - if (mt->fl & MANT_LITERAL && + if (n->flags & NODE_NOFILL && ! (p->flags & (TERMP_NOBREAK | TERMP_NONEWLINE)) && (n->next == NULL || n->next->flags & NODE_LINE)) { p->flags |= TERMP_BRNEVER | TERMP_NOSPACE; |