aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/html.c
diff options
context:
space:
mode:
Diffstat (limited to 'html.c')
-rw-r--r--html.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/html.c b/html.c
index 71070769..55d5c99f 100644
--- a/html.c
+++ b/html.c
@@ -1,4 +1,4 @@
-/* $Id: html.c,v 1.249 2019/01/06 04:55:09 schwarze Exp $ */
+/* $Id: html.c,v 1.250 2019/01/07 07:26:29 schwarze Exp $ */
/*
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011-2015, 2017-2019 Ingo Schwarze <schwarze@openbsd.org>
@@ -272,7 +272,7 @@ html_close_paragraph(struct html *h)
struct tag *t;
for (t = h->tag; t != NULL; t = t->next) {
- if (t->tag == TAG_P) {
+ if (t->tag == TAG_P || t->tag == TAG_PRE) {
print_tagq(h, t);
break;
}
@@ -834,32 +834,30 @@ print_tagq(struct html *h, const struct tag *until)
while ((tag = h->tag) != NULL) {
print_ctag(h, tag);
- if (until && tag == until)
+ if (tag == until)
return;
}
}
+/*
+ * Close out all open elements up to but excluding suntil.
+ * Note that a paragraph just inside stays open together with it
+ * because paragraphs include subsequent phrasing content.
+ */
void
print_stagq(struct html *h, const struct tag *suntil)
{
struct tag *tag;
while ((tag = h->tag) != NULL) {
- if (suntil && tag == suntil)
+ if (tag == suntil ||
+ (tag->next == suntil &&
+ (tag->tag == TAG_P || tag->tag == TAG_PRE)))
return;
print_ctag(h, tag);
}
}
-void
-print_paragraph(struct html *h)
-{
- struct tag *t;
-
- t = print_otag(h, TAG_DIV, "c", "Pp");
- print_tagq(h, t);
-}
-
/***********************************************************************
* Low level output functions.