version 1.88, 2015/02/17 20:37:17 |
version 1.89, 2015/04/02 21:36:50 |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
|
|
#include "mandoc.h" |
|
#include "mandoc_aux.h" |
#include "mandoc_aux.h" |
#include "out.h" |
#include "mandoc.h" |
#include "man.h" |
#include "roff.h" |
#include "mdoc.h" |
#include "mdoc.h" |
|
#include "man.h" |
|
#include "out.h" |
#include "main.h" |
#include "main.h" |
|
|
#define DECL_ARGS const struct mdoc_meta *meta, struct mdoc_node *n |
#define DECL_ARGS const struct mdoc_meta *meta, struct mdoc_node *n |
Line 492 print_width(const struct mdoc_bl *bl, const struct mdo |
|
Line 493 print_width(const struct mdoc_bl *bl, const struct mdo |
|
/* XXX Rough estimation, might have multiple parts. */ |
/* XXX Rough estimation, might have multiple parts. */ |
if (bl->type == LIST_enum) |
if (bl->type == LIST_enum) |
chsz = (bl->count > 8) + 1; |
chsz = (bl->count > 8) + 1; |
else if (child != NULL && child->type == MDOC_TEXT) |
else if (child != NULL && child->type == ROFFT_TEXT) |
chsz = strlen(child->string); |
chsz = strlen(child->string); |
else |
else |
chsz = 0; |
chsz = 0; |
Line 592 print_node(DECL_ARGS) |
|
Line 593 print_node(DECL_ARGS) |
|
do_sub = 1; |
do_sub = 1; |
n->flags &= ~MDOC_ENDED; |
n->flags &= ~MDOC_ENDED; |
|
|
if (MDOC_TEXT == n->type) { |
if (n->type == ROFFT_TEXT) { |
/* |
/* |
* Make sure that we don't happen to start with a |
* Make sure that we don't happen to start with a |
* control character at the start of a line. |
* control character at the start of a line. |
|
|
cond_head(DECL_ARGS) |
cond_head(DECL_ARGS) |
{ |
{ |
|
|
return(MDOC_HEAD == n->type); |
return(n->type == ROFFT_HEAD); |
} |
} |
|
|
static int |
static int |
cond_body(DECL_ARGS) |
cond_body(DECL_ARGS) |
{ |
{ |
|
|
return(MDOC_BODY == n->type); |
return(n->type == ROFFT_BODY); |
} |
} |
|
|
static int |
static int |
|
|
pre_sect(DECL_ARGS) |
pre_sect(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_HEAD == n->type) { |
if (n->type == ROFFT_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(""); |
|
|
post_sect(DECL_ARGS) |
post_sect(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_HEAD != n->type) |
if (n->type != ROFFT_HEAD) |
return; |
return; |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
print_word(""); |
print_word(""); |
Line 932 pre_bf(DECL_ARGS) |
|
Line 933 pre_bf(DECL_ARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_BLOCK: |
case ROFFT_BLOCK: |
return(1); |
return(1); |
case MDOC_BODY: |
case ROFFT_BODY: |
break; |
break; |
default: |
default: |
return(0); |
return(0); |
|
|
post_bf(DECL_ARGS) |
post_bf(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_BODY == n->type) |
if (n->type == ROFFT_BODY) |
font_pop(); |
font_pop(); |
} |
} |
|
|
Line 966 pre_bk(DECL_ARGS) |
|
Line 967 pre_bk(DECL_ARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_BLOCK: |
case ROFFT_BLOCK: |
return(1); |
return(1); |
case MDOC_BODY: |
case ROFFT_BODY: |
outflags |= MMAN_Bk; |
outflags |= MMAN_Bk; |
return(1); |
return(1); |
default: |
default: |
|
|
post_bk(DECL_ARGS) |
post_bk(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_BODY == n->type) |
if (n->type == ROFFT_BODY) |
outflags &= ~MMAN_Bk; |
outflags &= ~MMAN_Bk; |
} |
} |
|
|
Line 1235 post_fl(DECL_ARGS) |
|
Line 1236 post_fl(DECL_ARGS) |
|
font_pop(); |
font_pop(); |
if ( ! (n->nchild || |
if ( ! (n->nchild || |
n->next == NULL || |
n->next == NULL || |
n->next->type == MDOC_TEXT || |
n->next->type == ROFFT_TEXT || |
n->next->flags & MDOC_LINE)) |
n->next->flags & MDOC_LINE)) |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
} |
} |
Line 1282 pre_fo(DECL_ARGS) |
|
Line 1283 pre_fo(DECL_ARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_BLOCK: |
case ROFFT_BLOCK: |
pre_syn(n); |
pre_syn(n); |
break; |
break; |
case MDOC_HEAD: |
case ROFFT_HEAD: |
if (n->child == NULL) |
if (n->child == NULL) |
return(0); |
return(0); |
if (MDOC_SYNPRETTY & n->flags) |
if (MDOC_SYNPRETTY & n->flags) |
print_block(".HP 4n", MMAN_nl); |
print_block(".HP 4n", MMAN_nl); |
font_push('B'); |
font_push('B'); |
break; |
break; |
case MDOC_BODY: |
case ROFFT_BODY: |
outflags &= ~(MMAN_spc | MMAN_nl); |
outflags &= ~(MMAN_spc | MMAN_nl); |
print_word("("); |
print_word("("); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
Line 1308 post_fo(DECL_ARGS) |
|
Line 1309 post_fo(DECL_ARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_HEAD: |
case ROFFT_HEAD: |
if (n->child != NULL) |
if (n->child != NULL) |
font_pop(); |
font_pop(); |
break; |
break; |
case MDOC_BODY: |
case ROFFT_BODY: |
post_fn(meta, n); |
post_fn(meta, n); |
break; |
break; |
default: |
default: |
Line 1368 pre_it(DECL_ARGS) |
|
Line 1369 pre_it(DECL_ARGS) |
|
const struct mdoc_node *bln; |
const struct mdoc_node *bln; |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_HEAD: |
case ROFFT_HEAD: |
outflags |= MMAN_PP | MMAN_nl; |
outflags |= MMAN_PP | MMAN_nl; |
bln = n->parent->parent; |
bln = n->parent->parent; |
if (0 == bln->norm->Bl.comp || |
if (0 == bln->norm->Bl.comp || |
Line 1467 post_it(DECL_ARGS) |
|
Line 1468 post_it(DECL_ARGS) |
|
bln = n->parent->parent; |
bln = n->parent->parent; |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_HEAD: |
case ROFFT_HEAD: |
switch (bln->norm->Bl.type) { |
switch (bln->norm->Bl.type) { |
case LIST_diag: |
case LIST_diag: |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
Line 1480 post_it(DECL_ARGS) |
|
Line 1481 post_it(DECL_ARGS) |
|
break; |
break; |
} |
} |
break; |
break; |
case MDOC_BODY: |
case ROFFT_BODY: |
switch (bln->norm->Bl.type) { |
switch (bln->norm->Bl.type) { |
case LIST_bullet: |
case LIST_bullet: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 1574 pre_nm(DECL_ARGS) |
|
Line 1575 pre_nm(DECL_ARGS) |
|
{ |
{ |
char *name; |
char *name; |
|
|
if (MDOC_BLOCK == n->type) { |
if (n->type == ROFFT_BLOCK) { |
outflags |= MMAN_Bk; |
outflags |= MMAN_Bk; |
pre_syn(n); |
pre_syn(n); |
} |
} |
if (MDOC_ELEM != n->type && MDOC_HEAD != n->type) |
if (n->type != ROFFT_ELEM && n->type != ROFFT_HEAD) |
return(1); |
return(1); |
name = n->child ? n->child->string : meta->name; |
name = n->child ? n->child->string : meta->name; |
if (NULL == name) |
if (NULL == name) |
return(0); |
return(0); |
if (MDOC_HEAD == n->type) { |
if (n->type == ROFFT_HEAD) { |
if (NULL == n->parent->prev) |
if (NULL == n->parent->prev) |
outflags |= MMAN_sp; |
outflags |= MMAN_sp; |
print_block(".HP", 0); |
print_block(".HP", 0); |
Line 1601 post_nm(DECL_ARGS) |
|
Line 1602 post_nm(DECL_ARGS) |
|
{ |
{ |
|
|
switch (n->type) { |
switch (n->type) { |
case MDOC_BLOCK: |
case ROFFT_BLOCK: |
outflags &= ~MMAN_Bk; |
outflags &= ~MMAN_Bk; |
break; |
break; |
case MDOC_HEAD: |
case ROFFT_HEAD: |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case MDOC_ELEM: |
case ROFFT_ELEM: |
if (n->child != NULL || meta->name != NULL) |
if (n->child != NULL || meta->name != NULL) |
font_pop(); |
font_pop(); |
break; |
break; |
Line 1770 pre_vt(DECL_ARGS) |
|
Line 1771 pre_vt(DECL_ARGS) |
|
|
|
if (MDOC_SYNPRETTY & n->flags) { |
if (MDOC_SYNPRETTY & n->flags) { |
switch (n->type) { |
switch (n->type) { |
case MDOC_BLOCK: |
case ROFFT_BLOCK: |
pre_syn(n); |
pre_syn(n); |
return(1); |
return(1); |
case MDOC_BODY: |
case ROFFT_BODY: |
break; |
break; |
default: |
default: |
return(0); |
return(0); |
|
|
post_vt(DECL_ARGS) |
post_vt(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_SYNPRETTY & n->flags && MDOC_BODY != n->type) |
if (n->flags & MDOC_SYNPRETTY && n->type != ROFFT_BODY) |
return; |
return; |
font_pop(); |
font_pop(); |
} |
} |