version 1.273, 2015/02/06 02:04:54 |
version 1.274, 2015/02/06 03:38:45 |
Line 67 static enum mdoc_sec a2sec(const char *); |
|
Line 67 static enum mdoc_sec a2sec(const char *); |
|
static size_t macro2len(enum mdoct); |
static size_t macro2len(enum mdoct); |
static void rewrite_macro2len(char **); |
static void rewrite_macro2len(char **); |
|
|
static void bwarn_ge1(POST_ARGS); |
|
static void ewarn_eq1(POST_ARGS); |
static void ewarn_eq1(POST_ARGS); |
static void ewarn_ge1(POST_ARGS); |
static void ewarn_ge1(POST_ARGS); |
|
|
Line 151 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 150 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, NULL }, /* Ev */ |
{ NULL, NULL }, /* Ev */ |
{ pre_std, post_ex }, /* Ex */ |
{ pre_std, post_ex }, /* Ex */ |
{ NULL, post_fa }, /* Fa */ |
{ NULL, post_fa }, /* Fa */ |
{ NULL, ewarn_ge1 }, /* Fd */ |
{ NULL, NULL }, /* Fd */ |
{ NULL, NULL }, /* Fl */ |
{ NULL, NULL }, /* Fl */ |
{ NULL, post_fn }, /* Fn */ |
{ NULL, post_fn }, /* Fn */ |
{ NULL, NULL }, /* Ft */ |
{ NULL, NULL }, /* Ft */ |
Line 402 check_count(struct mdoc *mdoc, enum mdoc_type type, |
|
Line 401 check_count(struct mdoc *mdoc, enum mdoc_type type, |
|
} |
} |
|
|
static void |
static void |
bwarn_ge1(POST_ARGS) |
|
{ |
|
check_count(mdoc, MDOC_BODY, CHECK_GT, 0); |
|
} |
|
|
|
static void |
|
ewarn_eq1(POST_ARGS) |
ewarn_eq1(POST_ARGS) |
{ |
{ |
check_count(mdoc, MDOC_ELEM, CHECK_EQ, 1); |
check_count(mdoc, MDOC_ELEM, CHECK_EQ, 1); |
Line 980 post_fn(POST_ARGS) |
|
Line 973 post_fn(POST_ARGS) |
|
static void |
static void |
post_fo(POST_ARGS) |
post_fo(POST_ARGS) |
{ |
{ |
|
const struct mdoc_node *n; |
|
|
check_count(mdoc, MDOC_HEAD, CHECK_EQ, 1); |
n = mdoc->last; |
bwarn_ge1(mdoc); |
|
if (mdoc->last->type == MDOC_HEAD && mdoc->last->nchild) |
if (n->type != MDOC_HEAD) |
post_fname(mdoc); |
return; |
|
|
|
if (n->child == NULL) { |
|
mandoc_msg(MANDOCERR_FO_NOHEAD, mdoc->parse, |
|
n->line, n->pos, "Fo"); |
|
return; |
|
} |
|
if (n->child != n->last) { |
|
mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse, |
|
n->child->next->line, n->child->next->pos, |
|
"Fo ... %s", n->child->next->string); |
|
while (n->child != n->last) |
|
mdoc_node_delete(mdoc, n->last); |
|
} |
|
|
|
post_fname(mdoc); |
} |
} |
|
|
static void |
static void |