aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/html.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-01-13 14:30:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-01-13 14:30:13 +0000
commitfa547cebe06d42ee136cd3db4c7459b4d8d5d733 (patch)
tree864789a2f76536034eabbee53825ef74ea5eed38 /html.c
parentb35c31f766657bf4a7337b30d10f61bd8b018af4 (diff)
downloadmandoc-fa547cebe06d42ee136cd3db4c7459b4d8d5d733.tar.gz
mandoc-fa547cebe06d42ee136cd3db4c7459b4d8d5d733.tar.zst
mandoc-fa547cebe06d42ee136cd3db4c7459b4d8d5d733.zip
Change how -Thtml behaves with tables: use multiple rows, with widths
set by COL, until an external macro is encountered. At this point in time, close out the table and process the macro. When the first table row is again re-encountered, re-start the table. This requires a bit of tracking added to "struct html", but the change is very small and follows the logic of meta-fonts. This all follows a bug-report by joerg@.
Diffstat (limited to 'html.c')
-rw-r--r--html.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/html.c b/html.c
index 70403ff7..b884dab1 100644
--- a/html.c
+++ b/html.c
@@ -1,4 +1,4 @@
-/* $Id: html.c,v 1.124 2010/12/27 21:41:05 schwarze Exp $ */
+/* $Id: html.c,v 1.125 2011/01/13 14:30:13 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -90,6 +90,7 @@ static const char *const htmlattrs[ATTR_MAX] = {
"id", /* ATTR_ID */
"summary", /* ATTR_SUMMARY */
"align", /* ATTR_ALIGN */
+ "colspan", /* ATTR_COLSPAN */
};
static void print_spec(struct html *, enum roffdeco,
@@ -581,8 +582,14 @@ print_tagq(struct html *h, const struct tag *until)
struct tag *tag;
while ((tag = h->tags.head) != NULL) {
+ /*
+ * Remember to close out and nullify the current
+ * meta-font and table, if applicable.
+ */
if (tag == h->metaf)
h->metaf = NULL;
+ if (tag == h->tblt)
+ h->tblt = NULL;
print_ctag(h, tag->tag);
h->tags.head = tag->next;
free(tag);
@@ -600,8 +607,14 @@ print_stagq(struct html *h, const struct tag *suntil)
while ((tag = h->tags.head) != NULL) {
if (suntil && tag == suntil)
return;
+ /*
+ * Remember to close out and nullify the current
+ * meta-font and table, if applicable.
+ */
if (tag == h->metaf)
h->metaf = NULL;
+ if (tag == h->tblt)
+ h->tblt = NULL;
print_ctag(h, tag->tag);
h->tags.head = tag->next;
free(tag);