aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/roff.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-10-13 22:59:54 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-10-13 22:59:54 +0000
commit35c319dedab41299e8ad1ec62697c36315fb88da (patch)
tree6d0023d2c650f7cadfa9c71eebdfd679f0bf3d51 /roff.c
parente47784200392e2dea53b3decd3ceb23e1e2a0ca6 (diff)
downloadmandoc-35c319dedab41299e8ad1ec62697c36315fb88da.tar.gz
mandoc-35c319dedab41299e8ad1ec62697c36315fb88da.tar.zst
mandoc-35c319dedab41299e8ad1ec62697c36315fb88da.zip
Major character table cleanup:
* Use ohash(3) rather than a hand-rolled hash table. * Make the character table static in the chars.c module: There is no need to pass a pointer around, we most certainly never want to use two different character tables concurrently. * No need to keep the characters in a separate file chars.in; that merely encourages downstream porters to mess with them. * Sort the characters to agree with the mandoc_chars(7) manual page. * Specify Unicode codepoints in hex, not decimal (that's the detail that originally triggered this patch). No functional change, minus 100 LOC, and i don't see a performance change.
Diffstat (limited to 'roff.c')
-rw-r--r--roff.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/roff.c b/roff.c
index 0f8a194c..c0803772 100644
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.278 2015/10/12 00:08:16 schwarze Exp $ */
+/* $Id: roff.c,v 1.279 2015/10/13 22:59:54 schwarze Exp $ */
/*
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -316,7 +316,6 @@ struct roffreg {
struct roff {
struct mparse *parse; /* parse point */
- const struct mchars *mchars; /* character table */
struct roffnode *last; /* leaf of stack */
int *rstack; /* stack of inverted `ie' values */
struct roffreg *regtab; /* number registers */
@@ -901,13 +900,12 @@ roff_free(struct roff *r)
}
struct roff *
-roff_alloc(struct mparse *parse, const struct mchars *mchars, int options)
+roff_alloc(struct mparse *parse, int options)
{
struct roff *r;
r = mandoc_calloc(1, sizeof(struct roff));
r->parse = parse;
- r->mchars = mchars;
r->options = options;
r->format = options & (MPARSE_MDOC | MPARSE_MAN);
r->rstackpos = -1;
@@ -1344,7 +1342,7 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
esc = mandoc_escape(&cp, &stnam, &inaml);
if (esc == ESCAPE_ERROR ||
(esc == ESCAPE_SPECIAL &&
- mchars_spec2cp(r->mchars, stnam, inaml) < 0))
+ mchars_spec2cp(stnam, inaml) < 0))
mandoc_vmsg(MANDOCERR_ESC_BAD,
r->parse, ln, (int)(stesc - buf->buf),
"%.*s", (int)(cp - stesc), stesc);