version 1.116, 2017/05/30 16:31:29 |
version 1.123, 2018/01/13 05:23:18 |
Line 125 static void print_count(int *); |
|
Line 125 static void print_count(int *); |
|
static void print_node(DECL_ARGS); |
static void print_node(DECL_ARGS); |
|
|
static const void_fp roff_manacts[ROFF_MAX] = { |
static const void_fp roff_manacts[ROFF_MAX] = { |
pre_br, |
pre_br, /* br */ |
pre_ft, |
pre_onearg, /* ce */ |
pre_onearg, |
pre_ft, /* ft */ |
pre_sp, |
pre_onearg, /* ll */ |
pre_ta, |
pre_onearg, /* mc */ |
pre_onearg, |
pre_onearg, /* po */ |
|
pre_onearg, /* rj */ |
|
pre_sp, /* sp */ |
|
pre_ta, /* ta */ |
|
pre_onearg, /* ti */ |
}; |
}; |
|
|
static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = { |
static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = { |
Line 194 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
Line 198 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
{ NULL, pre_bf, post_bf, NULL, NULL }, /* Bf */ |
{ NULL, pre_bf, post_bf, NULL, NULL }, /* Bf */ |
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bo */ |
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bo */ |
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bq */ |
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bq */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Bsx */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Bsx */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Bx */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Bx */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Db */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Db */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Dc */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Dc */ |
{ cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Do */ |
{ cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Do */ |
Line 204 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
Line 208 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
{ NULL, NULL, NULL, NULL, NULL }, /* Ef */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ef */ |
{ NULL, pre_em, post_font, NULL, NULL }, /* Em */ |
{ NULL, pre_em, post_font, NULL, NULL }, /* Em */ |
{ cond_body, pre_eo, post_eo, NULL, NULL }, /* Eo */ |
{ cond_body, pre_eo, post_eo, NULL, NULL }, /* Eo */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Fx */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Fx */ |
{ NULL, pre_sy, post_font, NULL, NULL }, /* Ms */ |
{ NULL, pre_sy, post_font, NULL, NULL }, /* Ms */ |
{ NULL, pre_no, NULL, NULL, NULL }, /* No */ |
{ NULL, pre_no, NULL, NULL, NULL }, /* No */ |
{ NULL, pre_ns, NULL, NULL, NULL }, /* Ns */ |
{ NULL, pre_ns, NULL, NULL, NULL }, /* Ns */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Nx */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Nx */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ox */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Ox */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Pc */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Pc */ |
{ NULL, NULL, post_pf, NULL, NULL }, /* Pf */ |
{ NULL, NULL, post_pf, NULL, NULL }, /* Pf */ |
{ cond_body, pre_enc, post_enc, "(", ")" }, /* Po */ |
{ cond_body, pre_enc, post_enc, "(", ")" }, /* Po */ |
Line 250 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
Line 254 static const struct manact __manacts[MDOC_MAX - MDOC_D |
|
{ NULL, NULL, post_percent, NULL, NULL }, /* %C */ |
{ NULL, NULL, post_percent, NULL, NULL }, /* %C */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Es */ |
{ NULL, pre_skip, NULL, NULL, NULL }, /* Es */ |
{ cond_body, pre_en, post_en, NULL, NULL }, /* En */ |
{ cond_body, pre_en, post_en, NULL, NULL }, /* En */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Dx */ |
{ NULL, pre_bk, post_bk, NULL, NULL }, /* Dx */ |
{ NULL, NULL, post_percent, NULL, NULL }, /* %Q */ |
{ NULL, NULL, post_percent, NULL, NULL }, /* %Q */ |
{ NULL, NULL, post_percent, NULL, NULL }, /* %U */ |
{ NULL, NULL, post_percent, NULL, NULL }, /* %U */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ta */ |
{ NULL, NULL, NULL, NULL, NULL }, /* Ta */ |
Line 474 print_offs(const char *v, int keywords) |
|
Line 478 print_offs(const char *v, int keywords) |
|
{ |
{ |
char buf[24]; |
char buf[24]; |
struct roffsu su; |
struct roffsu su; |
|
const char *end; |
int sz; |
int sz; |
|
|
print_line(".RS", MMAN_Bk_susp); |
print_line(".RS", MMAN_Bk_susp); |
Line 485 print_offs(const char *v, int keywords) |
|
Line 490 print_offs(const char *v, int keywords) |
|
sz = 6; |
sz = 6; |
else if (keywords && !strcmp(v, "indent-two")) |
else if (keywords && !strcmp(v, "indent-two")) |
sz = 12; |
sz = 12; |
else if (a2roffsu(v, &su, SCALE_EN) > 1) { |
else { |
if (SCALE_EN == su.unit) |
end = a2roffsu(v, &su, SCALE_EN); |
|
if (end == NULL || *end != '\0') |
|
sz = man_strlen(v); |
|
else if (SCALE_EN == su.unit) |
sz = su.scale; |
sz = su.scale; |
else { |
else { |
/* |
/* |
Line 500 print_offs(const char *v, int keywords) |
|
Line 508 print_offs(const char *v, int keywords) |
|
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
return; |
return; |
} |
} |
} else |
} |
sz = man_strlen(v); |
|
|
|
/* |
/* |
* We are inside an enclosing list. |
* We are inside an enclosing list. |
Line 523 print_width(const struct mdoc_bl *bl, const struct rof |
|
Line 530 print_width(const struct mdoc_bl *bl, const struct rof |
|
{ |
{ |
char buf[24]; |
char buf[24]; |
struct roffsu su; |
struct roffsu su; |
|
const char *end; |
int numeric, remain, sz, chsz; |
int numeric, remain, sz, chsz; |
|
|
numeric = 1; |
numeric = 1; |
Line 531 print_width(const struct mdoc_bl *bl, const struct rof |
|
Line 539 print_width(const struct mdoc_bl *bl, const struct rof |
|
/* Convert the width into a number (of characters). */ |
/* Convert the width into a number (of characters). */ |
if (bl->width == NULL) |
if (bl->width == NULL) |
sz = (bl->type == LIST_hang) ? 6 : 0; |
sz = (bl->type == LIST_hang) ? 6 : 0; |
else if (a2roffsu(bl->width, &su, SCALE_MAX) > 1) { |
else { |
if (SCALE_EN == su.unit) |
end = a2roffsu(bl->width, &su, SCALE_MAX); |
|
if (end == NULL || *end != '\0') |
|
sz = man_strlen(bl->width); |
|
else if (SCALE_EN == su.unit) |
sz = su.scale; |
sz = su.scale; |
else { |
else { |
sz = 0; |
sz = 0; |
numeric = 0; |
numeric = 0; |
} |
} |
} else |
} |
sz = man_strlen(bl->width); |
|
|
|
/* XXX Rough estimation, might have multiple parts. */ |
/* XXX Rough estimation, might have multiple parts. */ |
if (bl->type == LIST_enum) |
if (bl->type == LIST_enum) |
Line 982 post_bf(DECL_ARGS) |
|
Line 992 post_bf(DECL_ARGS) |
|
static int |
static int |
pre_bk(DECL_ARGS) |
pre_bk(DECL_ARGS) |
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_BLOCK: |
case ROFFT_BLOCK: |
return 1; |
return 1; |
case ROFFT_BODY: |
case ROFFT_BODY: |
|
case ROFFT_ELEM: |
outflags |= MMAN_Bk; |
outflags |= MMAN_Bk; |
return 1; |
return 1; |
default: |
default: |
Line 997 pre_bk(DECL_ARGS) |
|
Line 1007 pre_bk(DECL_ARGS) |
|
static void |
static void |
post_bk(DECL_ARGS) |
post_bk(DECL_ARGS) |
{ |
{ |
|
switch (n->type) { |
if (n->type == ROFFT_BODY) |
case ROFFT_ELEM: |
|
while ((n = n->parent) != NULL) |
|
if (n->tok == MDOC_Bk) |
|
return; |
|
/* FALLTHROUGH */ |
|
case ROFFT_BODY: |
outflags &= ~MMAN_Bk; |
outflags &= ~MMAN_Bk; |
|
break; |
|
default: |
|
break; |
|
} |
} |
} |
|
|
static int |
static int |
|
|
pre_lk(DECL_ARGS) |
pre_lk(DECL_ARGS) |
{ |
{ |
const struct roff_node *link, *descr, *punct; |
const struct roff_node *link, *descr, *punct; |
int display; |
|
|
|
if ((link = n->child) == NULL) |
if ((link = n->child) == NULL) |
return 0; |
return 0; |
Line 1551 pre_lk(DECL_ARGS) |
|
Line 1569 pre_lk(DECL_ARGS) |
|
} |
} |
|
|
/* Link target. */ |
/* Link target. */ |
display = man_strlen(link->string) >= 26; |
|
if (display) { |
|
print_line(".RS", MMAN_Bk_susp); |
|
print_word("6n"); |
|
outflags |= MMAN_nl; |
|
} |
|
font_push('B'); |
font_push('B'); |
print_word(link->string); |
print_word(link->string); |
font_pop(); |
font_pop(); |
Line 1566 pre_lk(DECL_ARGS) |
|
Line 1578 pre_lk(DECL_ARGS) |
|
print_word(punct->string); |
print_word(punct->string); |
punct = punct->next; |
punct = punct->next; |
} |
} |
if (display) |
|
print_line(".RE", MMAN_nl); |
|
return 0; |
return 0; |
} |
} |
|
|
Line 1581 pre_onearg(DECL_ARGS) |
|
Line 1591 pre_onearg(DECL_ARGS) |
|
if (n->child != NULL) |
if (n->child != NULL) |
print_word(n->child->string); |
print_word(n->child->string); |
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
|
if (n->tok == ROFF_ce) |
|
for (n = n->child->next; n != NULL; n = n->next) |
|
print_node(meta, n); |
} |
} |
|
|
static int |
static int |