version 1.105, 2010/07/02 12:54:33 |
version 1.109, 2010/07/04 21:59:30 |
Line 647 pre_bl(PRE_ARGS) |
|
Line 647 pre_bl(PRE_ARGS) |
|
|
|
/* Assign list type. */ |
/* Assign list type. */ |
|
|
if (LIST__NONE != lt && n->data.Bl->type == LIST__NONE) |
if (LIST__NONE != lt && n->data.Bl->type == LIST__NONE) { |
n->data.Bl->type = lt; |
n->data.Bl->type = lt; |
|
/* Set column information, too. */ |
|
if (LIST_column == lt) { |
|
n->data.Bl->ncols = |
|
n->args->argv[i].sz; |
|
n->data.Bl->cols = (const char **) |
|
n->args->argv[i].value; |
|
} |
|
} |
|
|
/* The list type should come first. */ |
/* The list type should come first. */ |
|
|
|
|
pre_an(PRE_ARGS) |
pre_an(PRE_ARGS) |
{ |
{ |
|
|
if (NULL == n->args || 1 == n->args->argc) |
if (NULL == n->args) |
return(1); |
return(1); |
mdoc_vmsg(mdoc, MANDOCERR_SYNTARGCOUNT, |
if (n->args->argc > 1) |
n->line, n->pos, |
if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_ARGCOUNT)) |
"line arguments == 1 (have %d)", |
return(0); |
n->args->argc); |
|
return(0); |
if (MDOC_Split == n->args->argv[0].arg) |
|
n->data.An.auth = AUTH_split; |
|
else if (MDOC_Nosplit == n->args->argv[0].arg) |
|
n->data.An.auth = AUTH_nosplit; |
|
else |
|
abort(); |
|
|
|
return(1); |
} |
} |
|
|
|
|
Line 957 post_bf(POST_ARGS) |
|
Line 972 post_bf(POST_ARGS) |
|
} |
} |
|
|
np = mdoc->last; |
np = mdoc->last; |
|
assert(MDOC_BLOCK == np->parent->type); |
|
assert(MDOC_Bf == np->parent->tok); |
np->data.Bf = mandoc_calloc(1, sizeof(struct mdoc_bf)); |
np->data.Bf = mandoc_calloc(1, sizeof(struct mdoc_bf)); |
|
|
/* |
/* |
Line 964 post_bf(POST_ARGS) |
|
Line 981 post_bf(POST_ARGS) |
|
* If neither is specified, let it through with a warning. |
* If neither is specified, let it through with a warning. |
*/ |
*/ |
|
|
if (np->args && np->child) { |
if (np->parent->args && np->child) { |
mdoc_nmsg(mdoc, np, MANDOCERR_SYNTARGVCOUNT); |
mdoc_nmsg(mdoc, np, MANDOCERR_SYNTARGVCOUNT); |
return(0); |
return(0); |
} else if (NULL == np->args && NULL == np->child) |
} else if (NULL == np->parent->args && NULL == np->child) |
return(mdoc_nmsg(mdoc, np, MANDOCERR_FONTTYPE)); |
return(mdoc_nmsg(mdoc, np, MANDOCERR_FONTTYPE)); |
|
|
/* Extract argument into data. */ |
/* Extract argument into data. */ |
|
|
if (np->args) { |
if (np->parent->args) { |
arg = np->args->argv[0].arg; |
arg = np->parent->args->argv[0].arg; |
if (MDOC_Emphasis == arg) |
if (MDOC_Emphasis == arg) |
np->data.Bf->font = FONT_Em; |
np->data.Bf->font = FONT_Em; |
else if (MDOC_Literal == arg) |
else if (MDOC_Literal == arg) |
Line 1074 post_at(POST_ARGS) |
|
Line 1091 post_at(POST_ARGS) |
|
static int |
static int |
post_an(POST_ARGS) |
post_an(POST_ARGS) |
{ |
{ |
|
struct mdoc_node *np; |
|
|
if (mdoc->last->args) { |
np = mdoc->last; |
if (NULL == mdoc->last->child) |
if (AUTH__NONE != np->data.An.auth && np->child) |
return(1); |
return(mdoc_nmsg(mdoc, np, MANDOCERR_ARGCOUNT)); |
return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_ARGCOUNT)); |
if (AUTH__NONE != np->data.An.auth || np->child) |
} |
|
|
|
if (mdoc->last->child) |
|
return(1); |
return(1); |
return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOARGS)); |
return(mdoc_nmsg(mdoc, np, MANDOCERR_NOARGS)); |
} |
} |
|
|
|
|
Line 1125 post_it(POST_ARGS) |
|
Line 1140 post_it(POST_ARGS) |
|
if (NULL == mdoc->last->head->child) |
if (NULL == mdoc->last->head->child) |
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOARGS)) |
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOARGS)) |
return(0); |
return(0); |
if (NULL == mdoc->last->body->child) |
|
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOBODY)) |
|
return(0); |
|
break; |
break; |
case (LIST_bullet): |
case (LIST_bullet): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 1136 post_it(POST_ARGS) |
|
Line 1148 post_it(POST_ARGS) |
|
case (LIST_enum): |
case (LIST_enum): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case (LIST_hyphen): |
case (LIST_hyphen): |
|
if (NULL == mdoc->last->body->child) |
|
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOBODY)) |
|
return(0); |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case (LIST_item): |
case (LIST_item): |
if (mdoc->last->head->child) |
if (mdoc->last->head->child) |
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_ARGSLOST)) |
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_ARGSLOST)) |
return(0); |
return(0); |
if (NULL == mdoc->last->body->child) |
|
if ( ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOBODY)) |
|
return(0); |
|
break; |
break; |
case (LIST_column): |
case (LIST_column): |
cols = -1; |
cols = (int)n->data.Bl->ncols; |
for (i = 0; i < (int)n->args->argc; i++) |
|
if (MDOC_Column == n->args->argv[i].arg) { |
|
cols = (int)n->args->argv[i].sz; |
|
break; |
|
} |
|
|
|
assert(-1 != cols); |
|
assert(NULL == mdoc->last->head->child); |
assert(NULL == mdoc->last->head->child); |
|
|
if (NULL == mdoc->last->body->child) |
if (NULL == mdoc->last->body->child) |
Line 1193 post_bl_head(POST_ARGS) |
|
Line 1199 post_bl_head(POST_ARGS) |
|
n = mdoc->last->parent; |
n = mdoc->last->parent; |
|
|
if (LIST_column == n->data.Bl->type) { |
if (LIST_column == n->data.Bl->type) { |
for (i = 0; i < (int)n->args->argc; i++) |
if (n->data.Bl->ncols && mdoc->last->nchild) { |
if (MDOC_Column == n->args->argv[i].arg) |
|
break; |
|
assert(i < (int)n->args->argc); |
|
|
|
if (n->args->argv[i].sz && mdoc->last->nchild) { |
|
mdoc_nmsg(mdoc, n, MANDOCERR_COLUMNS); |
mdoc_nmsg(mdoc, n, MANDOCERR_COLUMNS); |
return(0); |
return(0); |
} |
} |