=================================================================== RCS file: /cvs/mandoc/html.c,v retrieving revision 1.124 retrieving revision 1.127 diff -u -p -r1.124 -r1.127 --- mandoc/html.c 2010/12/27 21:41:05 1.124 +++ mandoc/html.c 2011/03/15 16:23:51 1.127 @@ -1,6 +1,7 @@ -/* $Id: html.c,v 1.124 2010/12/27 21:41:05 schwarze Exp $ */ +/* $Id: html.c,v 1.127 2011/03/15 16:23:51 kristaps Exp $ */ /* - * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons + * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons + * Copyright (c) 2011 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -90,8 +91,10 @@ static const char *const htmlattrs[ATTR_MAX] = { "id", /* ATTR_ID */ "summary", /* ATTR_SUMMARY */ "align", /* ATTR_ALIGN */ + "colspan", /* ATTR_COLSPAN */ }; +static void print_num(struct html *, const char *, size_t); static void print_spec(struct html *, enum roffdeco, const char *, size_t); static void print_res(struct html *, const char *, size_t); @@ -211,7 +214,17 @@ print_gen_head(struct html *h) } } +/* ARGSUSED */ +static void +print_num(struct html *h, const char *p, size_t len) +{ + const char *rhs; + rhs = chars_num2char(p, len); + if (rhs) + putchar((int)*rhs); +} + static void print_spec(struct html *h, enum roffdeco d, const char *p, size_t len) { @@ -332,6 +345,9 @@ print_encode(struct html *h, const char *p, int norecu len = a2roffdeco(&deco, &seq, &sz); switch (deco) { + case (DECO_NUMBERED): + print_num(h, seq, sz); + break; case (DECO_RESERVED): print_res(h, seq, sz); break; @@ -581,8 +597,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 +622,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);