version 1.1, 2009/03/26 14:38:11 |
version 1.3, 2009/03/26 15:19:44 |
|
|
#include "term.h" |
#include "term.h" |
#include "man.h" |
#include "man.h" |
|
|
|
#ifdef __linux__ |
|
extern size_t strlcpy(char *, const char *, size_t); |
|
extern size_t strlcat(char *, const char *, size_t); |
|
#endif |
|
|
#define DECL_ARGS struct termp *p, \ |
#define DECL_ARGS struct termp *p, \ |
const struct man_node *n, \ |
const struct man_node *n, \ |
const struct man_meta *m |
const struct man_meta *m |
|
|
}; |
}; |
|
|
static int pre_B(DECL_ARGS); |
static int pre_B(DECL_ARGS); |
|
static int pre_BI(DECL_ARGS); |
|
static int pre_BR(DECL_ARGS); |
static int pre_I(DECL_ARGS); |
static int pre_I(DECL_ARGS); |
|
static int pre_IB(DECL_ARGS); |
|
static int pre_IR(DECL_ARGS); |
static int pre_PP(DECL_ARGS); |
static int pre_PP(DECL_ARGS); |
|
static int pre_RB(DECL_ARGS); |
|
static int pre_RI(DECL_ARGS); |
static int pre_SH(DECL_ARGS); |
static int pre_SH(DECL_ARGS); |
static int pre_SS(DECL_ARGS); |
static int pre_SS(DECL_ARGS); |
static int pre_TP(DECL_ARGS); |
static int pre_TP(DECL_ARGS); |
Line 59 static const struct termact termacts[MAN_MAX] = { |
|
Line 70 static const struct termact termacts[MAN_MAX] = { |
|
{ pre_PP, NULL }, /* HP */ /* XXX */ |
{ pre_PP, NULL }, /* HP */ /* XXX */ |
{ NULL, NULL }, /* SM */ |
{ NULL, NULL }, /* SM */ |
{ pre_B, post_B }, /* SB */ |
{ pre_B, post_B }, /* SB */ |
{ NULL, NULL }, /* BI */ |
{ pre_BI, NULL }, /* BI */ |
{ NULL, NULL }, /* IB */ |
{ pre_IB, NULL }, /* IB */ |
{ NULL, NULL }, /* BR */ |
{ pre_BR, NULL }, /* BR */ |
{ NULL, NULL }, /* RB */ |
{ pre_RB, NULL }, /* RB */ |
{ NULL, NULL }, /* R */ |
{ NULL, NULL }, /* R */ |
{ pre_B, post_B }, /* B */ |
{ pre_B, post_B }, /* B */ |
{ pre_I, post_I }, /* I */ |
{ pre_I, post_I }, /* I */ |
{ NULL, NULL }, /* IR */ |
{ pre_IR, NULL }, /* IR */ |
{ NULL, NULL }, /* RI */ |
{ pre_RI, NULL }, /* RI */ |
}; |
}; |
|
|
static void print_head(struct termp *, |
static void print_head(struct termp *, |
Line 91 man_run(struct termp *p, const struct man *m) |
|
Line 102 man_run(struct termp *p, const struct man *m) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
pre_I(DECL_ARGS) |
pre_I(DECL_ARGS) |
{ |
{ |
Line 100 pre_I(DECL_ARGS) |
|
Line 112 pre_I(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static void |
static void |
post_I(DECL_ARGS) |
post_I(DECL_ARGS) |
{ |
{ |
Line 108 post_I(DECL_ARGS) |
|
Line 121 post_I(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
|
pre_IR(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
if ( ! (i % 2)) |
|
p->flags |= TERMP_UNDER; |
|
print_node(p, nn, m); |
|
if ( ! (i % 2)) |
|
p->flags &= ~TERMP_UNDER; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
pre_IB(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
p->flags |= i % 2 ? TERMP_BOLD : TERMP_UNDER; |
|
print_node(p, nn, m); |
|
p->flags &= i % 2 ? ~TERMP_BOLD : ~TERMP_UNDER; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
pre_RB(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
if (i % 2) |
|
p->flags |= TERMP_BOLD; |
|
print_node(p, nn, m); |
|
if (i % 2) |
|
p->flags &= ~TERMP_BOLD; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
pre_RI(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
if ( ! (i % 2)) |
|
p->flags |= TERMP_UNDER; |
|
print_node(p, nn, m); |
|
if ( ! (i % 2)) |
|
p->flags &= ~TERMP_UNDER; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
pre_BR(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
if ( ! (i % 2)) |
|
p->flags |= TERMP_BOLD; |
|
print_node(p, nn, m); |
|
if ( ! (i % 2)) |
|
p->flags &= ~TERMP_BOLD; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
pre_BI(DECL_ARGS) |
|
{ |
|
const struct man_node *nn; |
|
int i; |
|
|
|
for (i = 0, nn = n->child; nn; nn = nn->next, i++) { |
|
p->flags |= i % 2 ? TERMP_UNDER : TERMP_BOLD; |
|
print_node(p, nn, m); |
|
p->flags &= i % 2 ? ~TERMP_UNDER : ~TERMP_BOLD; |
|
} |
|
return(0); |
|
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
pre_B(DECL_ARGS) |
pre_B(DECL_ARGS) |
{ |
{ |
|
|
Line 117 pre_B(DECL_ARGS) |
|
Line 235 pre_B(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static void |
static void |
post_B(DECL_ARGS) |
post_B(DECL_ARGS) |
{ |
{ |
Line 125 post_B(DECL_ARGS) |
|
Line 244 post_B(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
pre_PP(DECL_ARGS) |
pre_PP(DECL_ARGS) |
{ |
{ |
Line 135 pre_PP(DECL_ARGS) |
|
Line 255 pre_PP(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
pre_TP(DECL_ARGS) |
pre_TP(DECL_ARGS) |
{ |
{ |
Line 150 pre_TP(DECL_ARGS) |
|
Line 271 pre_TP(DECL_ARGS) |
|
if (nn->line == n->line) { |
if (nn->line == n->line) { |
if (MAN_TEXT != nn->type) |
if (MAN_TEXT != nn->type) |
errx(1, "expected text line argument"); |
errx(1, "expected text line argument"); |
offs = atoi(nn->string); |
offs = (size_t)atoi(nn->string); |
nn = nn->next; |
nn = nn->next; |
} else |
} else |
offs = INDENT; |
offs = INDENT; |
Line 165 pre_TP(DECL_ARGS) |
|
Line 286 pre_TP(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
pre_SS(DECL_ARGS) |
pre_SS(DECL_ARGS) |
{ |
{ |
Line 175 pre_SS(DECL_ARGS) |
|
Line 297 pre_SS(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static void |
static void |
post_SS(DECL_ARGS) |
post_SS(DECL_ARGS) |
{ |
{ |
Line 185 post_SS(DECL_ARGS) |
|
Line 308 post_SS(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
pre_SH(DECL_ARGS) |
pre_SH(DECL_ARGS) |
{ |
{ |
Line 196 pre_SH(DECL_ARGS) |
|
Line 320 pre_SH(DECL_ARGS) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static void |
static void |
post_SH(DECL_ARGS) |
post_SH(DECL_ARGS) |
{ |
{ |