aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/man_term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2011-11-13 15:33:41 +0000
committerIngo Schwarze <schwarze@openbsd.org>2011-11-13 15:33:41 +0000
commitee8f80a2285cf242861f49768d05d2efe5c1688b (patch)
tree29b216c5e5e3611ae725c1c718844e17629c21bf /man_term.c
parentfc20b89e875637ef8c018d55be7c92dffd5f2838 (diff)
downloadmandoc-ee8f80a2285cf242861f49768d05d2efe5c1688b.tar.gz
mandoc-ee8f80a2285cf242861f49768d05d2efe5c1688b.tar.zst
mandoc-ee8f80a2285cf242861f49768d05d2efe5c1688b.zip
Make the man(7) page footer the same as in groff.
Diffstat (limited to 'man_term.c')
-rw-r--r--man_term.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/man_term.c b/man_term.c
index 63662337..73178879 100644
--- a/man_term.c
+++ b/man_term.c
@@ -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.123 2011/11/13 15:33:41 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -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,28 +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->msec);
+ datelen = term_strlen(p, meta->date);
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
- p->rmargin = p->maxrmargin - term_strlen(p, meta->date);
p->offset = 0;
-
- /* term_strlen() can return zero. */
- if (p->rmargin == p->maxrmargin)
- p->rmargin--;
+ p->rmargin = (p->maxrmargin - datelen + term_len(p, 1)) / 2;
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->flags &= ~TERMP_NOBREAK;
+ p->rmargin = p->maxrmargin - term_strlen(p, title);
+ if (p->offset + datelen >= p->rmargin)
+ p->rmargin = p->offset + datelen;
term_word(p, meta->date);
term_flushln(p);
+
+ p->flags &= ~TERMP_NOBREAK;
+ p->flags |= TERMP_NOSPACE;
+ p->offset = p->rmargin;
+ p->rmargin = p->maxrmargin;
+
+ term_word(p, title);
+ term_flushln(p);
}