=================================================================== RCS file: /cvs/mandoc/html.c,v retrieving revision 1.98 retrieving revision 1.102 diff -u -p -r1.98 -r1.102 --- mandoc/html.c 2010/04/08 07:05:38 1.98 +++ mandoc/html.c 2010/06/19 20:46:27 1.102 @@ -1,6 +1,6 @@ -/* $Id: html.c,v 1.98 2010/04/08 07:05:38 kristaps Exp $ */ +/* $Id: html.c,v 1.102 2010/06/19 20:46:27 kristaps Exp $ */ /* - * Copyright (c) 2008, 2009 Kristaps Dzonsons + * Copyright (c) 2008, 2009 Kristaps Dzonsons * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -29,13 +29,12 @@ #include #include +#include "mandoc.h" #include "out.h" #include "chars.h" #include "html.h" #include "main.h" -#define UNCONST(a) ((void *)(uintptr_t)(const void *)(a)) - struct htmldata { const char *name; int flags; @@ -54,7 +53,7 @@ static const struct htmldata htmltags[TAG_MAX] = { {"h1", 0}, /* TAG_H1 */ {"h2", 0}, /* TAG_H2 */ {"span", 0}, /* TAG_SPAN */ - {"link", HTML_CLRLINE | HTML_NOSTACK}, /* TAG_LINK */ + {"link", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_LINK */ {"br", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_BR */ {"a", 0}, /* TAG_A */ {"table", HTML_CLRLINE}, /* TAG_TABLE */ @@ -296,11 +295,12 @@ print_encode(struct html *h, const char *p, int norecu int len, nospace; const char *seq; enum roffdeco deco; + static const char rejs[6] = { '\\', '<', '>', '&', ASCII_HYPH, '\0' }; nospace = 0; for (; *p; p++) { - sz = strcspn(p, "\\<>&"); + sz = strcspn(p, rejs); fwrite(p, 1, sz, stdout); p += /* LINTED */ @@ -315,6 +315,15 @@ print_encode(struct html *h, const char *p, int norecu } else if ('&' == *p) { printf("&"); continue; + } else if (ASCII_HYPH == *p) { + /* + * Note: "soft hyphens" aren't graphically + * displayed when not breaking the text; we want + * them to be displayed. + */ + /*printf("­");*/ + putchar('-'); + continue; } else if ('\0' == *p) break; @@ -443,21 +452,9 @@ print_gen_decls(struct html *h) static void print_xmltype(struct html *h) { - const char *decl; - switch (h->type) { - case (HTML_XHTML_1_0_STRICT): - decl = ""; - break; - default: - decl = NULL; - break; - } - - if (NULL == decl) - return; - - printf("%s\n", decl); + if (HTML_XHTML_1_0_STRICT == h->type) + printf(""); }