version 1.9, 2009/06/11 12:07:49 |
version 1.13, 2009/06/15 20:26:47 |
Line 86 struct termpair { |
|
Line 86 struct termpair { |
|
struct termpair *ppair; |
struct termpair *ppair; |
int type; |
int type; |
#define TERMPAIR_FLAG (1 << 0) |
#define TERMPAIR_FLAG (1 << 0) |
int flag; |
int flag; /* Whether being used. */ |
size_t offset; |
size_t offset; /* Left margin. */ |
size_t rmargin; |
size_t rmargin; /* Right margin. */ |
int count; |
int count; /* Enum count. */ |
}; |
}; |
|
|
#define TERMPAIR_SETFLAG(termp, p, fl) \ |
#define TERMPAIR_SETFLAG(termp, p, fl) \ |
Line 415 print_foot(struct termp *p, const struct mdoc_meta *me |
|
Line 415 print_foot(struct termp *p, const struct mdoc_meta *me |
|
|
|
tm = localtime(&meta->date); |
tm = localtime(&meta->date); |
|
|
#ifdef __OpenBSD__ |
|
if (NULL == strftime(buf, p->rmargin, "%B %d, %Y", tm)) |
|
#else |
|
if (0 == strftime(buf, p->rmargin, "%B %d, %Y", tm)) |
if (0 == strftime(buf, p->rmargin, "%B %d, %Y", tm)) |
#endif |
|
err(1, "strftime"); |
err(1, "strftime"); |
|
|
(void)strlcpy(os, meta->os, p->rmargin); |
(void)strlcpy(os, meta->os, p->rmargin); |
Line 592 arg_listtype(const struct mdoc_node *n) |
|
Line 588 arg_listtype(const struct mdoc_node *n) |
|
break; |
break; |
} |
} |
|
|
|
/* FIXME: mandated by parser. */ |
|
|
errx(1, "list type not supported"); |
errx(1, "list type not supported"); |
/* NOTREACHED */ |
/* NOTREACHED */ |
} |
} |
Line 602 arg_offset(const struct mdoc_argv *arg) |
|
Line 600 arg_offset(const struct mdoc_argv *arg) |
|
{ |
{ |
|
|
assert(*arg->value); |
assert(*arg->value); |
|
if (0 == strcmp(*arg->value, "left")) |
|
return(0); |
if (0 == strcmp(*arg->value, "indent")) |
if (0 == strcmp(*arg->value, "indent")) |
return(INDENT); |
return(INDENT); |
if (0 == strcmp(*arg->value, "indent-two")) |
if (0 == strcmp(*arg->value, "indent-two")) |
return(INDENT * 2); |
return(INDENT * 2); |
|
|
|
/* FIXME: needs to support field-widths (10n, etc.). */ |
|
|
return(strlen(*arg->value)); |
return(strlen(*arg->value)); |
} |
} |
|
|
Line 1067 termp_rv_pre(DECL_ARGS) |
|
Line 1070 termp_rv_pre(DECL_ARGS) |
|
{ |
{ |
int i; |
int i; |
|
|
|
/* FIXME: mandated by parser. */ |
|
|
if (-1 == (i = arg_getattr(MDOC_Std, node))) |
if (-1 == (i = arg_getattr(MDOC_Std, node))) |
errx(1, "expected -std argument"); |
errx(1, "expected -std argument"); |
if (1 != node->args->argv[i].sz) |
if (1 != node->args->argv[i].sz) |
Line 1100 termp_ex_pre(DECL_ARGS) |
|
Line 1105 termp_ex_pre(DECL_ARGS) |
|
{ |
{ |
int i; |
int i; |
|
|
|
/* FIXME: mandated by parser? */ |
|
|
if (-1 == (i = arg_getattr(MDOC_Std, node))) |
if (-1 == (i = arg_getattr(MDOC_Std, node))) |
errx(1, "expected -std argument"); |
errx(1, "expected -std argument"); |
if (1 != node->args->argv[i].sz) |
if (1 != node->args->argv[i].sz) |
Line 1153 termp_xr_pre(DECL_ARGS) |
|
Line 1160 termp_xr_pre(DECL_ARGS) |
|
{ |
{ |
const struct mdoc_node *n; |
const struct mdoc_node *n; |
|
|
if (NULL == (n = node->child)) |
assert(node->child && MDOC_TEXT == node->child->type); |
errx(1, "expected text line argument"); |
n = node->child; |
|
|
term_word(p, n->string); |
term_word(p, n->string); |
if (NULL == (n = n->next)) |
if (NULL == (n = n->next)) |
return(0); |
return(0); |
Line 1288 termp_lb_pre(DECL_ARGS) |
|
Line 1296 termp_lb_pre(DECL_ARGS) |
|
{ |
{ |
const char *lb; |
const char *lb; |
|
|
if (NULL == node->child) |
assert(node->child && MDOC_TEXT == node->child->type); |
errx(1, "expected text line argument"); |
|
if ((lb = mdoc_a2lib(node->child->string))) { |
if ((lb = mdoc_a2lib(node->child->string))) { |
term_word(p, lb); |
term_word(p, lb); |
return(0); |
return(0); |
Line 1397 termp_fn_pre(DECL_ARGS) |
|
Line 1404 termp_fn_pre(DECL_ARGS) |
|
{ |
{ |
const struct mdoc_node *n; |
const struct mdoc_node *n; |
|
|
if (NULL == node->child) |
assert(node->child && MDOC_TEXT == node->child->type); |
errx(1, "expected text line arguments"); |
|
|
|
/* FIXME: can be "type funcname" "type varname"... */ |
/* FIXME: can be "type funcname" "type varname"... */ |
|
|
Line 1505 termp_bd_pre(DECL_ARGS) |
|
Line 1511 termp_bd_pre(DECL_ARGS) |
|
else if (MDOC_BODY != node->type) |
else if (MDOC_BODY != node->type) |
return(1); |
return(1); |
|
|
|
/* FIXME: display type should be mandated by parser. */ |
|
|
if (NULL == node->parent->args) |
if (NULL == node->parent->args) |
errx(1, "missing display type"); |
errx(1, "missing display type"); |
|
|
Line 1953 termp_fo_pre(DECL_ARGS) |
|
Line 1961 termp_fo_pre(DECL_ARGS) |
|
|
|
p->flags |= ttypes[TTYPE_FUNC_NAME]; |
p->flags |= ttypes[TTYPE_FUNC_NAME]; |
for (n = node->child; n; n = n->next) { |
for (n = node->child; n; n = n->next) { |
if (MDOC_TEXT != n->type) |
assert(MDOC_TEXT == n->type); |
errx(1, "expected text line argument"); |
|
term_word(p, n->string); |
term_word(p, n->string); |
} |
} |
p->flags &= ~ttypes[TTYPE_FUNC_NAME]; |
p->flags &= ~ttypes[TTYPE_FUNC_NAME]; |
Line 1998 termp_bf_pre(DECL_ARGS) |
|
Line 2005 termp_bf_pre(DECL_ARGS) |
|
return(1); |
return(1); |
} |
} |
|
|
if (MDOC_TEXT != n->type) |
assert(MDOC_TEXT == n->type); |
errx(1, "expected text line arguments"); |
|
|
|
if (0 == strcmp("Em", n->string)) |
if (0 == strcmp("Em", n->string)) |
TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_EMPH]); |
TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_EMPH]); |
else if (0 == strcmp("Sy", n->string)) |
else if (0 == strcmp("Sy", n->string)) |
|
|
termp_sm_pre(DECL_ARGS) |
termp_sm_pre(DECL_ARGS) |
{ |
{ |
|
|
if (NULL == node->child || MDOC_TEXT != node->child->type) |
assert(node->child && MDOC_TEXT == node->child->type); |
errx(1, "expected boolean line argument"); |
|
|
|
if (0 == strcmp("on", node->child->string)) { |
if (0 == strcmp("on", node->child->string)) { |
p->flags &= ~TERMP_NONOSPACE; |
p->flags &= ~TERMP_NONOSPACE; |
p->flags &= ~TERMP_NOSPACE; |
p->flags &= ~TERMP_NOSPACE; |
Line 2109 termp_lk_pre(DECL_ARGS) |
|
Line 2112 termp_lk_pre(DECL_ARGS) |
|
{ |
{ |
const struct mdoc_node *n; |
const struct mdoc_node *n; |
|
|
if (NULL == (n = node->child)) |
assert(node->child); |
errx(1, "expected line argument"); |
n = node->child; |
|
|
|
if (NULL == n->next) { |
|
TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_LINK_ANCHOR]); |
|
return(1); |
|
} |
|
|
p->flags |= ttypes[TTYPE_LINK_ANCHOR]; |
p->flags |= ttypes[TTYPE_LINK_ANCHOR]; |
term_word(p, n->string); |
term_word(p, n->string); |
p->flags &= ~ttypes[TTYPE_LINK_ANCHOR]; |
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ":"); |
term_word(p, ":"); |
|
p->flags &= ~ttypes[TTYPE_LINK_ANCHOR]; |
|
|
p->flags |= ttypes[TTYPE_LINK_TEXT]; |
p->flags |= ttypes[TTYPE_LINK_TEXT]; |
for ( ; n; n = n->next) { |
for (n = n->next; n; n = n->next) |
term_word(p, n->string); |
term_word(p, n->string); |
} |
|
p->flags &= ~ttypes[TTYPE_LINK_TEXT]; |
|
|
|
|
p->flags &= ~ttypes[TTYPE_LINK_TEXT]; |
return(0); |
return(0); |
} |
} |
|
|