diff options
Diffstat (limited to 'man_term.c')
-rw-r--r-- | man_term.c | 188 |
1 files changed, 72 insertions, 116 deletions
@@ -45,7 +45,7 @@ struct mtermp { int pardist; /* vert. space before par., unit: [v] */ }; -#define DECL_ARGS struct termp *p, \ +#define DECL_ARGS struct termp *p, \ struct mtermp *mt, \ const struct man_node *n, \ const struct man_meta *meta @@ -64,7 +64,7 @@ static void print_man_nodelist(DECL_ARGS); static void print_man_node(DECL_ARGS); static void print_man_head(struct termp *, const void *); static void print_man_foot(struct termp *, const void *); -static void print_bvspace(struct termp *, +static void print_bvspace(struct termp *, const struct man_node *, int); static int pre_B(DECL_ARGS); @@ -105,7 +105,7 @@ static const struct termact termacts[MAN_MAX] = { { pre_PP, NULL, 0 }, /* PP */ { pre_PP, NULL, 0 }, /* P */ { pre_IP, post_IP, 0 }, /* IP */ - { pre_HP, post_HP, 0 }, /* HP */ + { pre_HP, post_HP, 0 }, /* HP */ { NULL, NULL, 0 }, /* SM */ { pre_B, NULL, 0 }, /* SB */ { pre_alternate, NULL, 0 }, /* BI */ @@ -138,7 +138,6 @@ static const struct termact termacts[MAN_MAX] = { }; - void terminal_man(void *arg, const struct man *man) { @@ -189,7 +188,6 @@ a2height(const struct termp *p, const char *cp) return(term_vspan(p, &su)); } - static int a2width(const struct termp *p, const char *cp) { @@ -228,7 +226,7 @@ print_bvspace(struct termp *p, const struct man_node *n, int pardist) term_vspace(p); } -/* ARGSUSED */ + static int pre_ign(DECL_ARGS) { @@ -236,8 +234,6 @@ pre_ign(DECL_ARGS) return(0); } - -/* ARGSUSED */ static int pre_ll(DECL_ARGS) { @@ -246,8 +242,6 @@ pre_ll(DECL_ARGS) return(0); } - -/* ARGSUSED */ static int pre_I(DECL_ARGS) { @@ -256,8 +250,6 @@ pre_I(DECL_ARGS) return(1); } - -/* ARGSUSED */ static int pre_literal(DECL_ARGS) { @@ -285,7 +277,6 @@ pre_literal(DECL_ARGS) return(0); } -/* ARGSUSED */ static int pre_PD(DECL_ARGS) { @@ -300,7 +291,6 @@ pre_PD(DECL_ARGS) return(0); } -/* ARGSUSED */ static int pre_alternate(DECL_ARGS) { @@ -309,27 +299,27 @@ pre_alternate(DECL_ARGS) int savelit, i; switch (n->tok) { - case (MAN_RB): + case MAN_RB: font[0] = TERMFONT_NONE; font[1] = TERMFONT_BOLD; break; - case (MAN_RI): + case MAN_RI: font[0] = TERMFONT_NONE; font[1] = TERMFONT_UNDER; break; - case (MAN_BR): + case MAN_BR: font[0] = TERMFONT_BOLD; font[1] = TERMFONT_NONE; break; - case (MAN_BI): + case MAN_BI: font[0] = TERMFONT_BOLD; font[1] = TERMFONT_UNDER; break; - case (MAN_IR): + case MAN_IR: font[0] = TERMFONT_UNDER; font[1] = TERMFONT_NONE; break; - case (MAN_IB): + case MAN_IB: font[0] = TERMFONT_UNDER; font[1] = TERMFONT_BOLD; break; @@ -352,7 +342,6 @@ pre_alternate(DECL_ARGS) return(0); } -/* ARGSUSED */ static int pre_B(DECL_ARGS) { @@ -361,7 +350,6 @@ pre_B(DECL_ARGS) return(1); } -/* ARGSUSED */ static int pre_OP(DECL_ARGS) { @@ -384,7 +372,6 @@ pre_OP(DECL_ARGS) return(0); } -/* ARGSUSED */ static int pre_ft(DECL_ARGS) { @@ -397,26 +384,26 @@ pre_ft(DECL_ARGS) cp = n->child->string; switch (*cp) { - case ('4'): + case '4': /* FALLTHROUGH */ - case ('3'): + case '3': /* FALLTHROUGH */ - case ('B'): + case 'B': term_fontrepl(p, TERMFONT_BOLD); break; - case ('2'): + case '2': /* FALLTHROUGH */ - case ('I'): + case 'I': term_fontrepl(p, TERMFONT_UNDER); break; - case ('P'): + case 'P': term_fontlast(p); break; - case ('1'): + case '1': /* FALLTHROUGH */ - case ('C'): + case 'C': /* FALLTHROUGH */ - case ('R'): + case 'R': term_fontrepl(p, TERMFONT_NONE); break; default: @@ -425,7 +412,6 @@ pre_ft(DECL_ARGS) return(0); } -/* ARGSUSED */ static int pre_in(DECL_ARGS) { @@ -459,7 +445,7 @@ pre_in(DECL_ARGS) p->offset -= p->offset > v ? v : p->offset; else if (less > 0) p->offset += v; - else + else p->offset = v; /* Don't let this creep beyond the right margin. */ @@ -470,8 +456,6 @@ pre_in(DECL_ARGS) return(0); } - -/* ARGSUSED */ static int pre_sp(DECL_ARGS) { @@ -481,15 +465,15 @@ pre_sp(DECL_ARGS) if ((NULL == n->prev && n->parent)) { switch (n->parent->tok) { - case (MAN_SH): + case MAN_SH: /* FALLTHROUGH */ - case (MAN_SS): + case MAN_SS: /* FALLTHROUGH */ - case (MAN_PP): + case MAN_PP: /* FALLTHROUGH */ - case (MAN_LP): + case MAN_LP: /* FALLTHROUGH */ - case (MAN_P): + case MAN_P: /* FALLTHROUGH */ return(0); default: @@ -499,7 +483,7 @@ pre_sp(DECL_ARGS) neg = 0; switch (n->tok) { - case (MAN_br): + case MAN_br: len = 0; break; default: @@ -527,8 +511,6 @@ pre_sp(DECL_ARGS) return(0); } - -/* ARGSUSED */ static int pre_HP(DECL_ARGS) { @@ -537,10 +519,10 @@ pre_HP(DECL_ARGS) const struct man_node *nn; switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: print_bvspace(p, n, mt->pardist); return(1); - case (MAN_BODY): + case MAN_BODY: break; default: return(0); @@ -573,14 +555,12 @@ pre_HP(DECL_ARGS) return(1); } - -/* ARGSUSED */ static void post_HP(DECL_ARGS) { switch (n->type) { - case (MAN_BODY): + case MAN_BODY: term_newln(p); p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); p->trailspace = 0; @@ -592,14 +572,12 @@ post_HP(DECL_ARGS) } } - -/* ARGSUSED */ static int pre_PP(DECL_ARGS) { switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); print_bvspace(p, n, mt->pardist); break; @@ -611,8 +589,6 @@ pre_PP(DECL_ARGS) return(MAN_HEAD != n->type); } - -/* ARGSUSED */ static int pre_IP(DECL_ARGS) { @@ -621,14 +597,14 @@ pre_IP(DECL_ARGS) int savelit, ival; switch (n->type) { - case (MAN_BODY): + case MAN_BODY: p->flags |= TERMP_NOSPACE; break; - case (MAN_HEAD): + case MAN_HEAD: p->flags |= TERMP_NOBREAK; p->trailspace = 1; break; - case (MAN_BLOCK): + case MAN_BLOCK: print_bvspace(p, n, mt->pardist); /* FALLTHROUGH */ default: @@ -645,7 +621,7 @@ pre_IP(DECL_ARGS) len = (size_t)ival; switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: /* Handle zero-width lengths. */ if (0 == len) len = term_len(p, 1); @@ -668,10 +644,10 @@ pre_IP(DECL_ARGS) mt->fl |= MANT_LITERAL; return(0); - case (MAN_BODY): + case MAN_BODY: p->offset = mt->offset + len; p->rmargin = p->maxrmargin > p->offset ? - p->maxrmargin : p->offset; + p->maxrmargin : p->offset; break; default: break; @@ -680,20 +656,18 @@ pre_IP(DECL_ARGS) return(1); } - -/* ARGSUSED */ static void post_IP(DECL_ARGS) { switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: term_flushln(p); p->flags &= ~TERMP_NOBREAK; p->trailspace = 0; p->rmargin = p->maxrmargin; break; - case (MAN_BODY): + case MAN_BODY: term_newln(p); p->offset = mt->offset; break; @@ -702,8 +676,6 @@ post_IP(DECL_ARGS) } } - -/* ARGSUSED */ static int pre_TP(DECL_ARGS) { @@ -712,14 +684,14 @@ pre_TP(DECL_ARGS) int savelit, ival; switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: p->flags |= TERMP_NOBREAK; p->trailspace = 1; break; - case (MAN_BODY): + case MAN_BODY: p->flags |= TERMP_NOSPACE; break; - case (MAN_BLOCK): + case MAN_BLOCK: print_bvspace(p, n, mt->pardist); /* FALLTHROUGH */ default: @@ -737,7 +709,7 @@ pre_TP(DECL_ARGS) len = (size_t)ival; switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: /* Handle zero-length properly. */ if (0 == len) len = term_len(p, 1); @@ -764,10 +736,10 @@ pre_TP(DECL_ARGS) mt->lmargin[mt->lmargincur] = (size_t)ival; return(0); - case (MAN_BODY): + case MAN_BODY: p->offset = mt->offset + len; p->rmargin = p->maxrmargin > p->offset ? - p->maxrmargin : p->offset; + p->maxrmargin : p->offset; p->trailspace = 0; p->flags &= ~TERMP_NOBREAK; break; @@ -778,17 +750,15 @@ pre_TP(DECL_ARGS) return(1); } - -/* ARGSUSED */ static void post_TP(DECL_ARGS) { switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: term_flushln(p); break; - case (MAN_BODY): + case MAN_BODY: term_newln(p); p->offset = mt->offset; break; @@ -797,15 +767,13 @@ post_TP(DECL_ARGS) } } - -/* ARGSUSED */ static int pre_SS(DECL_ARGS) { int i; switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: mt->fl &= ~MANT_LITERAL; mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); mt->offset = term_len(p, p->defindent); @@ -818,11 +786,11 @@ pre_SS(DECL_ARGS) for (i = 0; i < mt->pardist; i++) term_vspace(p); break; - case (MAN_HEAD): + case MAN_HEAD: term_fontrepl(p, TERMFONT_BOLD); p->offset = term_len(p, 3); break; - case (MAN_BODY): + case MAN_BODY: p->offset = mt->offset; break; default: @@ -832,17 +800,15 @@ pre_SS(DECL_ARGS) return(1); } - -/* ARGSUSED */ static void post_SS(DECL_ARGS) { - + switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: term_newln(p); break; - case (MAN_BODY): + case MAN_BODY: term_newln(p); break; default: @@ -850,15 +816,13 @@ post_SS(DECL_ARGS) } } - -/* ARGSUSED */ static int pre_SH(DECL_ARGS) { int i; switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: mt->fl &= ~MANT_LITERAL; mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); mt->offset = term_len(p, p->defindent); @@ -872,11 +836,11 @@ pre_SH(DECL_ARGS) for (i = 0; i < mt->pardist; i++) term_vspace(p); break; - case (MAN_HEAD): + case MAN_HEAD: term_fontrepl(p, TERMFONT_BOLD); p->offset = 0; break; - case (MAN_BODY): + case MAN_BODY: p->offset = mt->offset; break; default: @@ -886,17 +850,15 @@ pre_SH(DECL_ARGS) return(1); } - -/* ARGSUSED */ static void post_SH(DECL_ARGS) { - + switch (n->type) { - case (MAN_HEAD): + case MAN_HEAD: term_newln(p); break; - case (MAN_BODY): + case MAN_BODY: term_newln(p); break; default: @@ -904,7 +866,6 @@ post_SH(DECL_ARGS) } } -/* ARGSUSED */ static int pre_RS(DECL_ARGS) { @@ -912,10 +873,10 @@ pre_RS(DECL_ARGS) size_t sz; switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: term_newln(p); return(1); - case (MAN_HEAD): + case MAN_HEAD: return(0); default: break; @@ -924,13 +885,13 @@ pre_RS(DECL_ARGS) sz = term_len(p, p->defindent); if (NULL != (n = n->parent->head->child)) - if ((ival = a2width(p, n->string)) >= 0) + if ((ival = a2width(p, n->string)) >= 0) sz = (size_t)ival; mt->offset += sz; p->offset = mt->offset; p->rmargin = p->maxrmargin > p->offset ? - p->maxrmargin : p->offset; + p->maxrmargin : p->offset; if (++mt->lmarginsz < MAXMARGINS) mt->lmargincur = mt->lmarginsz; @@ -939,7 +900,6 @@ pre_RS(DECL_ARGS) return(1); } -/* ARGSUSED */ static void post_RS(DECL_ARGS) { @@ -947,9 +907,9 @@ post_RS(DECL_ARGS) size_t sz; switch (n->type) { - case (MAN_BLOCK): + case MAN_BLOCK: return; - case (MAN_HEAD): + case MAN_HEAD: return; default: term_newln(p); @@ -958,8 +918,8 @@ post_RS(DECL_ARGS) sz = term_len(p, p->defindent); - if (NULL != (n = n->parent->head->child)) - if ((ival = a2width(p, n->string)) >= 0) + if (NULL != (n = n->parent->head->child)) + if ((ival = a2width(p, n->string)) >= 0) sz = (size_t)ival; mt->offset = mt->offset < sz ? 0 : mt->offset - sz; @@ -969,7 +929,6 @@ post_RS(DECL_ARGS) mt->lmargincur = mt->lmarginsz; } -/* ARGSUSED */ static int pre_UR(DECL_ARGS) { @@ -977,7 +936,6 @@ pre_UR(DECL_ARGS) return (MAN_HEAD != n->type); } -/* ARGSUSED */ static void post_UR(DECL_ARGS) { @@ -1002,7 +960,7 @@ print_man_node(DECL_ARGS) int c; switch (n->type) { - case(MAN_TEXT): + case MAN_TEXT: /* * If we have a blank line, output a vertical space. * If we have a space as the first character, break @@ -1017,15 +975,15 @@ print_man_node(DECL_ARGS) term_word(p, n->string); goto out; - case (MAN_EQN): + case MAN_EQN: term_eqn(p, n->eqn); return; - case (MAN_TBL): + case MAN_TBL: /* * Tables are preceded by a newline. Then process a * table line, which will cause line termination, */ - if (TBL_SPAN_FIRST & n->span->flags) + if (TBL_SPAN_FIRST & n->span->flags) term_newln(p); term_tbl(p, n->span); return; @@ -1088,7 +1046,6 @@ print_man_nodelist(DECL_ARGS) print_man_nodelist(p, mt, n->next, meta); } - static void print_man_foot(struct termp *p, const void *arg) { @@ -1156,7 +1113,6 @@ print_man_foot(struct termp *p, const void *arg) term_flushln(p); } - static void print_man_head(struct termp *p, const void *arg) { @@ -1183,7 +1139,7 @@ print_man_head(struct termp *p, const void *arg) p->trailspace = 1; p->offset = 0; p->rmargin = 2 * (titlen+1) + buflen < p->maxrmargin ? - (p->maxrmargin - + (p->maxrmargin - term_strlen(p, buf) + term_len(p, 1)) / 2 : p->maxrmargin - buflen; @@ -1216,7 +1172,7 @@ print_man_head(struct termp *p, const void *arg) p->offset = 0; p->rmargin = p->maxrmargin; - /* + /* * Groff prints three blank lines before the content. * Do the same, except in the temporary, undocumented * mode imitating mdoc(7) output. |