version 1.128, 2010/11/29 15:45:15 |
version 1.129, 2010/11/29 16:06:46 |
Line 193 const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 193 const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, posts_nm }, /* Nm */ |
{ NULL, posts_nm }, /* Nm */ |
{ NULL, posts_wline }, /* Op */ |
{ NULL, posts_wline }, /* Op */ |
{ NULL, NULL }, /* Ot */ |
{ NULL, NULL }, /* Ot */ |
{ NULL, NULL }, /* Pa */ |
{ NULL, posts_defaults }, /* Pa */ |
{ pres_rv, NULL }, /* Rv */ |
{ pres_rv, NULL }, /* Rv */ |
{ NULL, posts_st }, /* St */ |
{ NULL, posts_st }, /* St */ |
{ NULL, NULL }, /* Va */ |
{ NULL, NULL }, /* Va */ |
Line 1154 post_vt(POST_ARGS) |
|
Line 1154 post_vt(POST_ARGS) |
|
static int |
static int |
post_nm(POST_ARGS) |
post_nm(POST_ARGS) |
{ |
{ |
|
struct mdoc_node *nn; |
|
char buf[BUFSIZ]; |
|
|
if (mdoc->last->child) |
/* If no child specified, make sure we have the meta name. */ |
|
|
|
if (NULL == mdoc->last->child && NULL == mdoc->meta.name) { |
|
mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NONAME); |
return(1); |
return(1); |
if (mdoc->meta.name) |
} else if (mdoc->meta.name) |
return(1); |
return(1); |
return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NONAME)); |
|
|
/* If no meta name, set it from the child. */ |
|
|
|
buf[0] = '\0'; |
|
|
|
for (nn = mdoc->last->child; nn; nn = nn->next) { |
|
/* XXX - copied from concat(). */ |
|
assert(MDOC_TEXT == nn->type); |
|
|
|
if (strlcat(buf, nn->string, BUFSIZ) >= BUFSIZ) { |
|
mdoc_nmsg(mdoc, nn, MANDOCERR_MEM); |
|
return(0); |
|
} |
|
|
|
if (NULL == nn->next) |
|
continue; |
|
|
|
if (strlcat(buf, " ", BUFSIZ) >= BUFSIZ) { |
|
mdoc_nmsg(mdoc, nn, MANDOCERR_MEM); |
|
return(0); |
|
} |
|
} |
|
|
|
mdoc->meta.name = mandoc_strdup(buf); |
|
return(1); |
} |
} |
|
|
static int |
static int |
Line 1186 post_defaults(POST_ARGS) |
|
Line 1215 post_defaults(POST_ARGS) |
|
|
|
/* |
/* |
* The `Ar' defaults to "file ..." if no value is provided as an |
* The `Ar' defaults to "file ..." if no value is provided as an |
* argument; the `Mt' macro uses "~"; the `Li' just gets an |
* argument; the `Mt' and `Pa' macros use "~"; the `Li' just |
* empty string. |
* gets an empty string. |
*/ |
*/ |
|
|
if (mdoc->last->child) |
if (mdoc->last->child) |
Line 1213 post_defaults(POST_ARGS) |
|
Line 1242 post_defaults(POST_ARGS) |
|
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "")) |
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "")) |
return(0); |
return(0); |
break; |
break; |
|
case (MDOC_Pa): |
|
/* FALLTHROUGH */ |
case (MDOC_Mt): |
case (MDOC_Mt): |
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "~")) |
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "~")) |
return(0); |
return(0); |