version 1.290, 2015/04/20 09:48:53 |
version 1.294, 2015/10/06 18:32:19 |
Line 107 static void post_sh_see_also(POST_ARGS); |
|
Line 107 static void post_sh_see_also(POST_ARGS); |
|
static void post_sh_authors(POST_ARGS); |
static void post_sh_authors(POST_ARGS); |
static void post_sm(POST_ARGS); |
static void post_sm(POST_ARGS); |
static void post_st(POST_ARGS); |
static void post_st(POST_ARGS); |
static void post_vt(POST_ARGS); |
|
|
|
static void pre_an(PRE_ARGS); |
static void pre_an(PRE_ARGS); |
static void pre_bd(PRE_ARGS); |
static void pre_bd(PRE_ARGS); |
Line 161 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 160 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ pre_std, NULL }, /* Rv */ |
{ pre_std, NULL }, /* Rv */ |
{ NULL, post_st }, /* St */ |
{ NULL, post_st }, /* St */ |
{ NULL, NULL }, /* Va */ |
{ NULL, NULL }, /* Va */ |
{ NULL, post_vt }, /* Vt */ |
{ NULL, NULL }, /* Vt */ |
{ NULL, NULL }, /* Xr */ |
{ NULL, NULL }, /* Xr */ |
{ NULL, NULL }, /* %A */ |
{ NULL, NULL }, /* %A */ |
{ NULL, post_hyph }, /* %B */ /* FIXME: can be used outside Rs/Re. */ |
{ NULL, post_hyph }, /* %B */ /* FIXME: can be used outside Rs/Re. */ |
Line 658 pre_bd(PRE_ARGS) |
|
Line 657 pre_bd(PRE_ARGS) |
|
break; |
break; |
default: |
default: |
abort(); |
abort(); |
/* NOTREACHED */ |
|
} |
} |
if (DISP__NONE == dt) |
if (DISP__NONE == dt) |
continue; |
continue; |
Line 933 post_fa(POST_ARGS) |
|
Line 931 post_fa(POST_ARGS) |
|
} |
} |
|
|
static void |
static void |
post_vt(POST_ARGS) |
|
{ |
|
const struct roff_node *n; |
|
|
|
/* |
|
* The Vt macro comes in both ELEM and BLOCK form, both of which |
|
* have different syntaxes (yet more context-sensitive |
|
* behaviour). ELEM types must have a child, which is already |
|
* guaranteed by the in_line parsing routine; BLOCK types, |
|
* specifically the BODY, should only have TEXT children. |
|
*/ |
|
|
|
if (mdoc->last->type != ROFFT_BODY) |
|
return; |
|
|
|
for (n = mdoc->last->child; n; n = n->next) |
|
if (n->type != ROFFT_TEXT) |
|
mandoc_msg(MANDOCERR_VT_CHILD, mdoc->parse, |
|
n->line, n->pos, mdoc_macronames[n->tok]); |
|
} |
|
|
|
static void |
|
post_nm(POST_ARGS) |
post_nm(POST_ARGS) |
{ |
{ |
struct roff_node *n; |
struct roff_node *n; |
Line 969 post_nm(POST_ARGS) |
|
Line 945 post_nm(POST_ARGS) |
|
if (NULL != mdoc->meta.name) |
if (NULL != mdoc->meta.name) |
return; |
return; |
|
|
mdoc_deroff(&mdoc->meta.name, n); |
deroff(&mdoc->meta.name, n); |
|
|
if (NULL == mdoc->meta.name) |
if (NULL == mdoc->meta.name) |
mandoc_msg(MANDOCERR_NM_NONAME, mdoc->parse, |
mandoc_msg(MANDOCERR_NM_NONAME, mdoc->parse, |
Line 1061 post_defaults(POST_ARGS) |
|
Line 1037 post_defaults(POST_ARGS) |
|
break; |
break; |
default: |
default: |
abort(); |
abort(); |
/* NOTREACHED */ |
|
} |
} |
mdoc->last = nn; |
mdoc->last = nn; |
} |
} |
Line 1853 child_an(const struct roff_node *n) |
|
Line 1828 child_an(const struct roff_node *n) |
|
|
|
for (n = n->child; n != NULL; n = n->next) |
for (n = n->child; n != NULL; n = n->next) |
if ((n->tok == MDOC_An && n->nchild) || child_an(n)) |
if ((n->tok == MDOC_An && n->nchild) || child_an(n)) |
return(1); |
return 1; |
return(0); |
return 0; |
} |
} |
|
|
static void |
static void |
Line 1883 post_sh_head(POST_ARGS) |
|
Line 1858 post_sh_head(POST_ARGS) |
|
|
|
secname = NULL; |
secname = NULL; |
sec = SEC_CUSTOM; |
sec = SEC_CUSTOM; |
mdoc_deroff(&secname, mdoc->last); |
deroff(&secname, mdoc->last); |
sec = NULL == secname ? SEC_CUSTOM : a2sec(secname); |
sec = NULL == secname ? SEC_CUSTOM : a2sec(secname); |
|
|
/* The NAME should be first. */ |
/* The NAME should be first. */ |
Line 2111 pre_literal(PRE_ARGS) |
|
Line 2086 pre_literal(PRE_ARGS) |
|
break; |
break; |
default: |
default: |
abort(); |
abort(); |
/* NOTREACHED */ |
|
} |
} |
} |
} |
|
|
Line 2132 post_dd(POST_ARGS) |
|
Line 2106 post_dd(POST_ARGS) |
|
} |
} |
|
|
datestr = NULL; |
datestr = NULL; |
mdoc_deroff(&datestr, n); |
deroff(&datestr, n); |
if (mdoc->quick) |
if (mdoc->quick) |
mdoc->meta.date = datestr; |
mdoc->meta.date = datestr; |
else { |
else { |
Line 2267 post_os(POST_ARGS) |
|
Line 2241 post_os(POST_ARGS) |
|
|
|
free(mdoc->meta.os); |
free(mdoc->meta.os); |
mdoc->meta.os = NULL; |
mdoc->meta.os = NULL; |
mdoc_deroff(&mdoc->meta.os, n); |
deroff(&mdoc->meta.os, n); |
if (mdoc->meta.os) |
if (mdoc->meta.os) |
goto out; |
goto out; |
|
|
Line 2327 a2sec(const char *p) |
|
Line 2301 a2sec(const char *p) |
|
|
|
for (i = 0; i < (int)SEC__MAX; i++) |
for (i = 0; i < (int)SEC__MAX; i++) |
if (secnames[i] && 0 == strcmp(p, secnames[i])) |
if (secnames[i] && 0 == strcmp(p, secnames[i])) |
return((enum roff_sec)i); |
return (enum roff_sec)i; |
|
|
return(SEC_CUSTOM); |
return SEC_CUSTOM; |
} |
} |
|
|
static size_t |
static size_t |
Line 2338 macro2len(int macro) |
|
Line 2312 macro2len(int macro) |
|
|
|
switch (macro) { |
switch (macro) { |
case MDOC_Ad: |
case MDOC_Ad: |
return(12); |
return 12; |
case MDOC_Ao: |
case MDOC_Ao: |
return(12); |
return 12; |
case MDOC_An: |
case MDOC_An: |
return(12); |
return 12; |
case MDOC_Aq: |
case MDOC_Aq: |
return(12); |
return 12; |
case MDOC_Ar: |
case MDOC_Ar: |
return(12); |
return 12; |
case MDOC_Bo: |
case MDOC_Bo: |
return(12); |
return 12; |
case MDOC_Bq: |
case MDOC_Bq: |
return(12); |
return 12; |
case MDOC_Cd: |
case MDOC_Cd: |
return(12); |
return 12; |
case MDOC_Cm: |
case MDOC_Cm: |
return(10); |
return 10; |
case MDOC_Do: |
case MDOC_Do: |
return(10); |
return 10; |
case MDOC_Dq: |
case MDOC_Dq: |
return(12); |
return 12; |
case MDOC_Dv: |
case MDOC_Dv: |
return(12); |
return 12; |
case MDOC_Eo: |
case MDOC_Eo: |
return(12); |
return 12; |
case MDOC_Em: |
case MDOC_Em: |
return(10); |
return 10; |
case MDOC_Er: |
case MDOC_Er: |
return(17); |
return 17; |
case MDOC_Ev: |
case MDOC_Ev: |
return(15); |
return 15; |
case MDOC_Fa: |
case MDOC_Fa: |
return(12); |
return 12; |
case MDOC_Fl: |
case MDOC_Fl: |
return(10); |
return 10; |
case MDOC_Fo: |
case MDOC_Fo: |
return(16); |
return 16; |
case MDOC_Fn: |
case MDOC_Fn: |
return(16); |
return 16; |
case MDOC_Ic: |
case MDOC_Ic: |
return(10); |
return 10; |
case MDOC_Li: |
case MDOC_Li: |
return(16); |
return 16; |
case MDOC_Ms: |
case MDOC_Ms: |
return(6); |
return 6; |
case MDOC_Nm: |
case MDOC_Nm: |
return(10); |
return 10; |
case MDOC_No: |
case MDOC_No: |
return(12); |
return 12; |
case MDOC_Oo: |
case MDOC_Oo: |
return(10); |
return 10; |
case MDOC_Op: |
case MDOC_Op: |
return(14); |
return 14; |
case MDOC_Pa: |
case MDOC_Pa: |
return(32); |
return 32; |
case MDOC_Pf: |
case MDOC_Pf: |
return(12); |
return 12; |
case MDOC_Po: |
case MDOC_Po: |
return(12); |
return 12; |
case MDOC_Pq: |
case MDOC_Pq: |
return(12); |
return 12; |
case MDOC_Ql: |
case MDOC_Ql: |
return(16); |
return 16; |
case MDOC_Qo: |
case MDOC_Qo: |
return(12); |
return 12; |
case MDOC_So: |
case MDOC_So: |
return(12); |
return 12; |
case MDOC_Sq: |
case MDOC_Sq: |
return(12); |
return 12; |
case MDOC_Sy: |
case MDOC_Sy: |
return(6); |
return 6; |
case MDOC_Sx: |
case MDOC_Sx: |
return(16); |
return 16; |
case MDOC_Tn: |
case MDOC_Tn: |
return(10); |
return 10; |
case MDOC_Va: |
case MDOC_Va: |
return(12); |
return 12; |
case MDOC_Vt: |
case MDOC_Vt: |
return(12); |
return 12; |
case MDOC_Xr: |
case MDOC_Xr: |
return(10); |
return 10; |
default: |
default: |
break; |
break; |
}; |
}; |
return(0); |
return 0; |
} |
} |