From 200e43749bd89f28c28647ce1c2736de721d6de8 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Tue, 17 May 2011 11:19:45 +0000 Subject: Clean-ups in -T[x]html: inline print_num(), as it was just a single conditional; same for print_xmltype() and print_doctype(), same reason; make bufncat() be static, as it was only being called from html.c; have bufcat() simply call through to strlcat(). Finally, assert() whenever we truncate. Also rename buffmt() -> bufcat_fmt() to differentiate from buffmt_man et al., which do not concatenate. --- html.c | 89 +++++++++++++++++-------------------------------------------- html.h | 5 ++-- man_html.c | 4 +-- mdoc_html.c | 4 +-- 4 files changed, 31 insertions(+), 71 deletions(-) diff --git a/html.c b/html.c index 553ff6fd..a32b4d9a 100644 --- a/html.c +++ b/html.c @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.140 2011/05/17 10:48:06 kristaps Exp $ */ +/* $Id: html.c,v 1.141 2011/05/17 11:19:45 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2011 Ingo Schwarze @@ -107,18 +107,14 @@ static const char *const roffscales[SCALE_MAX] = { "ex", /* SCALE_FS */ }; -static void print_num(struct html *, const char *, size_t); -static void print_spec(struct html *, const char *, size_t); -static void print_res(struct html *, const char *, size_t); -static void print_ctag(struct html *, enum htmltag); -static void print_doctype(struct html *); -static void print_xmltype(struct html *); -static int print_encode(struct html *, const char *, int); -static void print_metaf(struct html *, enum mandoc_esc); -static void print_attr(struct html *, - const char *, const char *); -static void *ml_alloc(char *, enum htmltype); - +static void bufncat(struct html *, const char *, size_t); +static void print_spec(struct html *, const char *, size_t); +static void print_res(struct html *, const char *, size_t); +static void print_ctag(struct html *, enum htmltag); +static int print_encode(struct html *, const char *, int); +static void print_metaf(struct html *, enum mandoc_esc); +static void print_attr(struct html *, const char *, const char *); +static void *ml_alloc(char *, enum htmltype); static void * ml_alloc(char *outopts, enum htmltype type) @@ -222,16 +218,6 @@ print_gen_head(struct html *h) } } -/* ARGSUSED */ -static void -print_num(struct html *h, const char *p, size_t len) -{ - char c; - - if ('\0' != (c = mchars_num2char(p, len))) - putchar((int)c); -} - static void print_spec(struct html *h, const char *p, size_t len) { @@ -349,7 +335,7 @@ static int print_encode(struct html *h, const char *p, int norecurse) { size_t sz; - int len, nospace; + int c, len, nospace; const char *seq; enum mandoc_esc esc; static const char rejs[6] = { '\\', '<', '>', '&', ASCII_HYPH, '\0' }; @@ -388,7 +374,9 @@ print_encode(struct html *h, const char *p, int norecurse) switch (esc) { case (ESCAPE_NUMBERED): - print_num(h, seq, len); + c = mchars_num2char(seq, len); + if ('\0' != c) + putchar(c); break; case (ESCAPE_PREDEF): print_res(h, seq, len); @@ -509,27 +497,8 @@ print_ctag(struct html *h, enum htmltag tag) } } - void print_gen_decls(struct html *h) -{ - - print_xmltype(h); - print_doctype(h); -} - - -static void -print_xmltype(struct html *h) -{ - - if (HTML_XHTML_1_0_STRICT == h->type) - puts(""); -} - - -static void -print_doctype(struct html *h) { const char *doctype; const char *dtd; @@ -542,6 +511,7 @@ print_doctype(struct html *h) dtd = "http://www.w3.org/TR/html4/strict.dtd"; break; default: + puts(""); name = "html"; doctype = "-//W3C//DTD XHTML 1.0 Strict//EN"; dtd = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"; @@ -631,7 +601,6 @@ print_stagq(struct html *h, const struct tag *suntil) } } - void bufinit(struct html *h) { @@ -640,28 +609,27 @@ bufinit(struct html *h) h->buflen = 0; } - void bufcat_style(struct html *h, const char *key, const char *val) { bufcat(h, key); - bufncat(h, ":", 1); + bufcat(h, ":"); bufcat(h, val); - bufncat(h, ";", 1); + bufcat(h, ";"); } - void bufcat(struct html *h, const char *p) { - bufncat(h, p, strlen(p)); + h->buflen = strlcat(h->buf, p, BUFSIZ); + assert(h->buflen < BUFSIZ); + h->buflen--; } - void -buffmt(struct html *h, const char *fmt, ...) +bufcat_fmt(struct html *h, const char *fmt, ...) { va_list ap; @@ -672,19 +640,15 @@ buffmt(struct html *h, const char *fmt, ...) h->buflen = strlen(h->buf); } - -void +static void bufncat(struct html *h, const char *p, size_t sz) { - if (h->buflen + sz > BUFSIZ - 1) - sz = BUFSIZ - 1 - h->buflen; - - (void)strncat(h->buf, p, sz); + assert(h->buflen + sz + 1 < BUFSIZ); + strncat(h->buf, p, sz); h->buflen += sz; } - void buffmt_includes(struct html *h, const char *name) { @@ -708,7 +672,6 @@ buffmt_includes(struct html *h, const char *name) bufcat(h, pp); } - void buffmt_man(struct html *h, const char *name, const char *sec) @@ -725,7 +688,7 @@ buffmt_man(struct html *h, bufcat(h, sec ? sec : "1"); break; case('N'): - buffmt(h, name); + bufcat_fmt(h, name); break; default: bufncat(h, p, 2); @@ -737,7 +700,6 @@ buffmt_man(struct html *h, bufcat(h, pp); } - void bufcat_su(struct html *h, const char *p, const struct roffsu *su) { @@ -747,10 +709,9 @@ bufcat_su(struct html *h, const char *p, const struct roffsu *su) if (SCALE_MM == su->unit && 0.0 == (v /= 100.0)) v = 1.0; - buffmt(h, "%s: %.2f%s;", p, v, roffscales[su->unit]); + bufcat_fmt(h, "%s: %.2f%s;", p, v, roffscales[su->unit]); } - void html_idcat(char *dst, const char *src, int sz) { diff --git a/html.h b/html.h index 35fb6c67..2fc63316 100644 --- a/html.h +++ b/html.h @@ -1,4 +1,4 @@ -/* $Id: html.h,v 1.42 2011/05/14 16:28:23 kristaps Exp $ */ +/* $Id: html.h,v 1.43 2011/05/17 11:19:45 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * @@ -147,11 +147,10 @@ void bufcat_su(struct html *, const char *, void buffmt_man(struct html *, const char *, const char *); void buffmt_includes(struct html *, const char *); -void buffmt(struct html *, const char *, ...); +void bufcat_fmt(struct html *, const char *, ...); void bufcat(struct html *, const char *); void bufcat_style(struct html *, const char *, const char *); -void bufncat(struct html *, const char *, size_t); void bufinit(struct html *); void html_idcat(char *, const char *, int); diff --git a/man_html.c b/man_html.c index 610e58fd..d9c2cd31 100644 --- a/man_html.c +++ b/man_html.c @@ -1,4 +1,4 @@ -/* $Id: man_html.c,v 1.70 2011/03/07 01:35:51 schwarze Exp $ */ +/* $Id: man_html.c,v 1.71 2011/05/17 11:19:45 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * @@ -158,7 +158,7 @@ print_man_head(MAN_ARGS) print_gen_head(h); bufinit(h); - buffmt(h, "%s(%s)", m->title, m->msec); + bufcat_fmt(h, "%s(%s)", m->title, m->msec); print_otag(h, TAG_TITLE, 0, NULL); print_text(h, h->buf); diff --git a/mdoc_html.c b/mdoc_html.c index 73cf1182..b5fc053a 100644 --- a/mdoc_html.c +++ b/mdoc_html.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.166 2011/05/14 16:28:23 kristaps Exp $ */ +/* $Id: mdoc_html.c,v 1.167 2011/05/17 11:19:45 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * @@ -382,7 +382,7 @@ print_mdoc_head(MDOC_ARGS) print_gen_head(h); bufinit(h); - buffmt(h, "%s(%s)", m->title, m->msec); + bufcat_fmt(h, "%s(%s)", m->title, m->msec); if (m->arch) { bufcat(h, " ("); -- cgit v1.2.3-56-ge451