Print this page
9718 update mandoc to 1.14.4

*** 1,9 **** ! /* $Id: man_html.c,v 1.145 2017/06/25 11:42:02 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> ! * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * --- 1,9 ---- ! /* $Id: man_html.c,v 1.153 2018/07/27 17:49:31 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> ! * Copyright (c) 2013,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. *
*** 33,44 **** #include "html.h" #include "main.h" /* FIXME: have PD set the default vspace width. */ - #define INDENT 5 - #define MAN_ARGS const struct roff_meta *man, \ const struct roff_node *n, \ struct html *h struct htmlman { --- 33,42 ----
*** 46,61 **** int (*post)(MAN_ARGS); }; static void print_bvspace(struct html *, const struct roff_node *); ! static void print_man_head(MAN_ARGS); static void print_man_nodelist(MAN_ARGS); static void print_man_node(MAN_ARGS); static int fillmode(struct html *, int); - static int a2width(const struct roff_node *, - struct roffsu *); static int man_B_pre(MAN_ARGS); static int man_HP_pre(MAN_ARGS); static int man_IP_pre(MAN_ARGS); static int man_I_pre(MAN_ARGS); static int man_OP_pre(MAN_ARGS); --- 44,58 ---- int (*post)(MAN_ARGS); }; static void print_bvspace(struct html *, const struct roff_node *); ! static void print_man_head(const struct roff_meta *, ! struct html *); static void print_man_nodelist(MAN_ARGS); static void print_man_node(MAN_ARGS); static int fillmode(struct html *, int); static int man_B_pre(MAN_ARGS); static int man_HP_pre(MAN_ARGS); static int man_IP_pre(MAN_ARGS); static int man_I_pre(MAN_ARGS); static int man_OP_pre(MAN_ARGS);
*** 66,77 **** static int man_SS_pre(MAN_ARGS); static int man_UR_pre(MAN_ARGS); static int man_alt_pre(MAN_ARGS); static int man_ign_pre(MAN_ARGS); static int man_in_pre(MAN_ARGS); ! static void man_root_post(MAN_ARGS); ! static void man_root_pre(MAN_ARGS); static const struct htmlman __mans[MAN_MAX - MAN_TH] = { { NULL, NULL }, /* TH */ { man_SH_pre, NULL }, /* SH */ { man_SS_pre, NULL }, /* SS */ --- 63,76 ---- static int man_SS_pre(MAN_ARGS); static int man_UR_pre(MAN_ARGS); static int man_alt_pre(MAN_ARGS); static int man_ign_pre(MAN_ARGS); static int man_in_pre(MAN_ARGS); ! static void man_root_post(const struct roff_meta *, ! struct html *); ! static void man_root_pre(const struct roff_meta *, ! struct html *); static const struct htmlman __mans[MAN_MAX - MAN_TH] = { { NULL, NULL }, /* TH */ { man_SH_pre, NULL }, /* SH */ { man_SS_pre, NULL }, /* SS */
*** 137,169 **** void html_man(void *arg, const struct roff_man *man) { struct html *h; struct tag *t; h = (struct html *)arg; if ((h->oflags & HTML_FRAGMENT) == 0) { print_gen_decls(h); print_otag(h, TAG_HTML, ""); t = print_otag(h, TAG_HEAD, ""); ! print_man_head(&man->meta, man->first, h); print_tagq(h, t); print_otag(h, TAG_BODY, ""); } ! man_root_pre(&man->meta, man->first, h); t = print_otag(h, TAG_DIV, "c", "manual-text"); ! print_man_nodelist(&man->meta, man->first->child, h); print_tagq(h, t); ! man_root_post(&man->meta, man->first, h); print_tagq(h, NULL); } static void ! print_man_head(MAN_ARGS) { char *cp; print_gen_head(h); mandoc_asprintf(&cp, "%s(%s)", man->title, man->msec); --- 136,172 ---- void html_man(void *arg, const struct roff_man *man) { struct html *h; + struct roff_node *n; struct tag *t; h = (struct html *)arg; + n = man->first->child; if ((h->oflags & HTML_FRAGMENT) == 0) { print_gen_decls(h); print_otag(h, TAG_HTML, ""); + if (n->type == ROFFT_COMMENT) + print_gen_comment(h, n); t = print_otag(h, TAG_HEAD, ""); ! print_man_head(&man->meta, h); print_tagq(h, t); print_otag(h, TAG_BODY, ""); } ! man_root_pre(&man->meta, h); t = print_otag(h, TAG_DIV, "c", "manual-text"); ! print_man_nodelist(&man->meta, n, h); print_tagq(h, t); ! man_root_post(&man->meta, h); print_tagq(h, NULL); } static void ! print_man_head(const struct roff_meta *man, struct html *h) { char *cp; print_gen_head(h); mandoc_asprintf(&cp, "%s(%s)", man->title, man->msec);
*** 260,269 **** --- 263,274 ---- print_otag(h, TAG_BR, ""); if (*n->string != '\0') break; print_paragraph(h); return; + case ROFFT_COMMENT: + return; default: break; } /* Produce output for this node. */
*** 357,376 **** print_tagq(h, pre); } return had; } - static int - a2width(const struct roff_node *n, struct roffsu *su) - { - if (n->type != ROFFT_TEXT) - return 0; - return a2roffsu(n->string, su, SCALE_EN) != NULL; - } - static void ! man_root_pre(MAN_ARGS) { struct tag *t, *tt; char *title; assert(man->title); --- 362,373 ---- print_tagq(h, pre); } return had; } static void ! man_root_pre(const struct roff_meta *man, struct html *h) { struct tag *t, *tt; char *title; assert(man->title);
*** 394,404 **** print_tagq(h, t); free(title); } static void ! man_root_post(MAN_ARGS) { struct tag *t, *tt; t = print_otag(h, TAG_TABLE, "c", "foot"); tt = print_otag(h, TAG_TR, ""); --- 391,401 ---- print_tagq(h, t); free(title); } static void ! man_root_post(const struct roff_meta *man, struct html *h) { struct tag *t, *tt; t = print_otag(h, TAG_TABLE, "c", "foot"); tt = print_otag(h, TAG_TR, "");
*** 417,431 **** man_SH_pre(MAN_ARGS) { char *id; if (n->type == ROFFT_HEAD) { ! id = html_make_id(n); print_otag(h, TAG_H1, "cTi", "Sh", id); if (id != NULL) ! print_otag(h, TAG_A, "chR", "selflink", id); ! free(id); } return 1; } static int --- 414,427 ---- man_SH_pre(MAN_ARGS) { char *id; if (n->type == ROFFT_HEAD) { ! id = html_make_id(n, 1); print_otag(h, TAG_H1, "cTi", "Sh", id); if (id != NULL) ! print_otag(h, TAG_A, "chR", "permalink", id); } return 1; } static int
*** 487,501 **** man_SS_pre(MAN_ARGS) { char *id; if (n->type == ROFFT_HEAD) { ! id = html_make_id(n); print_otag(h, TAG_H2, "cTi", "Ss", id); if (id != NULL) ! print_otag(h, TAG_A, "chR", "selflink", id); ! free(id); } return 1; } static int --- 483,496 ---- man_SS_pre(MAN_ARGS) { char *id; if (n->type == ROFFT_HEAD) { ! id = html_make_id(n, 1); print_otag(h, TAG_H2, "cTi", "Ss", id); if (id != NULL) ! print_otag(h, TAG_A, "chR", "permalink", id); } return 1; } static int
*** 514,533 **** man_IP_pre(MAN_ARGS) { const struct roff_node *nn; if (n->type == ROFFT_BODY) { ! print_otag(h, TAG_DD, "c", "It-tag"); return 1; } else if (n->type != ROFFT_HEAD) { print_otag(h, TAG_DL, "c", "Bl-tag"); return 1; } /* FIXME: width specification. */ ! print_otag(h, TAG_DT, "c", "It-tag"); /* For IP, only print the first header element. */ if (MAN_IP == n->tok && n->child) print_man_node(man, n->child, h); --- 509,528 ---- man_IP_pre(MAN_ARGS) { const struct roff_node *nn; if (n->type == ROFFT_BODY) { ! print_otag(h, TAG_DD, ""); return 1; } else if (n->type != ROFFT_HEAD) { print_otag(h, TAG_DL, "c", "Bl-tag"); return 1; } /* FIXME: width specification. */ ! print_otag(h, TAG_DT, ""); /* For IP, only print the first header element. */ if (MAN_IP == n->tok && n->child) print_man_node(man, n->child, h);
*** 548,575 **** } static int man_HP_pre(MAN_ARGS) { - struct roffsu sum, sui; - const struct roff_node *np; - if (n->type == ROFFT_HEAD) return 0; - else if (n->type != ROFFT_BLOCK) - return 1; ! np = n->head->child; ! ! if (np == NULL || !a2width(np, &sum)) ! SCALE_HS_INIT(&sum, INDENT); ! ! sui.unit = sum.unit; ! sui.scale = -sum.scale; ! print_bvspace(h, n); ! print_otag(h, TAG_DIV, "csului", "Pp", &sum, &sui); return 1; } static int man_OP_pre(MAN_ARGS) --- 543,559 ---- } static int man_HP_pre(MAN_ARGS) { if (n->type == ROFFT_HEAD) return 0; ! if (n->type == ROFFT_BLOCK) { print_bvspace(h, n); ! print_otag(h, TAG_DIV, "c", "HP"); ! } return 1; } static int man_OP_pre(MAN_ARGS)
*** 627,649 **** } static int man_RS_pre(MAN_ARGS) { - struct roffsu su; - if (n->type == ROFFT_HEAD) return 0; ! else if (n->type == ROFFT_BODY) return 1; - - SCALE_HS_INIT(&su, INDENT); - if (n->head->child) - a2width(n->head->child, &su); - - print_otag(h, TAG_DIV, "sul", &su); - return 1; } static int man_UR_pre(MAN_ARGS) { --- 611,625 ---- } static int man_RS_pre(MAN_ARGS) { if (n->type == ROFFT_HEAD) return 0; ! if (n->type == ROFFT_BLOCK) ! print_otag(h, TAG_DIV, "c", "Bd-indent"); return 1; } static int man_UR_pre(MAN_ARGS) {