aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/vtfontcvt
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2019-08-23 16:03:23 +0000
committerEd Maste <emaste@FreeBSD.org>2019-08-23 16:03:23 +0000
commit40adef9e5923888b9ae220f94cdb0a6331b8a9a7 (patch)
treecd12087b40031137881b4b2f31a6a1e22be38f6f /usr.bin/vtfontcvt
parentec7ea489e0dac934daf41e92ba1f369543411cf5 (diff)
downloadsrc-40adef9e5923888b9ae220f94cdb0a6331b8a9a7.tar.gz
src-40adef9e5923888b9ae220f94cdb0a6331b8a9a7.zip
vtfontcvt: simplify rshift_row
We don't need to specify the buffer size in both bytes and bits. MFC after: 1 week Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=351425
Diffstat (limited to 'usr.bin/vtfontcvt')
-rw-r--r--usr.bin/vtfontcvt/vtfontcvt.c43
1 files changed, 10 insertions, 33 deletions
diff --git a/usr.bin/vtfontcvt/vtfontcvt.c b/usr.bin/vtfontcvt/vtfontcvt.c
index e34308d5d365..7553d66d99d2 100644
--- a/usr.bin/vtfontcvt/vtfontcvt.c
+++ b/usr.bin/vtfontcvt/vtfontcvt.c
@@ -224,38 +224,19 @@ add_char(unsigned curchar, unsigned map_idx, uint8_t *bytes, uint8_t *bytes_r)
}
/*
- * Right-shift glyph row by _shift_ bits. Row _len_ bits wide, _size_ bytes.
+ * Right-shift glyph row.
*/
-static int
-rshift_row(uint8_t *line, size_t size, size_t len, size_t shift)
+static void
+rshift_row(uint8_t *buf, size_t len, size_t shift)
{
- size_t d, s, i;
- uint16_t t;
-
- assert(size > 0 && len > 0);
- assert(size * 8 >= len);
+ ssize_t i, off_byte = shift / 8;
+ size_t off_bit = shift % 8;
if (shift == 0)
- return (0);
-
- d = shift / 8;
- s = 8 - shift % 8;
- i = howmany(len, 8);
-
- while (i > 0) {
- i--;
-
- t = *(line + i);
- *(line + i) = 0;
-
- t <<= s;
-
- if (i + d + 1 < size)
- *(line + i + d + 1) |= (uint8_t)t;
- if (i + d < size)
- *(line + i + d) = t >> 8;
- }
- return (0);
+ return;
+ for (i = len - 1; i >= 0; i--)
+ buf[i] = (i >= off_byte ? buf[i - off_byte] >> off_bit : 0) |
+ (i > off_byte ? buf[i - off_byte - 1] << (8 - off_bit) : 0);
}
/*
@@ -426,11 +407,7 @@ parse_bdf(FILE *fp, unsigned int map_idx)
*(line + j) = (uint8_t)val;
}
- rv = rshift_row(line, wbytes * 2, bbw,
- bbox - fbbox);
- if (rv != 0)
- goto out;
-
+ rshift_row(line, wbytes * 2, bbox - fbbox);
rv = split_row(bytes + i * wbytes,
bytes_r + i * wbytes, line, dwidth);
if (rv != 0)