version 1.108, 2014/12/28 14:42:27 |
version 1.112, 2015/02/06 09:38:43 |
|
|
|
|
typedef void (*v_check)(CHKARGS); |
typedef void (*v_check)(CHKARGS); |
|
|
static void check_eq0(CHKARGS); |
|
static void check_eq2(CHKARGS); |
static void check_eq2(CHKARGS); |
static void check_le1(CHKARGS); |
|
static void check_le5(CHKARGS); |
static void check_le5(CHKARGS); |
static void check_par(CHKARGS); |
static void check_par(CHKARGS); |
static void check_part(CHKARGS); |
static void check_part(CHKARGS); |
Line 79 static v_check man_valids[MAN_MAX] = { |
|
Line 77 static v_check man_valids[MAN_MAX] = { |
|
NULL, /* I */ |
NULL, /* I */ |
NULL, /* IR */ |
NULL, /* IR */ |
NULL, /* RI */ |
NULL, /* RI */ |
check_eq0, /* na */ |
|
post_vs, /* sp */ |
post_vs, /* sp */ |
post_nf, /* nf */ |
post_nf, /* nf */ |
post_fi, /* fi */ |
post_fi, /* fi */ |
Line 87 static v_check man_valids[MAN_MAX] = { |
|
Line 84 static v_check man_valids[MAN_MAX] = { |
|
check_part, /* RS */ |
check_part, /* RS */ |
NULL, /* DT */ |
NULL, /* DT */ |
post_UC, /* UC */ |
post_UC, /* UC */ |
check_le1, /* PD */ |
NULL, /* PD */ |
post_AT, /* AT */ |
post_AT, /* AT */ |
NULL, /* in */ |
NULL, /* in */ |
post_ft, /* ft */ |
post_ft, /* ft */ |
Line 183 check_##name(CHKARGS) \ |
|
Line 180 check_##name(CHKARGS) \ |
|
#ineq, (x), n->nchild); \ |
#ineq, (x), n->nchild); \ |
} |
} |
|
|
INEQ_DEFINE(0, ==, eq0) |
|
INEQ_DEFINE(2, ==, eq2) |
INEQ_DEFINE(2, ==, eq2) |
INEQ_DEFINE(1, <=, le1) |
|
INEQ_DEFINE(5, <=, le5) |
INEQ_DEFINE(5, <=, le5) |
|
|
static void |
static void |
Line 243 post_ft(CHKARGS) |
|
Line 238 post_ft(CHKARGS) |
|
n->line, n->pos, "ft %s", cp); |
n->line, n->pos, "ft %s", cp); |
*cp = '\0'; |
*cp = '\0'; |
} |
} |
|
|
if (1 < n->nchild) |
|
mandoc_vmsg(MANDOCERR_ARGCOUNT, man->parse, n->line, |
|
n->pos, "want one child (have %d)", n->nchild); |
|
} |
} |
|
|
static void |
static void |
check_part(CHKARGS) |
check_part(CHKARGS) |
{ |
{ |
|
|
if (MAN_BODY == n->type && 0 == n->nchild) |
if (n->type == MAN_BODY && n->child == NULL) |
mandoc_msg(MANDOCERR_ARGCWARN, man->parse, n->line, |
mandoc_msg(MANDOCERR_BLK_EMPTY, man->parse, |
n->pos, "want children (have none)"); |
n->line, n->pos, man_macronames[n->tok]); |
} |
} |
|
|
static void |
static void |
|
|
post_nf(CHKARGS) |
post_nf(CHKARGS) |
{ |
{ |
|
|
check_eq0(man, n); |
if (man->flags & MAN_LITERAL) |
|
|
if (MAN_LITERAL & man->flags) |
|
mandoc_msg(MANDOCERR_NF_SKIP, man->parse, |
mandoc_msg(MANDOCERR_NF_SKIP, man->parse, |
n->line, n->pos, "nf"); |
n->line, n->pos, "nf"); |
|
|
|
|
post_fi(CHKARGS) |
post_fi(CHKARGS) |
{ |
{ |
|
|
check_eq0(man, n); |
|
|
|
if ( ! (MAN_LITERAL & man->flags)) |
if ( ! (MAN_LITERAL & man->flags)) |
mandoc_msg(MANDOCERR_FI_SKIP, man->parse, |
mandoc_msg(MANDOCERR_FI_SKIP, man->parse, |
n->line, n->pos, "fi"); |
n->line, n->pos, "fi"); |
Line 501 post_AT(CHKARGS) |
|
Line 488 post_AT(CHKARGS) |
|
static void |
static void |
post_vs(CHKARGS) |
post_vs(CHKARGS) |
{ |
{ |
|
|
if (n->tok == MAN_br) |
|
check_eq0(man, n); |
|
else |
|
check_le1(man, n); |
|
|
|
if (NULL != n->prev) |
if (NULL != n->prev) |
return; |
return; |