-/* $Id: mdoc_validate.c,v 1.287 2015/04/19 13:50:26 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.296 2015/10/12 21:26:02 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
static void post_sh_authors(POST_ARGS);
static void post_sm(POST_ARGS);
static void post_st(POST_ARGS);
-static void post_vt(POST_ARGS);
static void pre_an(PRE_ARGS);
static void pre_bd(PRE_ARGS);
{ pre_std, NULL }, /* Rv */
{ NULL, post_st }, /* St */
{ NULL, NULL }, /* Va */
- { NULL, post_vt }, /* Vt */
+ { NULL, NULL }, /* Vt */
{ NULL, NULL }, /* Xr */
{ NULL, NULL }, /* %A */
{ NULL, post_hyph }, /* %B */ /* FIXME: can be used outside Rs/Re. */
case ROFFT_TEXT:
if (n->sec != SEC_SYNOPSIS || n->parent->tok != MDOC_Fd)
check_text(mdoc, n->line, n->pos, n->string);
- /* FALLTHROUGH */
+ return;
case ROFFT_TBL:
- /* FALLTHROUGH */
case ROFFT_EQN:
- /* FALLTHROUGH */
case ROFFT_ROOT:
return;
default:
switch (n->type) {
case ROFFT_TEXT:
- /* FALLTHROUGH */
case ROFFT_EQN:
- /* FALLTHROUGH */
case ROFFT_TBL:
break;
case ROFFT_ROOT:
n->line, n->pos, "Bl -tag");
break;
case LIST_column:
- /* FALLTHROUGH */
case LIST_diag:
- /* FALLTHROUGH */
case LIST_ohang:
- /* FALLTHROUGH */
case LIST_inset:
- /* FALLTHROUGH */
case LIST_item:
if (n->norm->Bl.width)
mandoc_vmsg(MANDOCERR_BL_SKIPW, mdoc->parse,
mdoc_argnames[mdoclt]);
break;
case LIST_bullet:
- /* FALLTHROUGH */
case LIST_dash:
- /* FALLTHROUGH */
case LIST_hyphen:
if (NULL == n->norm->Bl.width)
n->norm->Bl.width = "2n";
break;
default:
abort();
- /* NOTREACHED */
}
if (DISP__NONE == dt)
continue;
}
}
-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)
{
if (NULL != mdoc->meta.name)
return;
- mdoc_deroff(&mdoc->meta.name, n);
+ deroff(&mdoc->meta.name, n);
if (NULL == mdoc->meta.name)
mandoc_msg(MANDOCERR_NM_NONAME, mdoc->parse,
switch (nn->tok) {
case MDOC_Ar:
- mdoc_word_alloc(mdoc, nn->line, nn->pos, "file");
- mdoc_word_alloc(mdoc, nn->line, nn->pos, "...");
+ roff_word_alloc(mdoc, nn->line, nn->pos, "file");
+ roff_word_alloc(mdoc, nn->line, nn->pos, "...");
break;
case MDOC_Pa:
- /* FALLTHROUGH */
case MDOC_Mt:
- mdoc_word_alloc(mdoc, nn->line, nn->pos, "~");
+ roff_word_alloc(mdoc, nn->line, nn->pos, "~");
break;
default:
abort();
- /* NOTREACHED */
}
mdoc->last = nn;
}
n = mdoc->last;
if (n->child == NULL) {
mdoc->next = ROFF_NEXT_CHILD;
- mdoc_word_alloc(mdoc, n->line, n->pos, "AT&T UNIX");
+ roff_word_alloc(mdoc, n->line, n->pos, "AT&T UNIX");
mdoc->last = n;
return;
}
switch (lt) {
case LIST_tag:
- /* FALLTHROUGH */
case LIST_hang:
- /* FALLTHROUGH */
case LIST_ohang:
- /* FALLTHROUGH */
case LIST_inset:
- /* FALLTHROUGH */
case LIST_diag:
if (nit->head->child == NULL)
mandoc_vmsg(MANDOCERR_IT_NOHEAD,
mdoc_argnames[nbl->args->argv[0].arg]);
break;
case LIST_bullet:
- /* FALLTHROUGH */
case LIST_dash:
- /* FALLTHROUGH */
case LIST_enum:
- /* FALLTHROUGH */
case LIST_hyphen:
if (nit->body == NULL || nit->body->child == NULL)
mandoc_vmsg(MANDOCERR_IT_NOBODY,
while (NULL != nc) {
switch (nc->tok) {
case MDOC_Pp:
- /* FALLTHROUGH */
case MDOC_Lp:
- /* FALLTHROUGH */
case MDOC_br:
break;
default:
return;
else if ( ! strcmp(*arg, "Ds"))
width = 6;
- else if ((tok = mdoc_hash_find(*arg)) == MDOC_MAX)
+ else if ((tok = mdoc_hash_find(*arg)) == TOKEN_NONE)
return;
else
width = macro2len(tok);
/* Check that we begin with a proper `Sh'. */
n = mdoc->first->child;
- while (n != NULL && mdoc_macros[n->tok].flags & MDOC_PROLOGUE)
+ while (n != NULL && n->tok != TOKEN_NONE &&
+ mdoc_macros[n->tok].flags & MDOC_PROLOGUE)
n = n->next;
if (n == NULL)
mandoc_msg(MANDOCERR_NAMESEC_ND,
mdoc->parse, n->line, n->pos, NULL);
break;
- case MDOC_MAX:
+ case TOKEN_NONE:
if (hasnm)
break;
/* FALLTHROUGH */
for (n = n->child; n != NULL; n = n->next)
if ((n->tok == MDOC_An && n->nchild) || child_an(n))
- return(1);
- return(0);
+ return 1;
+ return 0;
}
static void
*/
secname = NULL;
- sec = SEC_CUSTOM;
- mdoc_deroff(&secname, mdoc->last);
+ deroff(&secname, mdoc->last);
sec = NULL == secname ? SEC_CUSTOM : a2sec(secname);
/* The NAME should be first. */
goodsec = "2, 3, 4, 9";
/* FALLTHROUGH */
case SEC_RETURN_VALUES:
- /* FALLTHROUGH */
case SEC_LIBRARY:
if (*mdoc->meta.msec == '2')
break;
break;
default:
abort();
- /* NOTREACHED */
}
}
}
datestr = NULL;
- mdoc_deroff(&datestr, n);
+ deroff(&datestr, n);
if (mdoc->quick)
mdoc->meta.date = datestr;
else {
free(mdoc->meta.os);
mdoc->meta.os = NULL;
- mdoc_deroff(&mdoc->meta.os, n);
+ deroff(&mdoc->meta.os, n);
if (mdoc->meta.os)
goto out;
}
mdoc->next = ROFF_NEXT_CHILD;
- mdoc_word_alloc(mdoc, n->line, n->pos, mdoc->meta.name);
+ roff_word_alloc(mdoc, n->line, n->pos, mdoc->meta.name);
mdoc->last = n;
}
for (i = 0; i < (int)SEC__MAX; 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
switch (macro) {
case MDOC_Ad:
- return(12);
+ return 12;
case MDOC_Ao:
- return(12);
+ return 12;
case MDOC_An:
- return(12);
+ return 12;
case MDOC_Aq:
- return(12);
+ return 12;
case MDOC_Ar:
- return(12);
+ return 12;
case MDOC_Bo:
- return(12);
+ return 12;
case MDOC_Bq:
- return(12);
+ return 12;
case MDOC_Cd:
- return(12);
+ return 12;
case MDOC_Cm:
- return(10);
+ return 10;
case MDOC_Do:
- return(10);
+ return 10;
case MDOC_Dq:
- return(12);
+ return 12;
case MDOC_Dv:
- return(12);
+ return 12;
case MDOC_Eo:
- return(12);
+ return 12;
case MDOC_Em:
- return(10);
+ return 10;
case MDOC_Er:
- return(17);
+ return 17;
case MDOC_Ev:
- return(15);
+ return 15;
case MDOC_Fa:
- return(12);
+ return 12;
case MDOC_Fl:
- return(10);
+ return 10;
case MDOC_Fo:
- return(16);
+ return 16;
case MDOC_Fn:
- return(16);
+ return 16;
case MDOC_Ic:
- return(10);
+ return 10;
case MDOC_Li:
- return(16);
+ return 16;
case MDOC_Ms:
- return(6);
+ return 6;
case MDOC_Nm:
- return(10);
+ return 10;
case MDOC_No:
- return(12);
+ return 12;
case MDOC_Oo:
- return(10);
+ return 10;
case MDOC_Op:
- return(14);
+ return 14;
case MDOC_Pa:
- return(32);
+ return 32;
case MDOC_Pf:
- return(12);
+ return 12;
case MDOC_Po:
- return(12);
+ return 12;
case MDOC_Pq:
- return(12);
+ return 12;
case MDOC_Ql:
- return(16);
+ return 16;
case MDOC_Qo:
- return(12);
+ return 12;
case MDOC_So:
- return(12);
+ return 12;
case MDOC_Sq:
- return(12);
+ return 12;
case MDOC_Sy:
- return(6);
+ return 6;
case MDOC_Sx:
- return(16);
+ return 16;
case MDOC_Tn:
- return(10);
+ return 10;
case MDOC_Va:
- return(12);
+ return 12;
case MDOC_Vt:
- return(12);
+ return 12;
case MDOC_Xr:
- return(10);
+ return 10;
default:
break;
};
- return(0);
+ return 0;
}