version 1.63, 2010/05/30 11:00:53 |
version 1.68, 2010/06/12 12:38:01 |
Line 68 static int post_st(POST_ARGS); |
|
Line 68 static int post_st(POST_ARGS); |
|
static int post_std(POST_ARGS); |
static int post_std(POST_ARGS); |
|
|
static int pre_bd(PRE_ARGS); |
static int pre_bd(PRE_ARGS); |
static int pre_bl(PRE_ARGS); |
|
static int pre_dl(PRE_ARGS); |
static int pre_dl(PRE_ARGS); |
static int pre_offset(PRE_ARGS); |
|
|
|
static const struct actions mdoc_actions[MDOC_MAX] = { |
static const struct actions mdoc_actions[MDOC_MAX] = { |
{ NULL, NULL }, /* Ap */ |
{ NULL, NULL }, /* Ap */ |
Line 84 static const struct actions mdoc_actions[MDOC_MAX] = { |
|
Line 82 static const struct actions mdoc_actions[MDOC_MAX] = { |
|
{ pre_dl, post_display }, /* Dl */ |
{ pre_dl, post_display }, /* Dl */ |
{ pre_bd, post_display }, /* Bd */ |
{ pre_bd, post_display }, /* Bd */ |
{ NULL, NULL }, /* Ed */ |
{ NULL, NULL }, /* Ed */ |
{ pre_bl, post_bl }, /* Bl */ |
{ NULL, post_bl }, /* Bl */ |
{ NULL, NULL }, /* El */ |
{ NULL, NULL }, /* El */ |
{ NULL, NULL }, /* It */ |
{ NULL, NULL }, /* It */ |
{ NULL, NULL }, /* Ad */ |
{ NULL, NULL }, /* Ad */ |
Line 194 static const struct actions mdoc_actions[MDOC_MAX] = { |
|
Line 192 static const struct actions mdoc_actions[MDOC_MAX] = { |
|
{ NULL, NULL }, /* br */ |
{ NULL, NULL }, /* br */ |
{ NULL, NULL }, /* sp */ |
{ NULL, NULL }, /* sp */ |
{ NULL, NULL }, /* %U */ |
{ NULL, NULL }, /* %U */ |
|
{ NULL, NULL }, /* Ta */ |
}; |
}; |
|
|
#define RSORD_MAX 14 |
#define RSORD_MAX 14 |
Line 936 pre_dl(PRE_ARGS) |
|
Line 935 pre_dl(PRE_ARGS) |
|
} |
} |
|
|
|
|
/* ARGSUSED */ |
|
static int |
static int |
pre_offset(PRE_ARGS) |
|
{ |
|
int i; |
|
|
|
/* |
|
* Make sure that an empty offset produces an 8n length space as |
|
* stipulated by mdoc.samples. |
|
*/ |
|
|
|
assert(n->args); |
|
for (i = 0; i < (int)n->args->argc; i++) { |
|
if (MDOC_Offset != n->args->argv[i].arg) |
|
continue; |
|
if (n->args->argv[i].sz) |
|
break; |
|
assert(1 == n->args->refcnt); |
|
/* If no value set, length of <string>. */ |
|
n->args->argv[i].sz++; |
|
n->args->argv[i].value = mandoc_malloc(sizeof(char *)); |
|
n->args->argv[i].value[0] = mandoc_strdup("8n"); |
|
break; |
|
} |
|
|
|
return(1); |
|
} |
|
|
|
|
|
static int |
|
pre_bl(PRE_ARGS) |
|
{ |
|
int pos; |
|
|
|
if (MDOC_BLOCK != n->type) { |
|
assert(n->parent); |
|
assert(MDOC_BLOCK == n->parent->type); |
|
assert(MDOC_Bl == n->parent->tok); |
|
assert(LIST__NONE != n->parent->data.list); |
|
n->data.list = n->parent->data.list; |
|
return(1); |
|
} |
|
|
|
assert(LIST__NONE == n->data.list); |
|
|
|
for (pos = 0; pos < (int)n->args->argc; pos++) { |
|
switch (n->args->argv[pos].arg) { |
|
case (MDOC_Bullet): |
|
n->data.list = LIST_bullet; |
|
break; |
|
case (MDOC_Dash): |
|
n->data.list = LIST_dash; |
|
break; |
|
case (MDOC_Enum): |
|
n->data.list = LIST_enum; |
|
break; |
|
case (MDOC_Hyphen): |
|
n->data.list = LIST_hyphen; |
|
break; |
|
case (MDOC_Item): |
|
n->data.list = LIST_item; |
|
break; |
|
case (MDOC_Tag): |
|
n->data.list = LIST_tag; |
|
break; |
|
case (MDOC_Diag): |
|
n->data.list = LIST_diag; |
|
break; |
|
case (MDOC_Hang): |
|
n->data.list = LIST_hang; |
|
break; |
|
case (MDOC_Ohang): |
|
n->data.list = LIST_ohang; |
|
break; |
|
case (MDOC_Inset): |
|
n->data.list = LIST_inset; |
|
break; |
|
case (MDOC_Column): |
|
n->data.list = LIST_column; |
|
break; |
|
default: |
|
break; |
|
} |
|
if (LIST__NONE != n->data.list) |
|
break; |
|
} |
|
|
|
assert(LIST__NONE != n->data.list); |
|
return(pre_offset(m, n)); |
|
} |
|
|
|
|
|
static int |
|
pre_bd(PRE_ARGS) |
pre_bd(PRE_ARGS) |
{ |
{ |
int i; |
|
|
|
if (MDOC_BLOCK == n->type) |
|
return(pre_offset(m, n)); |
|
if (MDOC_BODY != n->type) |
if (MDOC_BODY != n->type) |
return(1); |
return(1); |
|
|
/* Enter literal context if `Bd -literal' or `-unfilled'. */ |
if (DISP_literal == n->data.Bd.type) |
|
m->flags |= MDOC_LITERAL; |
for (n = n->parent, i = 0; i < (int)n->args->argc; i++) |
if (DISP_unfilled == n->data.Bd.type) |
if (MDOC_Literal == n->args->argv[i].arg) |
m->flags |= MDOC_LITERAL; |
m->flags |= MDOC_LITERAL; |
|
else if (MDOC_Unfilled == n->args->argv[i].arg) |
|
m->flags |= MDOC_LITERAL; |
|
|
|
return(1); |
return(1); |
} |
} |