version 1.92, 2010/06/09 19:22:56 |
version 1.93, 2010/06/12 10:09:19 |
Line 683 pre_bl(PRE_ARGS) |
|
Line 683 pre_bl(PRE_ARGS) |
|
static int |
static int |
pre_bd(PRE_ARGS) |
pre_bd(PRE_ARGS) |
{ |
{ |
int i, type, err; |
int i; |
|
enum mdoc_disp dt; |
|
|
if (MDOC_BLOCK != n->type) |
if (MDOC_BLOCK != n->type) { |
|
assert(n->parent); |
|
assert(MDOC_BLOCK == n->parent->type); |
|
assert(MDOC_Bd == n->parent->tok); |
|
assert(DISP__NONE != n->parent->data.disp); |
|
n->data.disp = n->parent->data.disp; |
return(1); |
return(1); |
if (NULL == n->args) { |
|
mdoc_nmsg(mdoc, n, MANDOCERR_DISPTYPE); |
|
return(0); |
|
} |
} |
|
|
/* Make sure that only one type of display is specified. */ |
assert(DISP__NONE == n->data.disp); |
|
|
/* LINTED */ |
/* LINTED */ |
for (i = 0, err = type = 0; ! err && |
for (i = 0; n->args && i < (int)n->args->argc; i++) { |
i < (int)n->args->argc; i++) |
dt = DISP__NONE; |
switch (n->args->argv[i].arg) { |
switch (n->args->argv[i].arg) { |
case (MDOC_Centred): |
case (MDOC_Centred): |
/* FALLTHROUGH */ |
dt = DISP_centred; |
|
break; |
case (MDOC_Ragged): |
case (MDOC_Ragged): |
/* FALLTHROUGH */ |
dt = DISP_ragged; |
|
break; |
case (MDOC_Unfilled): |
case (MDOC_Unfilled): |
/* FALLTHROUGH */ |
dt = DISP_unfilled; |
|
break; |
case (MDOC_Filled): |
case (MDOC_Filled): |
/* FALLTHROUGH */ |
dt = DISP_filled; |
|
break; |
case (MDOC_Literal): |
case (MDOC_Literal): |
if (0 == type++) |
dt = DISP_literal; |
break; |
|
if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPREP)) |
|
return(0); |
|
break; |
break; |
|
case (MDOC_File): |
|
mdoc_nmsg(mdoc, n, MANDOCERR_BADDISP); |
|
return(0); |
|
case (MDOC_Offset): |
|
/* FALLTHROUGH */ |
|
case (MDOC_Compact): |
|
/* FALLTHROUGH */ |
default: |
default: |
break; |
break; |
} |
} |
|
|
if (type) |
if (DISP__NONE != dt && n->data.disp != DISP__NONE) |
return(1); |
if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPREP)) |
mdoc_nmsg(mdoc, n, MANDOCERR_DISPTYPE); |
return(0); |
return(0); |
|
|
if (DISP__NONE != dt && n->data.disp == DISP__NONE) |
|
n->data.disp = dt; |
|
} |
|
|
|
if (DISP__NONE == n->data.disp) { |
|
if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPTYPE)) |
|
return(0); |
|
n->data.disp = DISP_ragged; |
|
} |
|
|
|
return(1); |
} |
} |
|
|
|
|