aboutsummaryrefslogtreecommitdiffstatshomepage
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
commitb399f6ed25a3a9bcf7263a89d1058879fd11ff62 (patch)
treeeb719a582df564ac523e9c804c95dc5044a6be01
parent01fc3eec52b1d1890d4b6d6648a2972ace088e95 (diff)
downloadmandoc-b399f6ed25a3a9bcf7263a89d1058879fd11ff62.tar.gz
mandoc-b399f6ed25a3a9bcf7263a89d1058879fd11ff62.tar.zst
mandoc-b399f6ed25a3a9bcf7263a89d1058879fd11ff62.zip
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.
-rw-r--r--term.c34
-rw-r--r--term.h6
2 files changed, 18 insertions, 22 deletions
diff --git a/term.c b/term.c
index 4c1a8dbc..16def787 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.209 2013/08/08 20:07:47 schwarze Exp $ */
+/* $Id: term.c,v 1.210 2013/08/21 21:20:40 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -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]);
diff --git a/term.h b/term.h
index 051080b2..6aa9934e 100644
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/* $Id: term.h,v 1.93 2013/08/08 20:07:47 schwarze Exp $ */
+/* $Id: term.h,v 1.94 2013/08/21 21:20:40 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -58,10 +58,10 @@ struct termp {
size_t defrmargin; /* Right margin of the device. */
size_t rmargin; /* Current right margin. */
size_t maxrmargin; /* Max right margin. */
- int maxcols; /* Max size of buf. */
+ size_t maxcols; /* Max size of buf. */
size_t offset; /* Margin offest. */
size_t tabwidth; /* Distance of tab positions. */
- int col; /* Bytes in buf. */
+ size_t col; /* Bytes in buf. */
size_t viscol; /* Chars on current line. */
int overstep; /* See termp_flushln(). */
int skipvsp; /* Vertical space to skip. */