version 1.44, 2012/11/18 19:34:19 |
version 1.46, 2012/11/19 02:14:45 |
Line 251 static int outflags; |
|
Line 251 static int outflags; |
|
#define MMAN_PP (1 << 5) /* reset indentation etc. */ |
#define MMAN_PP (1 << 5) /* reset indentation etc. */ |
#define MMAN_Sm (1 << 6) /* horizontal spacing mode */ |
#define MMAN_Sm (1 << 6) /* horizontal spacing mode */ |
#define MMAN_Bk (1 << 7) /* word keep mode */ |
#define MMAN_Bk (1 << 7) /* word keep mode */ |
#define MMAN_An_split (1 << 8) /* author mode is "split" */ |
#define MMAN_Bk_susp (1 << 8) /* suspend this (after a macro) */ |
#define MMAN_An_nosplit (1 << 9) /* author mode is "nosplit" */ |
#define MMAN_An_split (1 << 9) /* author mode is "split" */ |
#define MMAN_PD (1 << 10) /* inter-paragraph spacing disabled */ |
#define MMAN_An_nosplit (1 << 10) /* author mode is "nosplit" */ |
|
#define MMAN_PD (1 << 11) /* inter-paragraph spacing disabled */ |
|
|
#define BL_STACK_MAX 32 |
#define BL_STACK_MAX 32 |
|
|
Line 334 print_word(const char *s) |
|
Line 335 print_word(const char *s) |
|
*/ |
*/ |
if (MMAN_spc_force & outflags || '\0' == s[0] || |
if (MMAN_spc_force & outflags || '\0' == s[0] || |
NULL == strchr(".,:;)]?!", s[0]) || '\0' != s[1]) { |
NULL == strchr(".,:;)]?!", s[0]) || '\0' != s[1]) { |
if (MMAN_Bk & outflags) { |
if (MMAN_Bk & outflags && |
|
! (MMAN_Bk_susp & outflags)) |
putchar('\\'); |
putchar('\\'); |
putchar('~'); |
putchar(' '); |
} else |
|
putchar(' '); |
|
if (TPremain) |
if (TPremain) |
TPremain--; |
TPremain--; |
} |
} |
Line 353 print_word(const char *s) |
|
Line 353 print_word(const char *s) |
|
outflags |= MMAN_spc; |
outflags |= MMAN_spc; |
else |
else |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc_force; |
outflags &= ~(MMAN_spc_force | MMAN_Bk_susp); |
|
|
for ( ; *s; s++) { |
for ( ; *s; s++) { |
switch (*s) { |
switch (*s) { |
case (ASCII_NBRSP): |
case (ASCII_NBRSP): |
printf("\\~"); |
printf("\\ "); |
break; |
break; |
case (ASCII_HYPH): |
case (ASCII_HYPH): |
putchar('-'); |
putchar('-'); |
Line 393 print_block(const char *s, int newflags) |
|
Line 393 print_block(const char *s, int newflags) |
|
print_line(".PD", 0); |
print_line(".PD", 0); |
outflags &= ~MMAN_PD; |
outflags &= ~MMAN_PD; |
} |
} |
} else if (! (MMAN_PD & outflags)) { |
} else if (! (MMAN_PD & outflags)) |
print_line(".PD 0", 0); |
print_line(".PD 0", MMAN_PD); |
outflags |= MMAN_PD; |
|
} |
|
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
print_word(s); |
print_word(s); |
outflags |= newflags; |
outflags |= MMAN_Bk_susp | newflags; |
} |
} |
|
|
static void |
static void |
Line 477 print_width(const char *v, const struct mdoc_node *chi |
|
Line 475 print_width(const char *v, const struct mdoc_node *chi |
|
* preserve its indentation. |
* preserve its indentation. |
*/ |
*/ |
if (Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
if (Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
snprintf(buf, sizeof(buf), "%ldn", |
snprintf(buf, sizeof(buf), "%ldn", |
Bl_stack[Bl_stack_len - 1]); |
Bl_stack[Bl_stack_len - 1]); |
print_word(buf); |
print_word(buf); |
Line 535 man_mdoc(void *arg, const struct mdoc *mdoc) |
|
Line 533 man_mdoc(void *arg, const struct mdoc *mdoc) |
|
meta = mdoc_meta(mdoc); |
meta = mdoc_meta(mdoc); |
n = mdoc_node(mdoc); |
n = mdoc_node(mdoc); |
|
|
printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"", |
printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", |
meta->title, meta->msec, meta->date, |
meta->title, meta->msec, meta->date, |
meta->os, meta->vol); |
meta->os, meta->vol); |
|
|
|
/* Disable hyphenation and if nroff, disable justification. */ |
|
printf(".nh\n.if n .ad l"); |
|
|
outflags = MMAN_nl | MMAN_Sm; |
outflags = MMAN_nl | MMAN_Sm; |
if (0 == fontqueue.size) { |
if (0 == fontqueue.size) { |
fontqueue.size = 8; |
fontqueue.size = 8; |
Line 555 print_node(DECL_ARGS) |
|
Line 556 print_node(DECL_ARGS) |
|
const struct mdoc_node *prev, *sub; |
const struct mdoc_node *prev, *sub; |
const struct manact *act; |
const struct manact *act; |
int cond, do_sub; |
int cond, do_sub; |
|
|
/* |
/* |
* Break the line if we were parsed subsequent the current node. |
* Break the line if we were parsed subsequent the current node. |
* This makes the page structure be more consistent. |
* This makes the page structure be more consistent. |
|
|
pre_sect(DECL_ARGS) |
pre_sect(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_HEAD != n->type) |
switch (n->type) { |
return(1); |
case (MDOC_HEAD): |
outflags |= MMAN_sp; |
outflags |= MMAN_sp; |
print_block(manacts[n->tok].prefix, 0); |
print_block(manacts[n->tok].prefix, 0); |
print_word(""); |
print_word(""); |
putchar('\"'); |
putchar('\"'); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
|
break; |
|
case (MDOC_BODY): |
|
if (MDOC_Sh == n->tok) { |
|
if (MDOC_SYNPRETTY & n->flags) |
|
outflags |= MMAN_Bk; |
|
else |
|
outflags &= ~MMAN_Bk; |
|
} |
|
break; |
|
default: |
|
break; |
|
} |
return(1); |
return(1); |
} |
} |
|
|
Line 816 pre_bd(DECL_ARGS) |
|
Line 829 pre_bd(DECL_ARGS) |
|
print_line(".nf", 0); |
print_line(".nf", 0); |
if (0 == n->norm->Bd.comp && NULL != n->parent->prev) |
if (0 == n->norm->Bd.comp && NULL != n->parent->prev) |
outflags |= MMAN_sp; |
outflags |= MMAN_sp; |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
print_offs(n->norm->Bd.offs); |
print_offs(n->norm->Bd.offs); |
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
return(1); |
return(1); |
Line 840 post_bd(DECL_ARGS) |
|
Line 853 post_bd(DECL_ARGS) |
|
*/ |
*/ |
if (NULL != n->parent->next && |
if (NULL != n->parent->next && |
Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
snprintf(buf, sizeof(buf), "%ldn", |
snprintf(buf, sizeof(buf), "%ldn", |
Bl_stack[Bl_stack_len - 1]); |
Bl_stack[Bl_stack_len - 1]); |
print_word(buf); |
print_word(buf); |
Line 1053 pre_fl(DECL_ARGS) |
|
Line 1066 pre_fl(DECL_ARGS) |
|
{ |
{ |
|
|
font_push('B'); |
font_push('B'); |
print_word("-"); |
print_word("\\-"); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
return(1); |
return(1); |
} |
} |
Line 1531 pre_ux(DECL_ARGS) |
|
Line 1544 pre_ux(DECL_ARGS) |
|
if (NULL == n->child) |
if (NULL == n->child) |
return(0); |
return(0); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
print_word("\\~"); |
print_word("\\ "); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
return(1); |
return(1); |
} |
} |