version 1.259, 2014/11/28 01:05:43 |
version 1.266, 2015/02/03 00:48:47 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org> |
* Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 210 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 210 static const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, NULL }, /* Nx */ |
{ NULL, NULL }, /* Nx */ |
{ NULL, NULL }, /* Ox */ |
{ NULL, NULL }, /* Ox */ |
{ NULL, NULL }, /* Pc */ |
{ NULL, NULL }, /* Pc */ |
{ NULL, ewarn_eq1 }, /* Pf */ |
{ NULL, NULL }, /* Pf */ |
{ NULL, NULL }, /* Po */ |
{ NULL, NULL }, /* Po */ |
{ NULL, NULL }, /* Pq */ |
{ NULL, NULL }, /* Pq */ |
{ NULL, NULL }, /* Qc */ |
{ NULL, NULL }, /* Qc */ |
Line 942 post_lb(POST_ARGS) |
|
Line 942 post_lb(POST_ARGS) |
|
char *libname; |
char *libname; |
|
|
check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); |
check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); |
|
|
n = mdoc->last->child; |
n = mdoc->last->child; |
|
|
assert(n); |
|
assert(MDOC_TEXT == n->type); |
assert(MDOC_TEXT == n->type); |
|
|
if (NULL == (stdlibname = mdoc_a2lib(n->string))) |
if (NULL == (stdlibname = mdoc_a2lib(n->string))) |
Line 1050 post_vt(POST_ARGS) |
|
Line 1047 post_vt(POST_ARGS) |
|
static void |
static void |
post_nm(POST_ARGS) |
post_nm(POST_ARGS) |
{ |
{ |
|
struct mdoc_node *n; |
|
|
|
n = mdoc->last; |
|
|
|
if (n->last != NULL && |
|
(n->last->tok == MDOC_Pp || |
|
n->last->tok == MDOC_Lp)) |
|
mdoc_node_relink(mdoc, n->last); |
|
|
if (NULL != mdoc->meta.name) |
if (NULL != mdoc->meta.name) |
return; |
return; |
|
|
mdoc_deroff(&mdoc->meta.name, mdoc->last); |
mdoc_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, |
mdoc->last->line, mdoc->last->pos, "Nm"); |
n->line, n->pos, "Nm"); |
} |
} |
|
|
static void |
static void |
Line 1200 post_it(POST_ARGS) |
|
Line 1205 post_it(POST_ARGS) |
|
struct mdoc_node *nbl, *nit, *nch; |
struct mdoc_node *nbl, *nit, *nch; |
|
|
nit = mdoc->last; |
nit = mdoc->last; |
if (MDOC_BLOCK != nit->type) |
if (nit->type != MDOC_BLOCK) |
return; |
return; |
|
|
nbl = nit->parent->parent; |
nbl = nit->parent->parent; |
Line 1216 post_it(POST_ARGS) |
|
Line 1221 post_it(POST_ARGS) |
|
case LIST_inset: |
case LIST_inset: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case LIST_diag: |
case LIST_diag: |
if (NULL == nit->head->child) |
if (nit->head->child == NULL) |
mandoc_vmsg(MANDOCERR_IT_NOHEAD, |
mandoc_vmsg(MANDOCERR_IT_NOHEAD, |
mdoc->parse, nit->line, nit->pos, |
mdoc->parse, nit->line, nit->pos, |
"Bl -%s It", |
"Bl -%s It", |
Line 1229 post_it(POST_ARGS) |
|
Line 1234 post_it(POST_ARGS) |
|
case LIST_enum: |
case LIST_enum: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case LIST_hyphen: |
case LIST_hyphen: |
if (NULL == nit->body->child) |
if (nit->body == NULL || nit->body->child == NULL) |
mandoc_vmsg(MANDOCERR_IT_NOBODY, |
mandoc_vmsg(MANDOCERR_IT_NOBODY, |
mdoc->parse, nit->line, nit->pos, |
mdoc->parse, nit->line, nit->pos, |
"Bl -%s It", |
"Bl -%s It", |
mdoc_argnames[nbl->args->argv[0].arg]); |
mdoc_argnames[nbl->args->argv[0].arg]); |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case LIST_item: |
case LIST_item: |
if (NULL != nit->head->child) |
if (nit->head->child != NULL) |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
mdoc->parse, nit->line, nit->pos, |
mdoc->parse, nit->line, nit->pos, |
"It %s", nit->head->child->string); |
"It %s", nit->head->child->string); |
Line 1244 post_it(POST_ARGS) |
|
Line 1249 post_it(POST_ARGS) |
|
case LIST_column: |
case LIST_column: |
cols = (int)nbl->norm->Bl.ncols; |
cols = (int)nbl->norm->Bl.ncols; |
|
|
assert(NULL == nit->head->child); |
assert(nit->head->child == NULL); |
|
|
for (i = 0, nch = nit->child; nch; nch = nch->next) |
for (i = 0, nch = nit->child; nch; nch = nch->next) |
if (MDOC_BODY == nch->type) |
if (nch->type == MDOC_BODY) |
i++; |
i++; |
|
|
if (i < cols || i > cols + 1) |
if (i < cols || i > cols + 1) |
Line 1487 post_bl(POST_ARGS) |
|
Line 1492 post_bl(POST_ARGS) |
|
|
|
nchild = nbody->child; |
nchild = nbody->child; |
while (NULL != nchild) { |
while (NULL != nchild) { |
if (MDOC_It == nchild->tok || MDOC_Sm == nchild->tok) { |
if (nchild->tok == MDOC_It || |
|
(nchild->tok == MDOC_Sm && |
|
nchild->next != NULL && |
|
nchild->next->tok == MDOC_It)) { |
nchild = nchild->next; |
nchild = nchild->next; |
continue; |
continue; |
} |
} |
Line 2283 post_dt(POST_ARGS) |
|
Line 2291 post_dt(POST_ARGS) |
|
mdoc->meta.msec = mandoc_strdup(nn->string); |
mdoc->meta.msec = mandoc_strdup(nn->string); |
} |
} |
|
|
if (NULL == (nn = nn->next)) |
/* Handle an optional architecture */ |
goto out; |
|
|
|
/* Handles: `.Dt TITLE SEC VOL' |
if ((nn = nn->next) != NULL) { |
* title = TITLE, |
for (p = nn->string; *p; p++) |
* volume = VOL is vol ? format(VOL) : |
*p = tolower((unsigned char)*p); |
* VOL is arch ? format(arch) : |
mdoc->meta.arch = mandoc_strdup(nn->string); |
* VOL |
|
*/ |
|
|
|
cp = mdoc_a2vol(nn->string); |
|
if (cp) { |
|
free(mdoc->meta.vol); |
|
mdoc->meta.vol = mandoc_strdup(cp); |
|
} else { |
|
cp = mdoc_a2arch(nn->string); |
|
if (NULL == cp) { |
|
mandoc_vmsg(MANDOCERR_ARCH_BAD, mdoc->parse, |
|
nn->line, nn->pos, "Dt ... %s", nn->string); |
|
free(mdoc->meta.vol); |
|
mdoc->meta.vol = mandoc_strdup(nn->string); |
|
} else |
|
mdoc->meta.arch = mandoc_strdup(cp); |
|
} |
} |
|
|
/* Ignore any subsequent parameters... */ |
/* Ignore any subsequent parameters... */ |