=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.122 retrieving revision 1.124 diff -u -p -r1.122 -r1.124 --- mandoc/man_term.c 2011/11/13 13:15:14 1.122 +++ mandoc/man_term.c 2011/11/18 17:04:06 1.124 @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.122 2011/11/13 13:15:14 schwarze Exp $ */ +/* $Id: man_term.c,v 1.124 2011/11/18 17:04:06 joerg Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011 Ingo Schwarze @@ -958,6 +958,8 @@ print_man_nodelist(DECL_ARGS) static void print_man_foot(struct termp *p, const void *arg) { + char title[BUFSIZ]; + size_t datelen; const struct man_meta *meta; meta = (const struct man_meta *)arg; @@ -967,27 +969,33 @@ print_man_foot(struct termp *p, const void *arg) term_vspace(p); term_vspace(p); term_vspace(p); + snprintf(title, BUFSIZ, "%s(%s)", meta->title ? meta->title : "", + meta->msec ? meta->msec : ""); + datelen = term_strlen(p, meta->date ? meta->date : ""); p->flags |= TERMP_NOSPACE | TERMP_NOBREAK; - p->rmargin = p->maxrmargin - term_strlen(p, meta->date); p->offset = 0; + p->rmargin = (p->maxrmargin - datelen + term_len(p, 1)) / 2; - /* term_strlen() can return zero. */ - if (p->rmargin == p->maxrmargin) - p->rmargin--; - if (meta->source) term_word(p, meta->source); - if (meta->source) - term_word(p, ""); term_flushln(p); p->flags |= TERMP_NOSPACE; p->offset = p->rmargin; - p->rmargin = p->maxrmargin; + p->rmargin = p->maxrmargin - term_strlen(p, title); + if (p->offset + datelen >= p->rmargin) + p->rmargin = p->offset + datelen; + + term_word(p, meta->date ? meta->date : ""); + term_flushln(p); + p->flags &= ~TERMP_NOBREAK; + p->flags |= TERMP_NOSPACE; + p->offset = p->rmargin; + p->rmargin = p->maxrmargin; - term_word(p, meta->date); + term_word(p, title); term_flushln(p); } @@ -1016,7 +1024,8 @@ print_man_head(struct termp *p, const void *arg) strlcpy(buf, m->vol, BUFSIZ); buflen = term_strlen(p, buf); - snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec); + snprintf(title, BUFSIZ, "%s(%s)", m->title ? m->title : "", + m->msec ? m->msec : ""); titlen = term_strlen(p, title); p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;