version 1.91, 2014/04/20 16:46:04 |
version 1.100, 2014/07/07 21:36:20 |
|
|
check_root(CHKARGS) |
check_root(CHKARGS) |
{ |
{ |
|
|
if (MAN_BLINE & man->flags) |
if ((MAN_BLINE | MAN_ELINE) & man->flags) |
man_nmsg(man, n, MANDOCERR_SCOPEEXIT); |
mandoc_msg(MANDOCERR_BLK_LINE, man->parse, |
else if (MAN_ELINE & man->flags) |
0, 0, "at end of file"); |
man_nmsg(man, n, MANDOCERR_SCOPEEXIT); |
|
|
|
man->flags &= ~MAN_BLINE; |
man->flags &= ~MAN_BLINE; |
man->flags &= ~MAN_ELINE; |
man->flags &= ~MAN_ELINE; |
|
|
if (NULL == man->first->child) { |
if (NULL == man->first->child) |
man_nmsg(man, n, MANDOCERR_NODOCBODY); |
man_nmsg(man, n, MANDOCERR_DOC_EMPTY); |
return(0); |
else |
} else if (NULL == man->meta.title) { |
man->meta.hasbody = 1; |
man_nmsg(man, n, MANDOCERR_NOTITLE); |
|
|
|
|
if (NULL == man->meta.title) { |
|
man_nmsg(man, n, MANDOCERR_TH_MISSING); |
|
|
/* |
/* |
* If a title hasn't been set, do so now (by |
* If a title hasn't been set, do so now (by |
* implication, date and section also aren't set). |
* implication, date and section also aren't set). |
Line 228 check_text(CHKARGS) |
|
Line 229 check_text(CHKARGS) |
|
|
|
cp = n->string; |
cp = n->string; |
for (p = cp; NULL != (p = strchr(p, '\t')); p++) |
for (p = cp; NULL != (p = strchr(p, '\t')); p++) |
man_pmsg(man, n->line, (int)(p - cp), MANDOCERR_BADTAB); |
mandoc_msg(MANDOCERR_FI_TAB, man->parse, |
|
n->line, n->pos + (p - cp), NULL); |
} |
} |
|
|
#define INEQ_DEFINE(x, ineq, name) \ |
#define INEQ_DEFINE(x, ineq, name) \ |
Line 301 post_ft(CHKARGS) |
|
Line 303 post_ft(CHKARGS) |
|
} |
} |
|
|
if (0 == ok) { |
if (0 == ok) { |
mandoc_vmsg(MANDOCERR_BADFONT, man->parse, n->line, |
mandoc_vmsg(MANDOCERR_FT_BAD, man->parse, |
n->pos, "%s", cp); |
n->line, n->pos, "ft %s", cp); |
*cp = '\0'; |
*cp = '\0'; |
} |
} |
|
|
Line 355 check_par(CHKARGS) |
|
Line 357 check_par(CHKARGS) |
|
break; |
break; |
case MAN_BODY: |
case MAN_BODY: |
if (0 == n->nchild) |
if (0 == n->nchild) |
man_nmsg(man, n, MANDOCERR_IGNPAR); |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
|
man->parse, n->line, n->pos, |
|
"%s empty", man_macronames[n->tok]); |
break; |
break; |
case MAN_HEAD: |
case MAN_HEAD: |
if (n->nchild) |
if (n->nchild) |
man_nmsg(man, n, MANDOCERR_ARGSLOST); |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
|
man->parse, n->line, n->pos, |
|
"%s %s%s", man_macronames[n->tok], |
|
n->child->string, |
|
n->nchild > 1 ? " ..." : ""); |
break; |
break; |
default: |
default: |
break; |
break; |
Line 379 post_IP(CHKARGS) |
|
Line 387 post_IP(CHKARGS) |
|
break; |
break; |
case MAN_BODY: |
case MAN_BODY: |
if (0 == n->parent->head->nchild && 0 == n->nchild) |
if (0 == n->parent->head->nchild && 0 == n->nchild) |
man_nmsg(man, n, MANDOCERR_IGNPAR); |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
|
man->parse, n->line, n->pos, |
|
"%s empty", man_macronames[n->tok]); |
break; |
break; |
default: |
default: |
break; |
break; |
Line 390 post_IP(CHKARGS) |
|
Line 400 post_IP(CHKARGS) |
|
static int |
static int |
post_TH(CHKARGS) |
post_TH(CHKARGS) |
{ |
{ |
|
struct man_node *nb; |
const char *p; |
const char *p; |
|
|
free(man->meta.title); |
free(man->meta.title); |
Line 401 post_TH(CHKARGS) |
|
Line 412 post_TH(CHKARGS) |
|
man->meta.title = man->meta.vol = man->meta.date = |
man->meta.title = man->meta.vol = man->meta.date = |
man->meta.msec = man->meta.source = NULL; |
man->meta.msec = man->meta.source = NULL; |
|
|
|
nb = n; |
|
|
/* ->TITLE<- MSEC DATE SOURCE VOL */ |
/* ->TITLE<- MSEC DATE SOURCE VOL */ |
|
|
n = n->child; |
n = n->child; |
Line 409 post_TH(CHKARGS) |
|
Line 422 post_TH(CHKARGS) |
|
/* Only warn about this once... */ |
/* Only warn about this once... */ |
if (isalpha((unsigned char)*p) && |
if (isalpha((unsigned char)*p) && |
! isupper((unsigned char)*p)) { |
! isupper((unsigned char)*p)) { |
man_nmsg(man, n, MANDOCERR_UPPERCASE); |
mandoc_msg(MANDOCERR_TITLE_CASE, |
|
man->parse, n->line, |
|
n->pos + (p - n->string), |
|
n->string); |
break; |
break; |
} |
} |
} |
} |
Line 435 post_TH(CHKARGS) |
|
Line 451 post_TH(CHKARGS) |
|
mandoc_strdup(n->string) : |
mandoc_strdup(n->string) : |
mandoc_normdate(man->parse, n->string, |
mandoc_normdate(man->parse, n->string, |
n->line, n->pos); |
n->line, n->pos); |
} else |
} else { |
man->meta.date = mandoc_strdup(""); |
man->meta.date = mandoc_strdup(""); |
|
man_nmsg(man, n ? n : nb, MANDOCERR_DATE_MISSING); |
|
} |
|
|
/* TITLE MSEC DATE ->SOURCE<- VOL */ |
/* TITLE MSEC DATE ->SOURCE<- VOL */ |
|
|
Line 465 post_nf(CHKARGS) |
|
Line 483 post_nf(CHKARGS) |
|
{ |
{ |
|
|
if (MAN_LITERAL & man->flags) |
if (MAN_LITERAL & man->flags) |
man_nmsg(man, n, MANDOCERR_SCOPEREP); |
man_nmsg(man, n, MANDOCERR_NF_SKIP); |
|
|
man->flags |= MAN_LITERAL; |
man->flags |= MAN_LITERAL; |
return(1); |
return(1); |
Line 476 post_fi(CHKARGS) |
|
Line 494 post_fi(CHKARGS) |
|
{ |
{ |
|
|
if ( ! (MAN_LITERAL & man->flags)) |
if ( ! (MAN_LITERAL & man->flags)) |
man_nmsg(man, n, MANDOCERR_WNOSCOPE); |
man_nmsg(man, n, MANDOCERR_FI_SKIP); |
|
|
man->flags &= ~MAN_LITERAL; |
man->flags &= ~MAN_LITERAL; |
return(1); |
return(1); |
Line 569 post_vs(CHKARGS) |
|
Line 587 post_vs(CHKARGS) |
|
case MAN_SH: |
case MAN_SH: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MAN_SS: |
case MAN_SS: |
man_nmsg(man, n, MANDOCERR_IGNPAR); |
mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, n->line, n->pos, |
|
"%s after %s", man_macronames[n->tok], |
|
man_macronames[n->parent->tok]); |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MAN_MAX: |
case MAN_MAX: |
/* |
/* |