]> git.cameronkatri.com Git - mandoc.git/commitdiff
Make the man(7) page footer the same as in groff.
authorIngo Schwarze <schwarze@openbsd.org>
Sun, 13 Nov 2011 15:33:41 +0000 (15:33 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Sun, 13 Nov 2011 15:33:41 +0000 (15:33 +0000)
man_term.c

index 63662337a246d5818103aaa3bca34180904d1205..73178879467a1cd4ec5ee753ac4a2c611f740519 100644 (file)
@@ -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);
 }