summaryrefslogtreecommitdiffstats
path: root/term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-08-21 21:20:40 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-08-21 21:20:40 +0000
commit6b008d7b7367077ae625b92a7b6557dc3f7ff7b1 (patch)
treea307e0b038132c17c639c98bc59c8ef8b66659b0 /term.c
parent41ff27a472e8d41a4f16595bd7a581f464e4a2dc (diff)
downloadmandoc-6b008d7b7367077ae625b92a7b6557dc3f7ff7b1.tar.gz
Move the last column-counting members of struct termp (col and maxcols)
from int to size_t, to match some existing ones (offset, *rmargin, viscol). Move some related local variables from int to size_t as well. Needed as a preparation to make a generalized adjbuf() function available beyond the file term.c, i.e. in mandoc.c. Also saves a couple of ugly casts.
Diffstat (limited to 'term.c')
-rw-r--r--term.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/term.c b/term.c
index 74ebcbdc..c19b097d 100644
--- a/term.c
+++ b/term.c
@@ -34,7 +34,7 @@
#include "main.h"
static size_t cond_width(const struct termp *, int, int *);
-static void adjbuf(struct termp *p, int);
+static void adjbuf(struct termp *p, size_t);
static void bufferc(struct termp *, char);
static void encode(struct termp *, const char *, size_t);
static void encode1(struct termp *, int);
@@ -105,15 +105,15 @@ term_end(struct termp *p)
void
term_flushln(struct termp *p)
{
- int i; /* current input position in p->buf */
+ size_t i; /* current input position in p->buf */
int ntab; /* number of tabs to prepend */
size_t vis; /* current visual position on output */
size_t vbl; /* number of blanks to prepend to output */
size_t vend; /* end of word visual position on output */
size_t bp; /* visual right border position */
size_t dv; /* temporary for visual pos calculations */
- int j; /* temporary loop index for p->buf */
- int jhy; /* last hyph before overflow w/r/t j */
+ size_t j; /* temporary loop index for p->buf */
+ size_t jhy; /* last hyph before overflow w/r/t j */
size_t maxvis; /* output position of visible boundary */
size_t mmax; /* used in calculating bp */
@@ -216,7 +216,7 @@ term_flushln(struct termp *p)
j = i;
while (' ' == p->buf[i])
i++;
- dv = (size_t)(i - j) * (*p->width)(p, ' ');
+ dv = (i - j) * (*p->width)(p, ' ');
vbl += dv;
vend += dv;
break;
@@ -507,7 +507,7 @@ term_word(struct termp *p, const char *word)
}
static void
-adjbuf(struct termp *p, int sz)
+adjbuf(struct termp *p, size_t sz)
{
if (0 == p->maxcols)
@@ -515,8 +515,7 @@ adjbuf(struct termp *p, int sz)
while (sz >= p->maxcols)
p->maxcols <<= 2;
- p->buf = mandoc_realloc
- (p->buf, sizeof(int) * (size_t)p->maxcols);
+ p->buf = mandoc_realloc(p->buf, sizeof(int) * p->maxcols);
}
static void
@@ -566,16 +565,13 @@ encode1(struct termp *p, int c)
static void
encode(struct termp *p, const char *word, size_t sz)
{
- int i, len;
+ size_t i;
if (TERMP_SKIPCHAR & p->flags) {
p->flags &= ~TERMP_SKIPCHAR;
return;
}
- /* LINTED */
- len = sz;
-
/*
* Encode and buffer a string of characters. If the current
* font mode is unset, buffer directly, else encode then buffer
@@ -583,19 +579,19 @@ encode(struct termp *p, const char *word, size_t sz)
*/
if (TERMFONT_NONE == term_fonttop(p)) {
- if (p->col + len >= p->maxcols)
- adjbuf(p, p->col + len);
- for (i = 0; i < len; i++)
+ if (p->col + sz >= p->maxcols)
+ adjbuf(p, p->col + sz);
+ for (i = 0; i < sz; i++)
p->buf[p->col++] = word[i];
return;
}
/* Pre-buffer, assuming worst-case. */
- if (p->col + 1 + (len * 5) >= p->maxcols)
- adjbuf(p, p->col + 1 + (len * 5));
+ if (p->col + 1 + (sz * 5) >= p->maxcols)
+ adjbuf(p, p->col + 1 + (sz * 5));
- for (i = 0; i < len; i++) {
+ for (i = 0; i < sz; i++) {
if (ASCII_HYPH == word[i] ||
isgraph((unsigned char)word[i]))
encode1(p, word[i]);