aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_html.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-04-17 12:53:29 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-04-17 12:53:29 +0000
commit9e5c82b05c242c2e827a6f1079b168fe918e499e (patch)
tree5d0be198ffe528590ed8a6b5568a11ca43d714ec /mdoc_html.c
parent1c62f42ca2f43ac9f721ae986079d2bb30403fd3 (diff)
downloadmandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.tar.gz
mandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.tar.zst
mandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.zip
Fix handling of trailing punctuation in .Lk.
This macro is unusual in so far as trailing punction needs to remain inside the scope because it must be inside, not after the display of long URIs in terminal output mode. Improves formatting of fw_update(1), help(1), less(1), sendbug(1), acx(4), inet6(4), ipsec(4), oce(4), isakmpd.conf(5), afterboot(8), release(8), traceroute(8).
Diffstat (limited to 'mdoc_html.c')
-rw-r--r--mdoc_html.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/mdoc_html.c b/mdoc_html.c
index 27ca1a49..d8c86936 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_html.c,v 1.278 2017/03/17 12:10:16 schwarze Exp $ */
+/* $Id: mdoc_html.c,v 1.279 2017/04/17 12:53:29 schwarze Exp $ */
/*
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1346,19 +1346,25 @@ mdoc_sp_pre(MDOC_ARGS)
static int
mdoc_lk_pre(MDOC_ARGS)
{
- if (NULL == (n = n->child))
- return 0;
-
- assert(n->type == ROFFT_TEXT);
+ struct tag *t;
- print_otag(h, TAG_A, "cTh", "Lk", n->string);
+ if ((n = n->child) == NULL)
+ return 0;
- if (NULL == n->next)
+ /* Link target and link text. */
+ t = print_otag(h, TAG_A, "cTh", "Lk", n->string);
+ if (n->next == NULL || n->next->flags & NODE_DELIMC)
print_text(h, n->string);
-
- for (n = n->next; n; n = n->next)
+ for (n = n->next; n != NULL && !(n->flags & NODE_DELIMC); n = n->next)
print_text(h, n->string);
+ print_tagq(h, t);
+ /* Trailing punctuation. */
+ while (n != NULL) {
+ h->flags |= HTML_NOSPACE;
+ print_text(h, n->string);
+ n = n->next;
+ }
return 0;
}