-/* $Id: man_term.c,v 1.29 2009/08/22 09:10:38 kristaps Exp $ */
+/* $Id: man_term.c,v 1.31 2009/09/16 09:41:24 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
static int arg_width(const struct man_node *);
-int
+void
man_run(struct termp *p, const struct man *m)
{
struct mtermp mt;
print_head(p, man_meta(m));
p->flags |= TERMP_NOSPACE;
- assert(man_node(m));
- assert(MAN_ROOT == man_node(m)->type);
mt.fl = 0;
mt.lmargin = INDENT;
if (man_node(m)->child)
print_body(p, &mt, man_node(m)->child, man_meta(m));
print_foot(p, man_meta(m));
-
- return(1);
}
pre_I(DECL_ARGS)
{
- p->flags |= TERMP_UNDER;
+ p->under++;
return(1);
}
pre_r(DECL_ARGS)
{
- p->flags &= ~TERMP_UNDER;
- p->flags &= ~TERMP_BOLD;
+ p->bold = p->under = 0;
return(1);
}
{
if (n->nchild)
- p->flags &= ~TERMP_UNDER;
+ p->under--;
}
post_I(DECL_ARGS)
{
- p->flags &= ~TERMP_UNDER;
+ p->under--;
}
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
if ( ! (i % 2))
- p->flags |= TERMP_UNDER;
+ p->under++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
if ( ! (i % 2))
- p->flags &= ~TERMP_UNDER;
+ p->under--;
}
return(0);
}
int i;
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
- p->flags |= i % 2 ? TERMP_BOLD : TERMP_UNDER;
+ if (i % 2)
+ p->bold++;
+ else
+ p->under++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
- p->flags &= i % 2 ? ~TERMP_BOLD : ~TERMP_UNDER;
+ if (i % 2)
+ p->bold--;
+ else
+ p->under--;
}
return(0);
}
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
if (i % 2)
- p->flags |= TERMP_BOLD;
+ p->bold++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
if (i % 2)
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
}
return(0);
}
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
if ( ! (i % 2))
- p->flags |= TERMP_UNDER;
+ p->under++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
if ( ! (i % 2))
- p->flags &= ~TERMP_UNDER;
+ p->under--;
}
return(0);
}
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
if ( ! (i % 2))
- p->flags |= TERMP_BOLD;
+ p->bold++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
if ( ! (i % 2))
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
}
return(0);
}
int i;
for (i = 0, nn = n->child; nn; nn = nn->next, i++) {
- p->flags |= i % 2 ? TERMP_UNDER : TERMP_BOLD;
+ if (i % 2)
+ p->under++;
+ else
+ p->bold++;
if (i > 0)
p->flags |= TERMP_NOSPACE;
print_node(p, mt, nn, m);
- p->flags &= i % 2 ? ~TERMP_UNDER : ~TERMP_BOLD;
+ if (i % 2)
+ p->under--;
+ else
+ p->bold--;
}
return(0);
}
pre_B(DECL_ARGS)
{
- p->flags |= TERMP_BOLD;
+ p->bold++;
return(1);
}
post_B(DECL_ARGS)
{
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
}
term_vspace(p);
break;
case (MAN_HEAD):
- p->flags |= TERMP_BOLD;
+ p->bold++;
p->offset = HALFINDENT;
break;
case (MAN_BODY):
switch (n->type) {
case (MAN_HEAD):
term_newln(p);
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
break;
case (MAN_BODY):
term_newln(p);
term_vspace(p);
break;
case (MAN_HEAD):
- p->flags |= TERMP_BOLD;
+ p->bold++;
p->offset = 0;
break;
case (MAN_BODY):
switch (n->type) {
case (MAN_HEAD):
term_newln(p);
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
break;
case (MAN_BODY):
term_newln(p);
char *buf;
if (NULL == (buf = malloc(p->rmargin)))
- err(1, "malloc");
+ err(EXIT_FAILURE, "malloc");
tm = localtime(&meta->date);
if (0 == strftime(buf, p->rmargin, "%B %d, %Y", tm))
- err(1, "strftime");
+ err(EXIT_FAILURE, "strftime");
term_vspace(p);
p->offset = 0;
if (NULL == (buf = malloc(p->rmargin)))
- err(1, "malloc");
+ err(EXIT_FAILURE, "malloc");
if (NULL == (title = malloc(p->rmargin)))
- err(1, "malloc");
+ err(EXIT_FAILURE, "malloc");
if (meta->vol)
(void)strlcpy(buf, meta->vol, p->rmargin);