version 1.227, 2014/07/05 01:12:20 |
version 1.228, 2014/07/05 12:34:17 |
Line 696 pre_bl(PRE_ARGS) |
|
Line 696 pre_bl(PRE_ARGS) |
|
default: |
default: |
continue; |
continue; |
} |
} |
|
if (LIST__NONE == lt) |
|
continue; |
|
|
/* Check: multiple list types. */ |
/* Check: multiple list types. */ |
|
|
if (LIST__NONE != lt && n->norm->Bl.type != LIST__NONE) |
if (LIST__NONE != n->norm->Bl.type) { |
mdoc_nmsg(mdoc, n, MANDOCERR_LISTREP); |
mandoc_msg(MANDOCERR_BL_REP, |
|
mdoc->parse, n->line, n->pos, |
/* Assign list type. */ |
mdoc_argnames[argv->arg]); |
|
continue; |
if (LIST__NONE != lt && n->norm->Bl.type == LIST__NONE) { |
|
n->norm->Bl.type = lt; |
|
/* Set column information, too. */ |
|
if (LIST_column == lt) { |
|
n->norm->Bl.ncols = |
|
n->args->argv[i].sz; |
|
n->norm->Bl.cols = (void *) |
|
n->args->argv[i].value; |
|
} |
|
} |
} |
|
|
/* The list type should come first. */ |
/* The list type should come first. */ |
|
|
if (n->norm->Bl.type == LIST__NONE) |
if (n->norm->Bl.width || |
if (n->norm->Bl.width || |
n->norm->Bl.offs || |
n->norm->Bl.offs || |
n->norm->Bl.comp) |
n->norm->Bl.comp) |
mandoc_msg(MANDOCERR_BL_LATETYPE, |
mandoc_msg(MANDOCERR_BL_LATETYPE, |
mdoc->parse, n->line, n->pos, |
mdoc->parse, n->line, n->pos, |
mdoc_argnames[n->args->argv[0].arg]); |
mdoc_argnames[n->args->argv[0].arg]); |
|
continue; |
n->norm->Bl.type = lt; |
|
if (LIST_column == lt) { |
|
n->norm->Bl.ncols = argv->sz; |
|
n->norm->Bl.cols = (void *)argv->value; |
|
} |
} |
} |
|
|
/* Allow lists to default to LIST_item. */ |
/* Allow lists to default to LIST_item. */ |
Line 744 pre_bl(PRE_ARGS) |
|
Line 741 pre_bl(PRE_ARGS) |
|
switch (n->norm->Bl.type) { |
switch (n->norm->Bl.type) { |
case LIST_tag: |
case LIST_tag: |
if (NULL == n->norm->Bl.width) |
if (NULL == n->norm->Bl.width) |
mdoc_nmsg(mdoc, n, MANDOCERR_BL_WIDTH); |
mdoc_nmsg(mdoc, n, MANDOCERR_BL_NOWIDTH); |
break; |
break; |
case LIST_column: |
case LIST_column: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 846 pre_bd(PRE_ARGS) |
|
Line 843 pre_bd(PRE_ARGS) |
|
abort(); |
abort(); |
/* NOTREACHED */ |
/* NOTREACHED */ |
} |
} |
|
if (DISP__NONE == dt) |
|
continue; |
|
|
/* Check whether a type has already been assigned. */ |
if (DISP__NONE == n->norm->Bd.type) |
|
|
if (DISP__NONE != dt && n->norm->Bd.type != DISP__NONE) |
|
mdoc_nmsg(mdoc, n, MANDOCERR_DISPREP); |
|
|
|
/* Make our type assignment. */ |
|
|
|
if (DISP__NONE != dt && n->norm->Bd.type == DISP__NONE) |
|
n->norm->Bd.type = dt; |
n->norm->Bd.type = dt; |
|
else |
|
mandoc_msg(MANDOCERR_BD_REP, |
|
mdoc->parse, n->line, n->pos, |
|
mdoc_argnames[argv->arg]); |
} |
} |
|
|
if (DISP__NONE == n->norm->Bd.type) { |
if (DISP__NONE == n->norm->Bd.type) { |
Line 1222 post_at(POST_ARGS) |
|
Line 1218 post_at(POST_ARGS) |
|
|
|
assert(MDOC_TEXT == n->type); |
assert(MDOC_TEXT == n->type); |
if (NULL == (std_att = mdoc_a2att(n->string))) { |
if (NULL == (std_att = mdoc_a2att(n->string))) { |
mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_BADATT); |
mandoc_msg(MANDOCERR_AT_BAD, mdoc->parse, |
|
n->line, n->pos, n->string); |
mandoc_asprintf(&att, "AT&T UNIX %s", n->string); |
mandoc_asprintf(&att, "AT&T UNIX %s", n->string); |
} else |
} else |
att = mandoc_strdup(std_att); |
att = mandoc_strdup(std_att); |
Line 1425 post_bl_block_width(POST_ARGS) |
|
Line 1422 post_bl_block_width(POST_ARGS) |
|
width = 6; |
width = 6; |
else if (MDOC_MAX == (tok = mdoc_hash_find(n->norm->Bl.width))) |
else if (MDOC_MAX == (tok = mdoc_hash_find(n->norm->Bl.width))) |
return(1); |
return(1); |
else if (0 == (width = macro2len(tok))) { |
else |
mdoc_nmsg(mdoc, n, MANDOCERR_BADWIDTH); |
width = macro2len(tok); |
return(1); |
|
} |
|
|
|
/* The value already exists: free and reallocate it. */ |
/* The value already exists: free and reallocate it. */ |
|
|
Line 1659 post_bl(POST_ARGS) |
|
Line 1654 post_bl(POST_ARGS) |
|
static int |
static int |
ebool(struct mdoc *mdoc) |
ebool(struct mdoc *mdoc) |
{ |
{ |
|
struct mdoc_node *nch; |
|
enum mdoct tok; |
|
|
if (NULL == mdoc->last->child) { |
tok = mdoc->last->tok; |
if (MDOC_Sm == mdoc->last->tok) |
nch = mdoc->last->child; |
|
|
|
if (NULL == nch) { |
|
if (MDOC_Sm == tok) |
mdoc->flags ^= MDOC_SMOFF; |
mdoc->flags ^= MDOC_SMOFF; |
return(1); |
return(1); |
} |
} |
|
|
check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_LT, 2); |
check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_LT, 2); |
|
|
assert(MDOC_TEXT == mdoc->last->child->type); |
assert(MDOC_TEXT == nch->type); |
|
|
if (0 == strcmp(mdoc->last->child->string, "on")) { |
if (0 == strcmp(nch->string, "on")) { |
if (MDOC_Sm == mdoc->last->tok) |
if (MDOC_Sm == tok) |
mdoc->flags &= ~MDOC_SMOFF; |
mdoc->flags &= ~MDOC_SMOFF; |
return(1); |
return(1); |
} |
} |
if (0 == strcmp(mdoc->last->child->string, "off")) { |
if (0 == strcmp(nch->string, "off")) { |
if (MDOC_Sm == mdoc->last->tok) |
if (MDOC_Sm == tok) |
mdoc->flags |= MDOC_SMOFF; |
mdoc->flags |= MDOC_SMOFF; |
return(1); |
return(1); |
} |
} |
|
|
mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_BADBOOL); |
mandoc_vmsg(MANDOCERR_SM_BAD, |
return(1); |
mdoc->parse, nch->line, nch->pos, |
|
"%s %s", mdoc_macronames[tok], nch->string); |
|
return(mdoc_node_relink(mdoc, nch)); |
} |
} |
|
|
static int |
static int |
Line 1718 post_root(POST_ARGS) |
|
Line 1720 post_root(POST_ARGS) |
|
static int |
static int |
post_st(POST_ARGS) |
post_st(POST_ARGS) |
{ |
{ |
struct mdoc_node *ch; |
struct mdoc_node *n, *nch; |
const char *p; |
const char *p; |
|
|
if (NULL == (ch = mdoc->last->child)) { |
n = mdoc->last; |
|
nch = n->child; |
|
|
|
if (NULL == nch) { |
mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse, |
mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse, |
mdoc->last->line, mdoc->last->pos, |
n->line, n->pos, mdoc_macronames[n->tok]); |
mdoc_macronames[mdoc->last->tok]); |
mdoc_node_delete(mdoc, n); |
mdoc_node_delete(mdoc, mdoc->last); |
|
return(1); |
return(1); |
} |
} |
|
|
assert(MDOC_TEXT == ch->type); |
assert(MDOC_TEXT == nch->type); |
|
|
if (NULL == (p = mdoc_a2st(ch->string))) { |
if (NULL == (p = mdoc_a2st(nch->string))) { |
mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_BADSTANDARD); |
mandoc_msg(MANDOCERR_ST_BAD, mdoc->parse, |
mdoc_node_delete(mdoc, mdoc->last); |
nch->line, nch->pos, nch->string); |
|
mdoc_node_delete(mdoc, n); |
} else { |
} else { |
free(ch->string); |
free(nch->string); |
ch->string = mandoc_strdup(p); |
nch->string = mandoc_strdup(p); |
} |
} |
|
|
return(1); |
return(1); |