=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.45 retrieving revision 1.50 diff -u -p -r1.45 -r1.50 --- mandoc/man_term.c 2009/10/26 04:09:45 1.45 +++ mandoc/man_term.c 2009/11/10 11:45:57 1.50 @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.45 2009/10/26 04:09:45 kristaps Exp $ */ +/* $Id: man_term.c,v 1.50 2009/11/10 11:45:57 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -18,7 +18,6 @@ #include #include -#include #include #include #include @@ -86,7 +85,6 @@ static int pre_BI(DECL_ARGS); static int pre_HP(DECL_ARGS); static int pre_I(DECL_ARGS); static int pre_IP(DECL_ARGS); -static int pre_IR(DECL_ARGS); static int pre_PP(DECL_ARGS); static int pre_RB(DECL_ARGS); static int pre_RI(DECL_ARGS); @@ -131,7 +129,7 @@ static const struct termact termacts[MAN_MAX] = { { NULL, NULL }, /* R */ { pre_B, post_B }, /* B */ { pre_I, post_I }, /* I */ - { pre_IR, NULL }, /* IR */ + { pre_RI, NULL }, /* IR */ { pre_RI, NULL }, /* RI */ { NULL, NULL }, /* na */ { pre_I, post_i }, /* i */ @@ -300,26 +298,6 @@ pre_nf(DECL_ARGS) /* ARGSUSED */ static int -pre_IR(DECL_ARGS) -{ - const struct man_node *nn; - int i; - - for (i = 0, nn = n->child; nn; nn = nn->next, i++) { - if ( ! (i % 2)) - p->under++; - if (i > 0) - p->flags |= TERMP_NOSPACE; - print_man_node(p, mt, nn, m); - if ( ! (i % 2)) - p->under--; - } - return(0); -} - - -/* ARGSUSED */ -static int pre_RB(DECL_ARGS) { const struct man_node *nn; @@ -353,13 +331,19 @@ pre_RI(DECL_ARGS) int i; for (i = 0, nn = n->child; nn; nn = nn->next, i++) { - if ( ! (i % 2)) + if (i % 2 && MAN_RI == n->tok) p->under++; + else if ( ! (i % 2) && MAN_RI != n->tok) + p->under++; + if (i > 0) p->flags |= TERMP_NOSPACE; print_man_node(p, mt, nn, m); - if ( ! (i % 2)) + + if (i % 2 && MAN_RI == n->tok) p->under--; + else if ( ! (i % 2) && MAN_RI != n->tok) + p->under--; } return(0); } @@ -914,6 +898,8 @@ print_man_foot(struct termp *p, const struct man_meta { char buf[DATESIZ]; + p->metafont = 0; + time2a(meta->date, buf, DATESIZ); term_vspace(p); @@ -939,26 +925,19 @@ print_man_foot(struct termp *p, const struct man_meta static void -print_man_head(struct termp *p, const struct man_meta *meta) +print_man_head(struct termp *p, const struct man_meta *m) { - char *buf, *title; + char buf[BUFSIZ], title[BUFSIZ]; p->rmargin = p->maxrmargin; p->offset = 0; + buf[0] = title[0] = '\0'; - if (NULL == (buf = malloc(p->rmargin))) - err(EXIT_FAILURE, "malloc"); - if (NULL == (title = malloc(p->rmargin))) - err(EXIT_FAILURE, "malloc"); + if (m->vol) + strlcpy(buf, m->vol, BUFSIZ); - if (meta->vol) - (void)strlcpy(buf, meta->vol, p->rmargin); - else - *buf = 0; + snprintf(title, BUFSIZ, "%s(%d)", m->title, m->msec); - (void)snprintf(title, p->rmargin, "%s(%d)", - meta->title, meta->msec); - p->offset = 0; p->rmargin = (p->maxrmargin - strlen(buf) + 1) / 2; p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; @@ -984,8 +963,4 @@ print_man_head(struct termp *p, const struct man_meta p->rmargin = p->maxrmargin; p->offset = 0; p->flags &= ~TERMP_NOSPACE; - - free(title); - free(buf); } -