From b399f6ed25a3a9bcf7263a89d1058879fd11ff62 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 21 Aug 2013 21:20:40 +0000 Subject: 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. --- term.c | 34 +++++++++++++++------------------- term.h | 6 +++--- 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 * Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze @@ -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 * @@ -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. */ -- cgit v1.2.3-56-ge451