version 1.144, 2014/07/04 16:11:41 |
version 1.145, 2014/07/05 01:11:33 |
|
|
static int |
static int |
pre_bl(PRE_ARGS) |
pre_bl(PRE_ARGS) |
{ |
{ |
int i, comp, dup; |
|
const char *offs, *width; |
|
enum mdoc_list lt; |
|
struct mdoc_node *np; |
struct mdoc_node *np; |
|
struct mdoc_argv *argv; |
|
int i; |
|
enum mdoc_list lt; |
|
|
if (MDOC_BLOCK != n->type) { |
if (MDOC_BLOCK != n->type) { |
if (ENDBODY_NOT != n->end) { |
if (ENDBODY_NOT != n->end) { |
|
|
*/ |
*/ |
|
|
for (i = 0; n->args && i < (int)n->args->argc; i++) { |
for (i = 0; n->args && i < (int)n->args->argc; i++) { |
|
argv = n->args->argv + i; |
lt = LIST__NONE; |
lt = LIST__NONE; |
dup = comp = 0; |
switch (argv->arg) { |
width = offs = NULL; |
|
switch (n->args->argv[i].arg) { |
|
/* Set list types. */ |
/* Set list types. */ |
case MDOC_Bullet: |
case MDOC_Bullet: |
lt = LIST_bullet; |
lt = LIST_bullet; |
|
|
break; |
break; |
/* Set list arguments. */ |
/* Set list arguments. */ |
case MDOC_Compact: |
case MDOC_Compact: |
dup = n->norm->Bl.comp; |
if (n->norm->Bl.comp) |
comp = 1; |
mandoc_msg(MANDOCERR_ARG_REP, |
|
mdoc->parse, argv->line, |
|
argv->pos, "Bl -compact"); |
|
n->norm->Bl.comp = 1; |
break; |
break; |
case MDOC_Width: |
case MDOC_Width: |
/* NB: this can be empty! */ |
if (0 == argv->sz) { |
if (n->args->argv[i].sz) { |
mandoc_msg(MANDOCERR_ARG_EMPTY, |
width = n->args->argv[i].value[0]; |
mdoc->parse, argv->line, |
dup = (NULL != n->norm->Bl.width); |
argv->pos, "Bl -width"); |
|
n->norm->Bl.width = "0n"; |
break; |
break; |
} |
} |
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
if (NULL != n->norm->Bl.width) |
|
mandoc_vmsg(MANDOCERR_ARG_REP, |
|
mdoc->parse, argv->line, |
|
argv->pos, "Bl -width %s", |
|
argv->value[0]); |
|
n->norm->Bl.width = argv->value[0]; |
break; |
break; |
case MDOC_Offset: |
case MDOC_Offset: |
/* NB: this can be empty! */ |
if (0 == argv->sz) { |
if (n->args->argv[i].sz) { |
mandoc_msg(MANDOCERR_ARG_EMPTY, |
offs = n->args->argv[i].value[0]; |
mdoc->parse, argv->line, |
dup = (NULL != n->norm->Bl.offs); |
argv->pos, "Bl -offset"); |
break; |
break; |
} |
} |
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
if (NULL != n->norm->Bl.offs) |
|
mandoc_vmsg(MANDOCERR_ARG_REP, |
|
mdoc->parse, argv->line, |
|
argv->pos, "Bl -offset %s", |
|
argv->value[0]); |
|
n->norm->Bl.offs = argv->value[0]; |
break; |
break; |
default: |
default: |
continue; |
continue; |
} |
} |
|
|
/* Check: duplicate auxiliary arguments. */ |
|
|
|
if (dup) |
|
mdoc_nmsg(mdoc, n, MANDOCERR_ARGVREP); |
|
|
|
if (comp && ! dup) |
|
n->norm->Bl.comp = comp; |
|
if (offs && ! dup) |
|
n->norm->Bl.offs = offs; |
|
if (width && ! dup) |
|
n->norm->Bl.width = width; |
|
|
|
/* Check: multiple list types. */ |
/* Check: multiple list types. */ |
|
|
if (LIST__NONE != lt && n->norm->Bl.type != LIST__NONE) |
if (LIST__NONE != lt && n->norm->Bl.type != LIST__NONE) |
|
|
static int |
static int |
pre_bd(PRE_ARGS) |
pre_bd(PRE_ARGS) |
{ |
{ |
int i, dup, comp; |
|
enum mdoc_disp dt; |
|
const char *offs; |
|
struct mdoc_node *np; |
struct mdoc_node *np; |
|
struct mdoc_argv *argv; |
|
int i; |
|
enum mdoc_disp dt; |
|
|
if (MDOC_BLOCK != n->type) { |
if (MDOC_BLOCK != n->type) { |
if (ENDBODY_NOT != n->end) { |
if (ENDBODY_NOT != n->end) { |
|
|
} |
} |
|
|
for (i = 0; n->args && i < (int)n->args->argc; i++) { |
for (i = 0; n->args && i < (int)n->args->argc; i++) { |
|
argv = n->args->argv + i; |
dt = DISP__NONE; |
dt = DISP__NONE; |
dup = comp = 0; |
|
offs = NULL; |
|
|
|
switch (n->args->argv[i].arg) { |
switch (argv->arg) { |
case MDOC_Centred: |
case MDOC_Centred: |
dt = DISP_centred; |
dt = DISP_centred; |
break; |
break; |
|
|
mdoc_nmsg(mdoc, n, MANDOCERR_BADDISP); |
mdoc_nmsg(mdoc, n, MANDOCERR_BADDISP); |
return(0); |
return(0); |
case MDOC_Offset: |
case MDOC_Offset: |
/* NB: this can be empty! */ |
if (0 == argv->sz) { |
if (n->args->argv[i].sz) { |
mandoc_msg(MANDOCERR_ARG_EMPTY, |
offs = n->args->argv[i].value[0]; |
mdoc->parse, argv->line, |
dup = (NULL != n->norm->Bd.offs); |
argv->pos, "Bd -offset"); |
break; |
break; |
} |
} |
mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); |
if (NULL != n->norm->Bd.offs) |
|
mandoc_vmsg(MANDOCERR_ARG_REP, |
|
mdoc->parse, argv->line, |
|
argv->pos, "Bd -offset %s", |
|
argv->value[0]); |
|
n->norm->Bd.offs = argv->value[0]; |
break; |
break; |
case MDOC_Compact: |
case MDOC_Compact: |
comp = 1; |
if (n->norm->Bd.comp) |
dup = n->norm->Bd.comp; |
mandoc_msg(MANDOCERR_ARG_REP, |
|
mdoc->parse, argv->line, |
|
argv->pos, "Bd -compact"); |
|
n->norm->Bd.comp = 1; |
break; |
break; |
default: |
default: |
abort(); |
abort(); |
/* NOTREACHED */ |
/* NOTREACHED */ |
} |
} |
|
|
/* Check whether we have duplicates. */ |
|
|
|
if (dup) |
|
mdoc_nmsg(mdoc, n, MANDOCERR_ARGVREP); |
|
|
|
/* Make our auxiliary assignments. */ |
|
|
|
if (offs && ! dup) |
|
n->norm->Bd.offs = offs; |
|
if (comp && ! dup) |
|
n->norm->Bd.comp = comp; |
|
|
|
/* Check whether a type has already been assigned. */ |
/* Check whether a type has already been assigned. */ |
|
|