From d2d2bbc78704c441b2671fd83f2b9a164ddee7e4 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Tue, 20 Sep 2011 09:02:19 +0000 Subject: Sync print_mdoc_head to print_man_head; this was forgotten after man_term.c rev. 1.25 on March 2, 2010. The benefit is a sane page header line when .Dt is very long. Reminded by Thomas Klausner , thanks. --- usr.bin/mandoc/man_term.c | 10 +++++----- usr.bin/mandoc/mdoc_term.c | 39 +++++++++++++++++++++++---------------- 2 files changed, 28 insertions(+), 21 deletions(-) (limited to 'usr.bin/mandoc') diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c index f6649d314d8..1e63899fa17 100644 --- a/usr.bin/mandoc/man_term.c +++ b/usr.bin/mandoc/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.72 2011/09/19 22:36:11 schwarze Exp $ */ +/* $Id: man_term.c,v 1.73 2011/09/20 09:02:18 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2011 Ingo Schwarze @@ -1003,9 +1003,9 @@ print_man_head(struct termp *p, const void *arg) * point we did so here. */ + p->offset = 0; p->rmargin = p->maxrmargin; - p->offset = 0; buf[0] = title[0] = '\0'; if (m->vol) @@ -1015,12 +1015,12 @@ print_man_head(struct termp *p, const void *arg) snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec); titlen = term_strlen(p, title); + p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; p->offset = 0; p->rmargin = 2 * (titlen+1) + buflen < p->maxrmargin ? (p->maxrmargin - term_strlen(p, buf) + term_len(p, 1)) / 2 : p->maxrmargin - buflen; - p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; term_word(p, title); term_flushln(p); @@ -1042,9 +1042,9 @@ print_man_head(struct termp *p, const void *arg) term_flushln(p); } - p->rmargin = p->maxrmargin; - p->offset = 0; p->flags &= ~TERMP_NOSPACE; + p->offset = 0; + p->rmargin = p->maxrmargin; /* * Groff likes to have some leading spaces before content. Well diff --git a/usr.bin/mandoc/mdoc_term.c b/usr.bin/mandoc/mdoc_term.c index 90bdba97ef6..640847207da 100644 --- a/usr.bin/mandoc/mdoc_term.c +++ b/usr.bin/mandoc/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.136 2011/09/19 22:36:11 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.137 2011/09/20 09:02:18 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010 Ingo Schwarze @@ -454,13 +454,11 @@ static void print_mdoc_head(struct termp *p, const void *arg) { char buf[BUFSIZ], title[BUFSIZ]; + size_t buflen, titlen; const struct mdoc_meta *m; m = (const struct mdoc_meta *)arg; - p->rmargin = p->maxrmargin; - p->offset = 0; - /* * The header is strange. It has three components, which are * really two with the first duplicated. It goes like this: @@ -474,8 +472,12 @@ print_mdoc_head(struct termp *p, const void *arg) * switches on the manual section. */ + p->offset = 0; + p->rmargin = p->maxrmargin; + assert(m->vol); strlcpy(buf, m->vol, BUFSIZ); + buflen = term_strlen(p, buf); if (m->arch) { strlcat(buf, " (", BUFSIZ); @@ -484,33 +486,38 @@ print_mdoc_head(struct termp *p, const void *arg) } snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec); + titlen = term_strlen(p, title); - p->offset = 0; - p->rmargin = (p->maxrmargin - - term_strlen(p, buf) + term_len(p, 1)) / 2; p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; + p->offset = 0; + p->rmargin = 2 * (titlen+1) + buflen < p->maxrmargin ? + (p->maxrmargin - + term_strlen(p, buf) + term_len(p, 1)) / 2 : + p->maxrmargin - buflen; term_word(p, title); term_flushln(p); - p->offset = p->rmargin; - p->rmargin = p->maxrmargin - term_strlen(p, title); p->flags |= TERMP_NOSPACE; + p->offset = p->rmargin; + p->rmargin = p->offset + buflen + titlen < p->maxrmargin ? + p->maxrmargin - titlen : p->maxrmargin; term_word(p, buf); term_flushln(p); - p->offset = p->rmargin; - p->rmargin = p->maxrmargin; p->flags &= ~TERMP_NOBREAK; - p->flags |= TERMP_NOSPACE; - - term_word(p, title); - term_flushln(p); + if (p->rmargin + titlen <= p->maxrmargin) { + p->flags |= TERMP_NOSPACE; + p->offset = p->rmargin; + p->rmargin = p->maxrmargin; + term_word(p, title); + term_flushln(p); + } + p->flags &= ~TERMP_NOSPACE; p->offset = 0; p->rmargin = p->maxrmargin; - p->flags &= ~TERMP_NOSPACE; } -- cgit v1.2.3