version 1.175, 2011/08/19 13:59:23 |
version 1.183, 2012/05/27 17:39:28 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 545 check_text(struct mdoc *m, int ln, int pos, char *p) |
|
Line 545 check_text(struct mdoc *m, int ln, int pos, char *p) |
|
{ |
{ |
char *cp; |
char *cp; |
|
|
cp = p; |
if (MDOC_LITERAL & m->flags) |
for (cp = p; NULL != (p = strchr(p, '\t')); p++) { |
return; |
if (MDOC_LITERAL & m->flags) |
|
continue; |
for (cp = p; NULL != (p = strchr(p, '\t')); p++) |
mdoc_pmsg(m, ln, (int)(p - cp), MANDOCERR_BADTAB); |
mdoc_pmsg(m, ln, pos + (int)(p - cp), MANDOCERR_BADTAB); |
} |
|
} |
} |
|
|
static int |
static int |
Line 662 pre_bl(PRE_ARGS) |
|
Line 661 pre_bl(PRE_ARGS) |
|
comp = 1; |
comp = 1; |
break; |
break; |
case (MDOC_Width): |
case (MDOC_Width): |
dup = (NULL != n->norm->Bl.width); |
/* NB: this can be empty! */ |
width = n->args->argv[i].value[0]; |
if (n->args->argv[i].sz) { |
|
width = n->args->argv[i].value[0]; |
|
dup = (NULL != n->norm->Bl.width); |
|
break; |
|
} |
|
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
break; |
break; |
case (MDOC_Offset): |
case (MDOC_Offset): |
/* NB: this can be empty! */ |
/* NB: this can be empty! */ |
Line 1695 post_rs(POST_ARGS) |
|
Line 1699 post_rs(POST_ARGS) |
|
} |
} |
|
|
/* |
/* |
|
* Nothing to sort if only invalid nodes were found |
|
* inside the `Rs' body. |
|
*/ |
|
|
|
if (NULL == mdoc->last->child) |
|
return(1); |
|
|
|
/* |
* The full `Rs' block needs special handling to order the |
* The full `Rs' block needs special handling to order the |
* sub-elements according to `rsord'. Pick through each element |
* sub-elements according to `rsord'. Pick through each element |
* and correctly order it. This is a insertion sort. |
* and correctly order it. This is a insertion sort. |
|
|
post_sh_head(POST_ARGS) |
post_sh_head(POST_ARGS) |
{ |
{ |
char buf[BUFSIZ]; |
char buf[BUFSIZ]; |
|
struct mdoc_node *n; |
enum mdoc_sec sec; |
enum mdoc_sec sec; |
int c; |
int c; |
|
|
Line 1853 post_sh_head(POST_ARGS) |
|
Line 1866 post_sh_head(POST_ARGS) |
|
|
|
mdoc->lastsec = sec; |
mdoc->lastsec = sec; |
|
|
|
/* |
|
* Set the section attribute for the current HEAD, for its |
|
* parent BLOCK, and for the HEAD children; the latter can |
|
* only be TEXT nodes, so no recursion is needed. |
|
* For other blocks and elements, including .Sh BODY, this is |
|
* done when allocating the node data structures, but for .Sh |
|
* BLOCK and HEAD, the section is still unknown at that time. |
|
*/ |
|
|
|
mdoc->last->parent->sec = sec; |
|
mdoc->last->sec = sec; |
|
for (n = mdoc->last->child; n; n = n->next) |
|
n->sec = sec; |
|
|
/* We don't care about custom sections after this. */ |
/* We don't care about custom sections after this. */ |
|
|
if (SEC_CUSTOM == sec) |
if (SEC_CUSTOM == sec) |
Line 2077 post_dt(POST_ARGS) |
|
Line 2104 post_dt(POST_ARGS) |
|
* arch = NULL |
* arch = NULL |
*/ |
*/ |
|
|
cp = mdoc_a2msec(nn->string); |
cp = mandoc_a2msec(nn->string); |
if (cp) { |
if (cp) { |
mdoc->meta.vol = mandoc_strdup(cp); |
mdoc->meta.vol = mandoc_strdup(cp); |
mdoc->meta.msec = mandoc_strdup(nn->string); |
mdoc->meta.msec = mandoc_strdup(nn->string); |