summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2014-09-17 19:53:35 +0000
committerschwarze <schwarze@openbsd.org>2014-09-17 19:53:35 +0000
commitbf997c2c5f9c3b96c99d6062d579f9238593d4c7 (patch)
treef9395e3a897282b650eefee82a33a40f47c07979
parentregen (diff)
downloadwireguard-openbsd-bf997c2c5f9c3b96c99d6062d579f9238593d4c7.tar.xz
wireguard-openbsd-bf997c2c5f9c3b96c99d6062d579f9238593d4c7.zip
implement .An -[no]split for -Thtml
-rw-r--r--usr.bin/mandoc/html.h4
-rw-r--r--usr.bin/mandoc/mdoc_html.c32
2 files changed, 31 insertions, 5 deletions
diff --git a/usr.bin/mandoc/html.h b/usr.bin/mandoc/html.h
index bbbd4741452..2f7a874fdb1 100644
--- a/usr.bin/mandoc/html.h
+++ b/usr.bin/mandoc/html.h
@@ -1,4 +1,4 @@
-/* $Id: html.h,v 1.23 2014/08/14 00:29:12 schwarze Exp $ */
+/* $OpenBSD: html.h,v 1.24 2014/09/17 19:53:35 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -119,6 +119,8 @@ struct html {
#define HTML_NONOSPACE (1 << 4) /* never add spaces */
#define HTML_LITERAL (1 << 5) /* literal (e.g., <PRE>) context */
#define HTML_SKIPCHAR (1 << 6) /* skip the next character */
+#define HTML_NOSPLIT (1 << 7) /* do not break line before .An */
+#define HTML_SPLIT (1 << 8) /* break line before .An */
struct tagq tags; /* stack of open tags */
struct rofftbl tbl; /* current table */
struct tag *tblt; /* current open table scope */
diff --git a/usr.bin/mandoc/mdoc_html.c b/usr.bin/mandoc/mdoc_html.c
index b1435131240..d071aa05354 100644
--- a/usr.bin/mandoc/mdoc_html.c
+++ b/usr.bin/mandoc/mdoc_html.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_html.c,v 1.81 2014/08/21 12:56:24 schwarze Exp $ */
+/* $OpenBSD: mdoc_html.c,v 1.82 2014/09/17 19:53:35 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -568,12 +568,18 @@ mdoc_sh_pre(MDOC_ARGS)
{
struct htmlpair tag;
- if (MDOC_BLOCK == n->type) {
+ switch (n->type) {
+ case MDOC_BLOCK:
PAIR_CLASS_INIT(&tag, "section");
print_otag(h, TAG_DIV, 1, &tag);
return(1);
- } else if (MDOC_BODY == n->type)
+ case MDOC_BODY:
+ if (n->sec == SEC_AUTHORS)
+ h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT);
return(1);
+ default:
+ break;
+ }
bufinit(h);
bufcat(h, "x");
@@ -1256,7 +1262,25 @@ mdoc_an_pre(MDOC_ARGS)
{
struct htmlpair tag;
- /* TODO: -split and -nosplit (see termp_an_pre()). */
+ if (n->norm->An.auth == AUTH_split) {
+ h->flags &= ~HTML_NOSPLIT;
+ h->flags |= HTML_SPLIT;
+ return(0);
+ }
+ if (n->norm->An.auth == AUTH_nosplit) {
+ h->flags &= ~HTML_SPLIT;
+ h->flags |= HTML_NOSPLIT;
+ return(0);
+ }
+
+ if (n->child == NULL)
+ return(0);
+
+ if (h->flags & HTML_SPLIT)
+ print_otag(h, TAG_BR, 0, NULL);
+
+ if (n->sec == SEC_AUTHORS && ! (h->flags & HTML_NOSPLIT))
+ h->flags |= HTML_SPLIT;
PAIR_CLASS_INIT(&tag, "author");
print_otag(h, TAG_SPAN, 1, &tag);