-/* $Id: man_term.c,v 1.68 2010/05/15 22:44:04 kristaps Exp $ */
+/* $Id: man_term.c,v 1.73 2010/06/07 20:57:09 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
#include <stdlib.h>
#include <string.h>
+#include "mandoc.h"
#include "out.h"
#include "man.h"
#include "term.h"
static int a2width(const struct man_node *);
static int a2height(const struct man_node *);
-static void print_man_head(struct termp *,
- const struct man_meta *);
+static void print_man_head(struct termp *, const void *);
static void print_man_nodelist(DECL_ARGS);
static void print_man_node(DECL_ARGS);
-static void print_man_foot(struct termp *,
- const struct man_meta *);
+static void print_man_foot(struct termp *, const void *);
static void print_bvspace(struct termp *,
const struct man_node *);
{ pre_sp, NULL, MAN_NOTEXT }, /* Sp */
{ pre_nf, NULL, 0 }, /* Vb */
{ pre_fi, NULL, 0 }, /* Ve */
+ { pre_ign, NULL, 0 }, /* AT */
};
p->overstep = 0;
p->maxrmargin = p->defrmargin;
+ term_begin(p, print_man_head, print_man_foot, man_meta(man));
+
if (NULL == p->symtab)
switch (p->enc) {
case (TERMENC_ASCII):
n = man_node(man);
m = man_meta(man);
- print_man_head(p, m);
p->flags |= TERMP_NOSPACE;
mt.fl = 0;
if (n->child)
print_man_nodelist(p, &mt, n->child, m);
- print_man_foot(p, m);
+
+ term_end(p);
}
static void
-print_man_foot(struct termp *p, const struct man_meta *meta)
+print_man_foot(struct termp *p, const void *arg)
{
char buf[DATESIZ];
+ const struct man_meta *meta;
+
+ meta = (const struct man_meta *)arg;
term_fontrepl(p, TERMFONT_NONE);
- time2a(meta->date, buf, DATESIZ);
+ if (meta->rawdate)
+ strlcpy(buf, meta->rawdate, DATESIZ);
+ else
+ time2a(meta->date, buf, DATESIZ);
term_vspace(p);
+ term_vspace(p);
+ term_vspace(p);
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
p->rmargin = p->maxrmargin - strlen(buf);
static void
-print_man_head(struct termp *p, const struct man_meta *m)
+print_man_head(struct termp *p, const void *arg)
{
char buf[BUFSIZ], title[BUFSIZ];
size_t buflen, titlen;
+ const struct man_meta *m;
+
+ m = (const struct man_meta *)arg;
/*
* Note that old groff would spit out some spaces before the