version 1.179, 2020/10/16 17:22:43 |
version 1.187, 2023/10/24 20:53:12 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2013-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2013-15,2017-20,2022-23 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
Line 53 static char list_continues(const struct roff_node * |
|
Line 53 static char list_continues(const struct roff_node * |
|
static int man_B_pre(MAN_ARGS); |
static int man_B_pre(MAN_ARGS); |
static int man_IP_pre(MAN_ARGS); |
static int man_IP_pre(MAN_ARGS); |
static int man_I_pre(MAN_ARGS); |
static int man_I_pre(MAN_ARGS); |
|
static int man_MR_pre(MAN_ARGS); |
static int man_OP_pre(MAN_ARGS); |
static int man_OP_pre(MAN_ARGS); |
static int man_PP_pre(MAN_ARGS); |
static int man_PP_pre(MAN_ARGS); |
static int man_RS_pre(MAN_ARGS); |
static int man_RS_pre(MAN_ARGS); |
Line 60 static int man_SH_pre(MAN_ARGS); |
|
Line 61 static int man_SH_pre(MAN_ARGS); |
|
static int man_SM_pre(MAN_ARGS); |
static int man_SM_pre(MAN_ARGS); |
static int man_SY_pre(MAN_ARGS); |
static int man_SY_pre(MAN_ARGS); |
static int man_UR_pre(MAN_ARGS); |
static int man_UR_pre(MAN_ARGS); |
static int man_abort_pre(MAN_ARGS); |
|
static int man_alt_pre(MAN_ARGS); |
static int man_alt_pre(MAN_ARGS); |
static int man_ign_pre(MAN_ARGS); |
static int man_ign_pre(MAN_ARGS); |
static int man_in_pre(MAN_ARGS); |
static int man_in_pre(MAN_ARGS); |
Line 75 static const struct man_html_act man_html_acts[MAN_MAX |
|
Line 75 static const struct man_html_act man_html_acts[MAN_MAX |
|
{ man_SH_pre, NULL }, /* SS */ |
{ man_SH_pre, NULL }, /* SS */ |
{ man_IP_pre, NULL }, /* TP */ |
{ man_IP_pre, NULL }, /* TP */ |
{ man_IP_pre, NULL }, /* TQ */ |
{ man_IP_pre, NULL }, /* TQ */ |
{ man_abort_pre, NULL }, /* LP */ |
{ man_PP_pre, NULL }, /* LP */ |
{ man_PP_pre, NULL }, /* PP */ |
{ man_PP_pre, NULL }, /* PP */ |
{ man_abort_pre, NULL }, /* P */ |
{ man_PP_pre, NULL }, /* P */ |
{ man_IP_pre, NULL }, /* IP */ |
{ man_IP_pre, NULL }, /* IP */ |
{ man_PP_pre, NULL }, /* HP */ |
{ man_PP_pre, NULL }, /* HP */ |
{ man_SM_pre, NULL }, /* SM */ |
{ man_SM_pre, NULL }, /* SM */ |
Line 107 static const struct man_html_act man_html_acts[MAN_MAX |
|
Line 107 static const struct man_html_act man_html_acts[MAN_MAX |
|
{ NULL, NULL }, /* UE */ |
{ NULL, NULL }, /* UE */ |
{ man_UR_pre, NULL }, /* MT */ |
{ man_UR_pre, NULL }, /* MT */ |
{ NULL, NULL }, /* ME */ |
{ NULL, NULL }, /* ME */ |
|
{ man_MR_pre, NULL }, /* MR */ |
}; |
}; |
|
|
|
|
Line 123 html_man(void *arg, const struct roff_meta *man) |
|
Line 124 html_man(void *arg, const struct roff_meta *man) |
|
if ((h->oflags & HTML_FRAGMENT) == 0) { |
if ((h->oflags & HTML_FRAGMENT) == 0) { |
print_gen_decls(h); |
print_gen_decls(h); |
print_otag(h, TAG_HTML, ""); |
print_otag(h, TAG_HTML, ""); |
if (n != NULL && n->type == ROFFT_COMMENT) |
|
print_gen_comment(h, n); |
|
t = print_otag(h, TAG_HEAD, ""); |
t = print_otag(h, TAG_HEAD, ""); |
print_man_head(man, h); |
print_man_head(man, h); |
print_tagq(h, t); |
print_tagq(h, t); |
|
if (n != NULL && n->type == ROFFT_COMMENT) |
|
print_gen_comment(h, n); |
print_otag(h, TAG_BODY, ""); |
print_otag(h, TAG_BODY, ""); |
} |
} |
|
|
man_root_pre(man, h); |
man_root_pre(man, h); |
t = print_otag(h, TAG_DIV, "c", "manual-text"); |
t = print_otag(h, TAG_MAIN, "c", "manual-text"); |
print_man_nodelist(man, n, h); |
print_man_nodelist(man, n, h); |
print_tagq(h, t); |
print_tagq(h, t); |
man_root_post(man, h); |
man_root_post(man, h); |
Line 263 print_man_node(MAN_ARGS) |
|
Line 264 print_man_node(MAN_ARGS) |
|
static void |
static void |
man_root_pre(const struct roff_meta *man, struct html *h) |
man_root_pre(const struct roff_meta *man, struct html *h) |
{ |
{ |
struct tag *t, *tt; |
struct tag *t; |
char *title; |
char *title; |
|
|
assert(man->title); |
assert(man->title); |
assert(man->msec); |
assert(man->msec); |
mandoc_asprintf(&title, "%s(%s)", man->title, man->msec); |
mandoc_asprintf(&title, "%s(%s)", man->title, man->msec); |
|
|
t = print_otag(h, TAG_TABLE, "c", "head"); |
t = print_otag(h, TAG_DIV, "cr?", "head", "doc-pageheader", |
tt = print_otag(h, TAG_TR, ""); |
"aria-label", "Manual header line"); |
|
|
print_otag(h, TAG_TD, "c", "head-ltitle"); |
print_otag(h, TAG_SPAN, "c", "head-ltitle"); |
print_text(h, title); |
print_text(h, title); |
print_stagq(h, tt); |
print_stagq(h, t); |
|
|
print_otag(h, TAG_TD, "c", "head-vol"); |
print_otag(h, TAG_SPAN, "c", "head-vol"); |
if (man->vol != NULL) |
if (man->vol != NULL) |
print_text(h, man->vol); |
print_text(h, man->vol); |
print_stagq(h, tt); |
print_stagq(h, t); |
|
|
print_otag(h, TAG_TD, "c", "head-rtitle"); |
print_otag(h, TAG_SPAN, "c", "head-rtitle"); |
print_text(h, title); |
print_text(h, title); |
print_tagq(h, t); |
print_tagq(h, t); |
free(title); |
free(title); |
Line 291 man_root_pre(const struct roff_meta *man, struct html |
|
Line 292 man_root_pre(const struct roff_meta *man, struct html |
|
static void |
static void |
man_root_post(const struct roff_meta *man, struct html *h) |
man_root_post(const struct roff_meta *man, struct html *h) |
{ |
{ |
struct tag *t, *tt; |
struct tag *t; |
|
|
t = print_otag(h, TAG_TABLE, "c", "foot"); |
t = print_otag(h, TAG_DIV, "cr?", "foot", "doc-pagefooter", |
tt = print_otag(h, TAG_TR, ""); |
"aria-label", "Manual footer line"); |
|
|
print_otag(h, TAG_TD, "c", "foot-date"); |
print_otag(h, TAG_SPAN, "c", "foot-left"); |
|
print_stagq(h, t); |
|
|
|
print_otag(h, TAG_SPAN, "c", "foot-date"); |
print_text(h, man->date); |
print_text(h, man->date); |
print_stagq(h, tt); |
print_stagq(h, t); |
|
|
print_otag(h, TAG_TD, "c", "foot-os"); |
print_otag(h, TAG_SPAN, "c", "foot-os"); |
if (man->os != NULL) |
if (man->os != NULL) |
print_text(h, man->os); |
print_text(h, man->os); |
print_tagq(h, t); |
print_tagq(h, t); |
Line 313 man_SH_pre(MAN_ARGS) |
|
Line 317 man_SH_pre(MAN_ARGS) |
|
enum htmltag tag; |
enum htmltag tag; |
|
|
if (n->tok == MAN_SH) { |
if (n->tok == MAN_SH) { |
tag = TAG_H1; |
tag = TAG_H2; |
class = "Sh"; |
class = "Sh"; |
} else { |
} else { |
tag = TAG_H2; |
tag = TAG_H3; |
class = "Ss"; |
class = "Ss"; |
} |
} |
switch (n->type) { |
switch (n->type) { |
Line 403 man_PP_pre(MAN_ARGS) |
|
Line 407 man_PP_pre(MAN_ARGS) |
|
if (n->child != NULL && |
if (n->child != NULL && |
(n->child->flags & NODE_NOFILL) == 0) |
(n->child->flags & NODE_NOFILL) == 0) |
print_otag(h, TAG_P, "c", |
print_otag(h, TAG_P, "c", |
n->tok == MAN_PP ? "Pp" : "Pp HP"); |
n->tok == MAN_HP ? "Pp HP" : "Pp"); |
break; |
break; |
default: |
default: |
abort(); |
abort(); |
Line 431 list_continues(const struct roff_node *n1, const struc |
|
Line 435 list_continues(const struct roff_node *n1, const struc |
|
s2 = n2 == NULL ? "" : n2->string; |
s2 = n2 == NULL ? "" : n2->string; |
c1 = strcmp(s1, "*") == 0 ? '*' : |
c1 = strcmp(s1, "*") == 0 ? '*' : |
strcmp(s1, "\\-") == 0 ? '-' : |
strcmp(s1, "\\-") == 0 ? '-' : |
strcmp(s1, "\\(bu") == 0 ? 'b' : ' '; |
strcmp(s1, "\\(bu") == 0 ? 'b' : |
|
strcmp(s1, "\\[bu]") == 0 ? 'b' : ' '; |
c2 = strcmp(s2, "*") == 0 ? '*' : |
c2 = strcmp(s2, "*") == 0 ? '*' : |
strcmp(s2, "\\-") == 0 ? '-' : |
strcmp(s2, "\\-") == 0 ? '-' : |
strcmp(s2, "\\(bu") == 0 ? 'b' : ' '; |
strcmp(s2, "\\(bu") == 0 ? 'b' : |
|
strcmp(s2, "\\[bu]") == 0 ? 'b' : ' '; |
return c1 != c2 ? '\0' : c1 == 'b' ? '*' : c1; |
return c1 != c2 ? '\0' : c1 == 'b' ? '*' : c1; |
} |
} |
|
|
Line 515 man_IP_pre(MAN_ARGS) |
|
Line 521 man_IP_pre(MAN_ARGS) |
|
} |
} |
|
|
static int |
static int |
|
man_MR_pre(MAN_ARGS) |
|
{ |
|
struct tag *t; |
|
const char *name, *section, *suffix; |
|
char *label; |
|
|
|
html_setfont(h, ESCAPE_FONTROMAN); |
|
name = section = suffix = label = NULL; |
|
if (n->child != NULL) { |
|
name = n->child->string; |
|
if (n->child->next != NULL) { |
|
section = n->child->next->string; |
|
mandoc_asprintf(&label, |
|
"%s, section %s", name, section); |
|
if (n->child->next->next != NULL) |
|
suffix = n->child->next->next->string; |
|
} |
|
} |
|
|
|
if (name != NULL && section != NULL && h->base_man1 != NULL) |
|
t = print_otag(h, TAG_A, "chM?", "Xr", |
|
name, section, "aria-label", label); |
|
else |
|
t = print_otag(h, TAG_A, "c?", "Xr", "aria-label", label); |
|
|
|
free(label); |
|
if (name != NULL) { |
|
print_text(h, name); |
|
h->flags |= HTML_NOSPACE; |
|
} |
|
print_text(h, "("); |
|
h->flags |= HTML_NOSPACE; |
|
if (section != NULL) { |
|
print_text(h, section); |
|
h->flags |= HTML_NOSPACE; |
|
} |
|
print_text(h, ")"); |
|
print_tagq(h, t); |
|
if (suffix != NULL) { |
|
h->flags |= HTML_NOSPACE; |
|
print_text(h, suffix); |
|
} |
|
return 0; |
|
} |
|
|
|
static int |
man_OP_pre(MAN_ARGS) |
man_OP_pre(MAN_ARGS) |
{ |
{ |
struct tag *tt; |
struct tag *tt; |
Line 631 man_UR_pre(MAN_ARGS) |
|
Line 683 man_UR_pre(MAN_ARGS) |
|
|
|
print_man_nodelist(man, n->child, h); |
print_man_nodelist(man, n->child, h); |
return 0; |
return 0; |
} |
|
|
|
static int |
|
man_abort_pre(MAN_ARGS) |
|
{ |
|
abort(); |
|
} |
} |