diff options
-rw-r--r-- | html.c | 41 | ||||
-rw-r--r-- | mandoc_html.3 | 12 |
2 files changed, 35 insertions, 18 deletions
@@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.243 2018/11/23 19:17:05 schwarze Exp $ */ +/* $Id: html.c,v 1.244 2018/11/26 01:38:23 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> @@ -523,7 +523,7 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) struct tag *t; const char *attr; char *arg1, *arg2; - int tflags; + int style_written, tflags; tflags = htmltags[tag].flags; @@ -563,7 +563,7 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) va_start(ap, fmt); - while (*fmt != '\0') { + while (*fmt != '\0' && *fmt != 's') { /* Parse attributes and arguments. */ @@ -579,10 +579,6 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) case 'i': attr = "id"; break; - case 's': - attr = "style"; - arg2 = va_arg(ap, char *); - break; case '?': attr = arg1; arg1 = va_arg(ap, char *); @@ -622,19 +618,32 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) fmt++; break; default: - if (arg2 == NULL) - print_encode(h, arg1, NULL, 1); - else { - print_word(h, arg1); - print_byte(h, ':'); - print_byte(h, ' '); - print_word(h, arg2); - print_byte(h, ';'); - } + print_encode(h, arg1, NULL, 1); break; } print_byte(h, '"'); } + + style_written = 0; + while (*fmt++ == 's') { + arg1 = va_arg(ap, char *); + arg2 = va_arg(ap, char *); + if (arg2 == NULL) + continue; + print_byte(h, ' '); + if (style_written == 0) { + print_word(h, "style=\""); + style_written = 1; + } + print_word(h, arg1); + print_byte(h, ':'); + print_byte(h, ' '); + print_word(h, arg2); + print_byte(h, ';'); + } + if (style_written) + print_byte(h, '"'); + va_end(ap); /* Accommodate for "well-formed" singleton escaping. */ diff --git a/mandoc_html.3 b/mandoc_html.3 index 5bd9446d..9e922915 100644 --- a/mandoc_html.3 +++ b/mandoc_html.3 @@ -1,4 +1,4 @@ -.\" $Id: mandoc_html.3,v 1.17 2018/06/25 16:54:59 schwarze Exp $ +.\" $Id: mandoc_html.3,v 1.18 2018/11/26 01:38:23 schwarze Exp $ .\" .\" Copyright (c) 2014, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: June 25 2018 $ +.Dd $Mdocdate: November 26 2018 $ .Dt MANDOC_HTML 3 .Os .Sh NAME @@ -216,6 +216,14 @@ It requires two .Va char * arguments. The first is the name of the style property, the second its value. +The name must not be +.Dv NULL . +The +.Cm s +.Ar fmt +letter can be repeated, each repetition requiring an additional pair of +.Va char * +arguments. .El .Pp .Fn print_otag |