=================================================================== RCS file: /cvs/mandoc/preconv.c,v retrieving revision 1.9 retrieving revision 1.11 diff -u -p -r1.9 -r1.11 --- mandoc/preconv.c 2014/10/25 01:03:52 1.9 +++ mandoc/preconv.c 2014/11/01 04:08:43 1.11 @@ -1,4 +1,4 @@ -/* $Id: preconv.c,v 1.9 2014/10/25 01:03:52 schwarze Exp $ */ +/* $Id: preconv.c,v 1.11 2014/11/01 04:08:43 schwarze Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * Copyright (c) 2014 Ingo Schwarze @@ -25,13 +25,14 @@ #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; int state, be; unsigned int accum; - size_t i; unsigned char cu; - const long one = 1L; if ( ! (*filenc & MPARSE_UTF8)) goto latin; @@ -45,7 +46,7 @@ preconv_encode(struct buf *ib, struct buf *ob, int *fi 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 *fi (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. */ @@ -158,8 +159,7 @@ preconv_cue(const struct buf *b) /* Check if we have the correct header/trailer. */ if ((sz = (size_t)(eoln - ln)) < 10 || - memcmp(ln, ".\\\" -*-", 7) || - memcmp(eoln - 3, "-*-", 3)) + memcmp(ln, ".\\\" -*-", 7) || memcmp(eoln - 3, "-*-", 3)) return(MPARSE_UTF8 | MPARSE_LATIN1); /* Move after the header and adjust for the trailer. */