-/* $Id: man_term.c,v 1.29 2009/08/22 09:10:38 kristaps Exp $ */
+/* $Id: man_term.c,v 1.30 2009/09/15 08:16:20 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
#include <assert.h>
#include <ctype.h>
-#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern size_t strlcat(char *, const char *, size_t);
#endif
-static void print_head(struct termp *,
+static int print_head(struct termp *,
const struct man_meta *);
static void print_body(DECL_ARGS);
static void print_node(DECL_ARGS);
-static void print_foot(struct termp *,
+static int print_foot(struct termp *,
const struct man_meta *);
static void fmt_block_vspace(struct termp *,
const struct man_node *);
{
struct mtermp mt;
- print_head(p, man_meta(m));
+ if ( ! print_head(p, man_meta(m)))
+ return(0);
p->flags |= TERMP_NOSPACE;
assert(man_node(m));
assert(MAN_ROOT == man_node(m)->type);
if (man_node(m)->child)
print_body(p, &mt, man_node(m)->child, man_meta(m));
- print_foot(p, man_meta(m));
+ if ( ! print_foot(p, man_meta(m)))
+ return(0);
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);
}
-static void
+static int
print_foot(struct termp *p, const struct man_meta *meta)
{
struct tm *tm;
char *buf;
if (NULL == (buf = malloc(p->rmargin)))
- err(1, "malloc");
+ return(0);
tm = localtime(&meta->date);
if (0 == strftime(buf, p->rmargin, "%B %d, %Y", tm))
- err(1, "strftime");
+ buf[0] = 0;
term_vspace(p);
term_flushln(p);
free(buf);
+ return(1);
}
-static void
+static int
print_head(struct termp *p, const struct man_meta *meta)
{
char *buf, *title;
p->offset = 0;
if (NULL == (buf = malloc(p->rmargin)))
- err(1, "malloc");
+ return(0);
if (NULL == (title = malloc(p->rmargin)))
- err(1, "malloc");
+ return(0);
if (meta->vol)
(void)strlcpy(buf, meta->vol, p->rmargin);
free(title);
free(buf);
+ return(1);
}
-/* $Id: mdoc_term.c,v 1.68 2009/08/20 13:22:48 kristaps Exp $ */
+/* $Id: mdoc_term.c,v 1.69 2009/09/15 08:16:20 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
#define INDENT 5
#define HALFINDENT 3
-#define TTYPE_PROG 0
-#define TTYPE_CMD_FLAG 1
-#define TTYPE_CMD_ARG 2
-#define TTYPE_SECTION 3
-#define TTYPE_FUNC_DECL 4
-#define TTYPE_VAR_DECL 5
-#define TTYPE_FUNC_TYPE 6
-#define TTYPE_FUNC_NAME 7
-#define TTYPE_FUNC_ARG 8
-#define TTYPE_LINK 9
-#define TTYPE_SSECTION 10
-#define TTYPE_FILE 11
-#define TTYPE_EMPH 12
-#define TTYPE_CONFIG 13
-#define TTYPE_CMD 14
-#define TTYPE_INCLUDE 15
-#define TTYPE_SYMB 16
-#define TTYPE_SYMBOL 17
-#define TTYPE_DIAG 18
-#define TTYPE_LINK_ANCHOR 19
-#define TTYPE_LINK_TEXT 20
-#define TTYPE_REF_JOURNAL 21
-#define TTYPE_REF_TITLE 22
-#define TTYPE_LIST 23
-#define TTYPE_NMAX 24
-
-const int ttypes[TTYPE_NMAX] = {
- TERMP_BOLD, /* TTYPE_PROG */
- TERMP_BOLD, /* TTYPE_CMD_FLAG */
- TERMP_UNDER, /* TTYPE_CMD_ARG */
- TERMP_BOLD, /* TTYPE_SECTION */
- TERMP_BOLD, /* TTYPE_FUNC_DECL */
- TERMP_UNDER, /* TTYPE_VAR_DECL */
- TERMP_UNDER, /* TTYPE_FUNC_TYPE */
- TERMP_BOLD, /* TTYPE_FUNC_NAME */
- TERMP_UNDER, /* TTYPE_FUNC_ARG */
- TERMP_UNDER, /* TTYPE_LINK */
- TERMP_BOLD, /* TTYPE_SSECTION */
- TERMP_UNDER, /* TTYPE_FILE */
- TERMP_UNDER, /* TTYPE_EMPH */
- TERMP_BOLD, /* TTYPE_CONFIG */
- TERMP_BOLD, /* TTYPE_CMD */
- TERMP_BOLD, /* TTYPE_INCLUDE */
- TERMP_BOLD, /* TTYPE_SYMB */
- TERMP_BOLD, /* TTYPE_SYMBOL */
- TERMP_BOLD, /* TTYPE_DIAG */
- TERMP_UNDER, /* TTYPE_LINK_ANCHOR */
- TERMP_BOLD, /* TTYPE_LINK_TEXT */
- TERMP_UNDER, /* TTYPE_REF_JOURNAL */
- TERMP_UNDER, /* TTYPE_REF_TITLE */
- TERMP_BOLD /* TTYPE_LIST */
-};
-
struct termpair {
struct termpair *ppair;
int flag;
static void termp_ss_post(DECL_ARGS);
static void termp_vt_post(DECL_ARGS);
-static int termp__j_pre(DECL_ARGS);
-static int termp__t_pre(DECL_ARGS);
static int termp_an_pre(DECL_ARGS);
static int termp_ap_pre(DECL_ARGS);
static int termp_aq_pre(DECL_ARGS);
-static int termp_ar_pre(DECL_ARGS);
static int termp_bd_pre(DECL_ARGS);
static int termp_bf_pre(DECL_ARGS);
+static int termp_bold_pre(DECL_ARGS);
static int termp_bq_pre(DECL_ARGS);
static int termp_br_pre(DECL_ARGS);
static int termp_brq_pre(DECL_ARGS);
static int termp_bt_pre(DECL_ARGS);
static int termp_cd_pre(DECL_ARGS);
-static int termp_cm_pre(DECL_ARGS);
static int termp_d1_pre(DECL_ARGS);
static int termp_dq_pre(DECL_ARGS);
-static int termp_em_pre(DECL_ARGS);
static int termp_ex_pre(DECL_ARGS);
static int termp_fa_pre(DECL_ARGS);
-static int termp_fd_pre(DECL_ARGS);
static int termp_fl_pre(DECL_ARGS);
static int termp_fn_pre(DECL_ARGS);
static int termp_fo_pre(DECL_ARGS);
static int termp_ft_pre(DECL_ARGS);
-static int termp_ic_pre(DECL_ARGS);
static int termp_in_pre(DECL_ARGS);
static int termp_it_pre(DECL_ARGS);
static int termp_lk_pre(DECL_ARGS);
-static int termp_ms_pre(DECL_ARGS);
-static int termp_mt_pre(DECL_ARGS);
static int termp_nd_pre(DECL_ARGS);
static int termp_nm_pre(DECL_ARGS);
static int termp_ns_pre(DECL_ARGS);
static int termp_op_pre(DECL_ARGS);
-static int termp_pa_pre(DECL_ARGS);
static int termp_pf_pre(DECL_ARGS);
static int termp_pp_pre(DECL_ARGS);
static int termp_pq_pre(DECL_ARGS);
static int termp_sp_pre(DECL_ARGS);
static int termp_sq_pre(DECL_ARGS);
static int termp_ss_pre(DECL_ARGS);
-static int termp_sx_pre(DECL_ARGS);
-static int termp_sy_pre(DECL_ARGS);
+static int termp_under_pre(DECL_ARGS);
static int termp_ud_pre(DECL_ARGS);
-static int termp_va_pre(DECL_ARGS);
-static int termp_vt_pre(DECL_ARGS);
static int termp_xr_pre(DECL_ARGS);
static int termp_xx_pre(DECL_ARGS);
{ termp_it_pre, termp_it_post }, /* It */
{ NULL, NULL }, /* Ad */
{ termp_an_pre, termp_an_post }, /* An */
- { termp_ar_pre, NULL }, /* Ar */
+ { termp_under_pre, NULL }, /* Ar */
{ termp_cd_pre, NULL }, /* Cd */
- { termp_cm_pre, NULL }, /* Cm */
+ { termp_bold_pre, NULL }, /* Cm */
{ NULL, NULL }, /* Dv */
{ NULL, NULL }, /* Er */
{ NULL, NULL }, /* Ev */
{ termp_ex_pre, NULL }, /* Ex */
{ termp_fa_pre, NULL }, /* Fa */
- { termp_fd_pre, termp_fd_post }, /* Fd */
+ { termp_bold_pre, termp_fd_post }, /* Fd */
{ termp_fl_pre, NULL }, /* Fl */
{ termp_fn_pre, termp_fn_post }, /* Fn */
{ termp_ft_pre, termp_ft_post }, /* Ft */
- { termp_ic_pre, NULL }, /* Ic */
+ { termp_bold_pre, NULL }, /* Ic */
{ termp_in_pre, termp_in_post }, /* In */
{ NULL, NULL }, /* Li */
{ termp_nd_pre, NULL }, /* Nd */
{ termp_nm_pre, NULL }, /* Nm */
{ termp_op_pre, termp_op_post }, /* Op */
{ NULL, NULL }, /* Ot */
- { termp_pa_pre, NULL }, /* Pa */
+ { termp_under_pre, NULL }, /* Pa */
{ termp_rv_pre, NULL }, /* Rv */
{ NULL, NULL }, /* St */
- { termp_va_pre, NULL }, /* Va */
- { termp_vt_pre, termp_vt_post }, /* Vt */
+ { termp_under_pre, NULL }, /* Va */
+ { termp_under_pre, termp_vt_post }, /* Vt */ /* FIXME: type name */
{ termp_xr_pre, NULL }, /* Xr */
{ NULL, termp____post }, /* %A */
{ NULL, termp____post }, /* %B */
{ NULL, termp____post }, /* %D */
{ NULL, termp____post }, /* %I */
- { termp__j_pre, termp____post }, /* %J */
+ { termp_under_pre, termp____post }, /* %J */
{ NULL, termp____post }, /* %N */
{ NULL, termp____post }, /* %O */
{ NULL, termp____post }, /* %P */
{ NULL, termp____post }, /* %R */
- { termp__t_pre, termp____post }, /* %T */
+ { termp_under_pre, termp____post }, /* %T */
{ NULL, termp____post }, /* %V */
{ NULL, NULL }, /* Ac */
{ termp_aq_pre, termp_aq_post }, /* Ao */
{ termp_dq_pre, termp_dq_post }, /* Dq */
{ NULL, NULL }, /* Ec */
{ NULL, NULL }, /* Ef */
- { termp_em_pre, NULL }, /* Em */
+ { termp_under_pre, NULL }, /* Em */
{ NULL, NULL }, /* Eo */
{ termp_xx_pre, NULL }, /* Fx */
- { termp_ms_pre, NULL }, /* Ms */
+ { termp_bold_pre, NULL }, /* Ms */
{ NULL, NULL }, /* No */
{ termp_ns_pre, NULL }, /* Ns */
{ termp_xx_pre, NULL }, /* Nx */
{ termp_sq_pre, termp_sq_post }, /* So */
{ termp_sq_pre, termp_sq_post }, /* Sq */
{ termp_sm_pre, NULL }, /* Sm */
- { termp_sx_pre, NULL }, /* Sx */
- { termp_sy_pre, NULL }, /* Sy */
+ { termp_under_pre, NULL }, /* Sx */
+ { termp_bold_pre, NULL }, /* Sy */
{ NULL, NULL }, /* Tn */
{ termp_xx_pre, NULL }, /* Ux */
{ NULL, NULL }, /* Xc */
{ NULL, termp_lb_post }, /* Lb */
{ termp_pp_pre, NULL }, /* Lp */
{ termp_lk_pre, NULL }, /* Lk */
- { termp_mt_pre, NULL }, /* Mt */
+ { termp_under_pre, NULL }, /* Mt */
{ termp_brq_pre, termp_brq_post }, /* Brq */
{ termp_brq_pre, termp_brq_post }, /* Bro */
{ NULL, NULL }, /* Brc */
static void
print_node(DECL_ARGS)
{
- int dochild;
+ int dochild, bold, under;
struct termpair npair;
size_t offset, rmargin;
dochild = 1;
offset = p->offset;
rmargin = p->rmargin;
+ bold = p->bold;
+ under = p->under;
npair.ppair = pair;
npair.flag = 0;
/* Children. */
- p->flags |= npair.flag;
-
if (dochild && node->child)
print_body(p, &npair, meta, node->child);
- p->flags &= ~npair.flag;
+ p->bold = bold;
+ p->under = under;
/* Post-processing. */
p->flags |= TERMP_NOSPACE;
- /*
- * Style flags. Diagnostic heads need TTYPE_DIAG.
- */
-
switch (type) {
case (MDOC_Diag):
if (MDOC_HEAD == node->type)
- p->flags |= ttypes[TTYPE_DIAG];
+ p->bold++;
break;
default:
break;
if (MDOC_HEAD == node->type)
switch (type) {
case (MDOC_Bullet):
- p->flags |= TERMP_BOLD;
+ p->bold++;
term_word(p, "\\[bu]");
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
break;
case (MDOC_Dash):
/* FALLTHROUGH */
case (MDOC_Hyphen):
- p->flags |= TERMP_BOLD;
+ p->bold++;
term_word(p, "\\(hy");
- p->flags &= ~TERMP_BOLD;
+ p->bold--;
break;
case (MDOC_Enum):
(pair->ppair->ppair->count)++;
if (SEC_SYNOPSIS == node->sec)
term_newln(p);
-
- pair->flag |= ttypes[TTYPE_PROG];
- p->flags |= ttypes[TTYPE_PROG];
-
+ p->bold++;
if (NULL == node->child)
term_word(p, meta->name);
-
return(1);
}
termp_fl_pre(DECL_ARGS)
{
- pair->flag |= ttypes[TTYPE_CMD_FLAG];
- p->flags |= ttypes[TTYPE_CMD_FLAG];
+ p->bold++;
term_word(p, "\\-");
p->flags |= TERMP_NOSPACE;
return(1);
}
-/* ARGSUSED */
-static int
-termp_ar_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_CMD_ARG];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_ns_pre(DECL_ARGS)
nn = node->child;
assert(nn);
for ( ; nn; nn = nn->next) {
- p->flags |= ttypes[TTYPE_FUNC_NAME];
+ p->bold++;
term_word(p, nn->string);
- p->flags &= ~ttypes[TTYPE_FUNC_NAME];
+ p->bold--;
p->flags |= TERMP_NOSPACE;
if (nn->next && NULL == nn->next->next)
term_word(p, "(), and");
term_word(p, "the value 0 if successful; otherwise the value "
"-1 is returned and the global variable");
- p->flags |= ttypes[TTYPE_VAR_DECL];
+ p->under++;
term_word(p, "errno");
- p->flags &= ~ttypes[TTYPE_VAR_DECL];
+ p->under--;
term_word(p, "is set to indicate the error.");
nn = node->child;
assert(nn);
for ( ; nn; nn = nn->next) {
- p->flags |= ttypes[TTYPE_PROG];
+ p->bold++;
term_word(p, nn->string);
- p->flags &= ~ttypes[TTYPE_PROG];
+ p->bold--;
p->flags |= TERMP_NOSPACE;
if (nn->next && NULL == nn->next->next)
term_word(p, ", and");
}
-/* ARGSUSED */
-static int
-termp_vt_pre(DECL_ARGS)
-{
-
- /* FIXME: this can be "type name". */
- pair->flag |= ttypes[TTYPE_VAR_DECL];
- return(1);
-}
-
-
/* ARGSUSED */
static void
termp_vt_post(DECL_ARGS)
/* ARGSUSED */
static int
-termp_fd_pre(DECL_ARGS)
+termp_bold_pre(DECL_ARGS)
{
- pair->flag |= ttypes[TTYPE_FUNC_DECL];
+ p->bold++;
return(1);
}
term_vspace(p);
break;
case (MDOC_HEAD):
- pair->flag |= ttypes[TTYPE_SECTION];
+ p->bold++;
break;
case (MDOC_BODY):
p->offset = INDENT;
if (SEC_SYNOPSIS == node->sec)
if (node->prev && MDOC_Fo == node->prev->tok)
term_vspace(p);
- pair->flag |= ttypes[TTYPE_FUNC_TYPE];
+ p->under++;
return(1);
}
/* FIXME: can be "type funcname" "type varname"... */
- p->flags |= ttypes[TTYPE_FUNC_NAME];
+ p->bold++;
term_word(p, node->child->string);
- p->flags &= ~ttypes[TTYPE_FUNC_NAME];
+ p->bold--;
p->flags |= TERMP_NOSPACE;
term_word(p, "(");
for (n = node->child->next; n; n = n->next) {
- p->flags |= ttypes[TTYPE_FUNC_ARG];
+ p->under++;
term_word(p, n->string);
- p->flags &= ~ttypes[TTYPE_FUNC_ARG];
+ p->under--;
if (n->next)
term_word(p, ",");
}
}
-/* ARGSUSED */
-static int
-termp_sx_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_LINK];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_fa_pre(DECL_ARGS)
struct mdoc_node *n;
if (node->parent->tok != MDOC_Fo) {
- pair->flag |= ttypes[TTYPE_FUNC_ARG];
+ p->under++;
return(1);
}
for (n = node->child; n; n = n->next) {
- p->flags |= ttypes[TTYPE_FUNC_ARG];
+ p->under++;
term_word(p, n->string);
- p->flags &= ~ttypes[TTYPE_FUNC_ARG];
+ p->under--;
if (n->next)
term_word(p, ",");
}
}
-/* ARGSUSED */
-static int
-termp_va_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_VAR_DECL];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_bd_pre(DECL_ARGS)
}
-/* ARGSUSED */
-static int
-termp_pa_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_FILE];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_pf_pre(DECL_ARGS)
term_vspace(p);
break;
case (MDOC_HEAD):
- pair->flag |= ttypes[TTYPE_SSECTION];
+ p->bold++;
p->offset = HALFINDENT;
break;
default:
}
-/* ARGSUSED */
-static int
-termp_em_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_EMPH];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_cd_pre(DECL_ARGS)
{
- pair->flag |= ttypes[TTYPE_CONFIG];
+ p->bold++;
term_newln(p);
return(1);
}
-/* ARGSUSED */
-static int
-termp_cm_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_CMD_FLAG];
- return(1);
-}
-
-
-/* ARGSUSED */
-static int
-termp_ic_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_CMD];
- return(1);
-}
-
-
/* ARGSUSED */
static int
termp_in_pre(DECL_ARGS)
{
- pair->flag |= ttypes[TTYPE_INCLUDE];
- p->flags |= ttypes[TTYPE_INCLUDE];
-
+ p->bold++;
if (SEC_SYNOPSIS == node->sec)
term_word(p, "#include");
termp_in_post(DECL_ARGS)
{
- p->flags |= TERMP_NOSPACE | ttypes[TTYPE_INCLUDE];
+ p->bold++;
term_word(p, ">");
- p->flags &= ~ttypes[TTYPE_INCLUDE];
+ p->bold--;
if (SEC_SYNOPSIS != node->sec)
return;
} else if (MDOC_HEAD != node->type)
return(1);
- p->flags |= ttypes[TTYPE_FUNC_NAME];
+ p->bold++;
for (n = node->child; n; n = n->next) {
assert(MDOC_TEXT == n->type);
term_word(p, n->string);
}
- p->flags &= ~ttypes[TTYPE_FUNC_NAME];
+ p->bold--;
return(0);
}
if (NULL == (n = node->head->child)) {
if (arg_hasattr(MDOC_Emphasis, node))
- pair->flag |= ttypes[TTYPE_EMPH];
+ p->under++;
else if (arg_hasattr(MDOC_Symbolic, node))
- pair->flag |= ttypes[TTYPE_SYMB];
+ p->bold++;
return(1);
}
assert(MDOC_TEXT == n->type);
if (0 == strcmp("Em", n->string))
- pair->flag |= ttypes[TTYPE_EMPH];
+ p->under++;
else if (0 == strcmp("Sy", n->string))
- pair->flag |= ttypes[TTYPE_SYMB];
-
- return(1);
-}
-
-
-/* ARGSUSED */
-static int
-termp_sy_pre(DECL_ARGS)
-{
+ p->bold++;
- pair->flag |= ttypes[TTYPE_SYMB];
return(1);
}
-/* ARGSUSED */
-static int
-termp_ms_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_SYMBOL];
- return(1);
-}
-
-
-
/* ARGSUSED */
static int
termp_sm_pre(DECL_ARGS)
}
-/* ARGSUSED */
-static int
-termp__j_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_REF_JOURNAL];
- return(1);
-}
-
-
-/* ARGSUSED */
-static int
-termp__t_pre(DECL_ARGS)
-{
-
- pair->flag |= ttypes[TTYPE_REF_TITLE];
- return(1);
-}
-
-
/* ARGSUSED */
static void
termp____post(DECL_ARGS)
n = node->child;
if (NULL == n->next) {
- pair->flag |= ttypes[TTYPE_LINK_ANCHOR];
+ p->under++;
return(1);
}
- p->flags |= ttypes[TTYPE_LINK_ANCHOR];
+ p->under++;
term_word(p, n->string);
p->flags |= TERMP_NOSPACE;
term_word(p, ":");
- p->flags &= ~ttypes[TTYPE_LINK_ANCHOR];
+ p->under--;
- p->flags |= ttypes[TTYPE_LINK_TEXT];
+ p->bold++;
for (n = n->next; n; n = n->next)
term_word(p, n->string);
+ p->bold--;
- p->flags &= ~ttypes[TTYPE_LINK_TEXT];
return(0);
}
/* ARGSUSED */
static int
-termp_mt_pre(DECL_ARGS)
+termp_under_pre(DECL_ARGS)
{
- pair->flag |= ttypes[TTYPE_LINK_ANCHOR];
+ p->under++;
return(1);
}
-
-