diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-04-04 15:33:03 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-04-04 15:33:03 +0000 |
commit | cf7149328986630c4a9c446c13d0eb62efc53258 (patch) | |
tree | a281ba1fb38d2bad1b94e28bf359846095c0a7f6 /mdoc_html.c | |
parent | eb26063e6d14c60d65335fb8795468d2abaca26a (diff) | |
download | mandoc-cf7149328986630c4a9c446c13d0eb62efc53258.tar.gz |
Clean up handling of `In' for -T[x]html such that it only links to the
first argument. groff of course doesn't do links, but it will uglify
subsequent arguments in the list (we warn about >1, anyway).
Diffstat (limited to 'mdoc_html.c')
-rw-r--r-- | mdoc_html.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/mdoc_html.c b/mdoc_html.c index 1dc7ecbd..86278bab 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -1696,39 +1696,56 @@ mdoc_fo_post(MDOC_ARGS) static int mdoc_in_pre(MDOC_ARGS) { - const struct mdoc_node *nn; - struct tag *t; - struct htmlpair tag[2]; - int i; + struct tag *t; + struct htmlpair tag[2]; + int i; synopsis_pre(h, n); PAIR_CLASS_INIT(&tag[0], "includes"); print_otag(h, TAG_B, 1, tag); + /* + * The first argument of the `In' gets special treatment as + * being a linked value. Subsequent values are printed + * afterward. groff does similarly. This also handles the case + * of no children. + */ + if (MDOC_SYNPRETTY & n->flags && MDOC_LINE & n->flags) print_text(h, "#include"); print_text(h, "<"); h->flags |= HTML_NOSPACE; - for (nn = n->child; nn; nn = nn->next) { + if (NULL != (n = n->child)) { + assert(MDOC_TEXT == n->type); + PAIR_CLASS_INIT(&tag[0], "link-includes"); - i = 1; bufinit(h); + + i = 1; + if (h->base_includes) { - buffmt_includes(h, nn->string); - PAIR_HREF_INIT(&tag[i], h->buf); - i++; - } + buffmt_includes(h, n->string); + PAIR_HREF_INIT(&tag[i++], h->buf); + } + t = print_otag(h, TAG_A, i, tag); - print_mdoc_node(m, nn, h); + print_text(h, n->string); print_tagq(h, t); + + n = n->next; } h->flags |= HTML_NOSPACE; print_text(h, ">"); + for ( ; n; n = n->next) { + assert(MDOC_TEXT == n->type); + print_text(h, n->string); + } + return(0); } |