summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/html.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2011-01-16 19:41:17 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2011-01-16 19:41:17 +0000
commit3ea785dfac3b842c38d5b36eb3a32b8af8086460 (patch)
tree74942ad73d6fcfa0179b6460a9b6d67dc4c86966 /usr.bin/mandoc/html.c
parentb82ba953905f806ce4e5553c1536579080b7352e (diff)
Merge from bsd.lv, original commit message by kristaps@:
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 'usr.bin/mandoc/html.c')
-rw-r--r--usr.bin/mandoc/html.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/usr.bin/mandoc/html.c b/usr.bin/mandoc/html.c
index ebf6d06d16c..ae78c352b02 100644
--- a/usr.bin/mandoc/html.c
+++ b/usr.bin/mandoc/html.c
@@ -1,6 +1,6 @@
-/* $Id: html.c,v 1.21 2010/12/27 21:44:30 schwarze Exp $ */
+/* $Id: html.c,v 1.22 2011/01/16 19:41:16 schwarze Exp $ */
/*
- * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -86,6 +86,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,
@@ -577,8 +578,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);
@@ -596,8 +603,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);