version 1.138, 2017/05/04 22:16:09 |
version 1.145, 2017/06/25 11:42:02 |
|
|
#include <string.h> |
#include <string.h> |
|
|
#include "mandoc_aux.h" |
#include "mandoc_aux.h" |
|
#include "mandoc.h" |
#include "roff.h" |
#include "roff.h" |
#include "man.h" |
#include "man.h" |
#include "out.h" |
#include "out.h" |
Line 69 static int man_ign_pre(MAN_ARGS); |
|
Line 70 static int man_ign_pre(MAN_ARGS); |
|
static int man_in_pre(MAN_ARGS); |
static int man_in_pre(MAN_ARGS); |
static void man_root_post(MAN_ARGS); |
static void man_root_post(MAN_ARGS); |
static void man_root_pre(MAN_ARGS); |
static void man_root_pre(MAN_ARGS); |
static int man_sp_pre(MAN_ARGS); |
|
|
|
static const struct htmlman __mans[MAN_MAX - MAN_TH] = { |
static const struct htmlman __mans[MAN_MAX - MAN_TH] = { |
{ NULL, NULL }, /* TH */ |
{ NULL, NULL }, /* TH */ |
Line 92 static const struct htmlman __mans[MAN_MAX - MAN_TH] = |
|
Line 92 static const struct htmlman __mans[MAN_MAX - MAN_TH] = |
|
{ man_I_pre, NULL }, /* I */ |
{ man_I_pre, NULL }, /* I */ |
{ man_alt_pre, NULL }, /* IR */ |
{ man_alt_pre, NULL }, /* IR */ |
{ man_alt_pre, NULL }, /* RI */ |
{ man_alt_pre, NULL }, /* RI */ |
{ man_sp_pre, NULL }, /* sp */ |
|
{ NULL, NULL }, /* nf */ |
{ NULL, NULL }, /* nf */ |
{ NULL, NULL }, /* fi */ |
{ NULL, NULL }, /* fi */ |
{ NULL, NULL }, /* RE */ |
{ NULL, NULL }, /* RE */ |
Line 102 static const struct htmlman __mans[MAN_MAX - MAN_TH] = |
|
Line 101 static const struct htmlman __mans[MAN_MAX - MAN_TH] = |
|
{ man_ign_pre, NULL }, /* PD */ |
{ man_ign_pre, NULL }, /* PD */ |
{ man_ign_pre, NULL }, /* AT */ |
{ man_ign_pre, NULL }, /* AT */ |
{ man_in_pre, NULL }, /* in */ |
{ man_in_pre, NULL }, /* in */ |
{ man_ign_pre, NULL }, /* ft */ |
|
{ man_OP_pre, NULL }, /* OP */ |
{ man_OP_pre, NULL }, /* OP */ |
{ NULL, NULL }, /* EX */ |
{ NULL, NULL }, /* EX */ |
{ NULL, NULL }, /* EE */ |
{ NULL, NULL }, /* EE */ |
{ man_UR_pre, NULL }, /* UR */ |
{ man_UR_pre, NULL }, /* UR */ |
{ NULL, NULL }, /* UE */ |
{ NULL, NULL }, /* UE */ |
{ man_ign_pre, NULL }, /* ll */ |
{ man_UR_pre, NULL }, /* MT */ |
|
{ NULL, NULL }, /* ME */ |
}; |
}; |
static const struct htmlman *const mans = __mans - MAN_TH; |
static const struct htmlman *const mans = __mans - MAN_TH; |
|
|
Line 233 print_man_node(MAN_ARGS) |
|
Line 232 print_man_node(MAN_ARGS) |
|
case MAN_P: /* reopen .nf in the body. */ |
case MAN_P: /* reopen .nf in the body. */ |
case MAN_RS: |
case MAN_RS: |
case MAN_UR: |
case MAN_UR: |
|
case MAN_MT: |
fillmode(h, MAN_fi); |
fillmode(h, MAN_fi); |
break; |
break; |
default: |
default: |
Line 255 print_man_node(MAN_ARGS) |
|
Line 255 print_man_node(MAN_ARGS) |
|
case ROFFT_TEXT: |
case ROFFT_TEXT: |
if (fillmode(h, want_fillmode) == MAN_fi && |
if (fillmode(h, want_fillmode) == MAN_fi && |
want_fillmode == MAN_fi && |
want_fillmode == MAN_fi && |
n->flags & NODE_LINE && *n->string == ' ') |
n->flags & NODE_LINE && *n->string == ' ' && |
|
(h->flags & HTML_NONEWLINE) == 0) |
print_otag(h, TAG_BR, ""); |
print_otag(h, TAG_BR, ""); |
if (*n->string != '\0') |
if (*n->string != '\0') |
break; |
break; |
Line 306 print_man_node(MAN_ARGS) |
|
Line 307 print_man_node(MAN_ARGS) |
|
t = h->tag; |
t = h->tag; |
if (n->tok < ROFF_MAX) { |
if (n->tok < ROFF_MAX) { |
roff_html_pre(h, n); |
roff_html_pre(h, n); |
|
child = 0; |
break; |
break; |
} |
} |
|
|
Line 360 fillmode(struct html *h, int want) |
|
Line 362 fillmode(struct html *h, int want) |
|
static int |
static int |
a2width(const struct roff_node *n, struct roffsu *su) |
a2width(const struct roff_node *n, struct roffsu *su) |
{ |
{ |
|
|
if (n->type != ROFFT_TEXT) |
if (n->type != ROFFT_TEXT) |
return 0; |
return 0; |
if (a2roffsu(n->string, su, SCALE_EN)) |
return a2roffsu(n->string, su, SCALE_EN) != NULL; |
return 1; |
|
|
|
return 0; |
|
} |
} |
|
|
static void |
static void |
Line 415 man_root_post(MAN_ARGS) |
|
Line 413 man_root_post(MAN_ARGS) |
|
print_tagq(h, t); |
print_tagq(h, t); |
} |
} |
|
|
|
|
static int |
static int |
man_sp_pre(MAN_ARGS) |
|
{ |
|
struct roffsu su; |
|
|
|
SCALE_VS_INIT(&su, 1); |
|
if (NULL != (n = n->child)) |
|
if ( ! a2roffsu(n->string, &su, SCALE_VS)) |
|
su.scale = 1.0; |
|
|
|
print_otag(h, TAG_DIV, "suh", &su); |
|
|
|
/* So the div isn't empty: */ |
|
print_text(h, "\\~"); |
|
|
|
return 0; |
|
} |
|
|
|
static int |
|
man_SH_pre(MAN_ARGS) |
man_SH_pre(MAN_ARGS) |
{ |
{ |
char *id; |
char *id; |
Line 668 man_RS_pre(MAN_ARGS) |
|
Line 647 man_RS_pre(MAN_ARGS) |
|
static int |
static int |
man_UR_pre(MAN_ARGS) |
man_UR_pre(MAN_ARGS) |
{ |
{ |
|
char *cp; |
n = n->child; |
n = n->child; |
assert(n->type == ROFFT_HEAD); |
assert(n->type == ROFFT_HEAD); |
if (n->child != NULL) { |
if (n->child != NULL) { |
assert(n->child->type == ROFFT_TEXT); |
assert(n->child->type == ROFFT_TEXT); |
print_otag(h, TAG_A, "cTh", "Lk", n->child->string); |
if (n->tok == MAN_MT) { |
|
mandoc_asprintf(&cp, "mailto:%s", n->child->string); |
|
print_otag(h, TAG_A, "cTh", "Mt", cp); |
|
free(cp); |
|
} else |
|
print_otag(h, TAG_A, "cTh", "Lk", n->child->string); |
} |
} |
|
|
assert(n->next->type == ROFFT_BODY); |
assert(n->next->type == ROFFT_BODY); |