diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-11-01 04:08:43 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-11-01 04:08:43 +0000 |
commit | e8ad8f372f71b24bdc4359cc0dd0d62b9fad70e7 (patch) | |
tree | f0847767e7776670bebf22af95bba3e5f59a5754 /preconv.c | |
parent | d56e1e4fc2e21ba1b22e1ab3b24ea5bd71b8a659 (diff) | |
download | mandoc-e8ad8f372f71b24bdc4359cc0dd0d62b9fad70e7.tar.gz |
Refactor, no functional change: Remove the parse point from struct buf.
Some functions need multiple parse points, some none at all,
and it varies whether any of them need to be passed around.
So better pass them as a separate argument, and only when needed.
Diffstat (limited to 'preconv.c')
-rw-r--r-- | preconv.c | 21 |
1 files changed, 11 insertions, 10 deletions
@@ -25,7 +25,8 @@ #include "libmandoc.h" int -preconv_encode(struct buf *ib, struct buf *ob, int *filenc) +preconv_encode(struct buf *ib, size_t *ii, struct buf *ob, size_t *oi, + int *filenc) { size_t i; const long one = 1L; @@ -45,7 +46,7 @@ preconv_encode(struct buf *ib, struct buf *ob, int *filenc) if ( ! (*((const char *)(&one)))) be = 1; - for (i = ib->offs; i < ib->sz; i++) { + for (i = *ii; i < ib->sz; i++) { cu = ib->buf[i]; if (state) { if ( ! (cu & 128) || (cu & 64)) { @@ -79,11 +80,11 @@ preconv_encode(struct buf *ib, struct buf *ob, int *filenc) (accum << 24); if (accum < 0x80) - ob->buf[ob->offs++] = accum; + ob->buf[(*oi)++] = accum; else - ob->offs += snprintf(ob->buf + ob->offs, + *oi += snprintf(ob->buf + *oi, 11, "\\[u%.4X]", accum); - ib->offs = i + 1; + *ii = i + 1; *filenc &= ~MPARSE_LATIN1; return(1); } else { @@ -134,21 +135,21 @@ latin: if ( ! (*filenc & MPARSE_LATIN1)) return(0); - ob->offs += snprintf(ob->buf + ob->offs, 11, - "\\[u%.4X]", (unsigned char)ib->buf[ib->offs++]); + *oi += snprintf(ob->buf + *oi, 11, + "\\[u%.4X]", (unsigned char)ib->buf[(*ii)++]); *filenc &= ~MPARSE_UTF8; return(1); } int -preconv_cue(const struct buf *b) +preconv_cue(const struct buf *b, size_t offset) { const char *ln, *eoln, *eoph; size_t sz, phsz; - ln = b->buf + b->offs; - sz = b->sz - b->offs; + ln = b->buf + offset; + sz = b->sz - offset; /* Look for the end-of-line. */ |