svn commit: r351425 - head/usr.bin/vtfontcvt

Ed Maste emaste at FreeBSD.org
Fri Aug 23 16:03:24 UTC 2019


Author: emaste
Date: Fri Aug 23 16:03:23 2019
New Revision: 351425
URL: https://svnweb.freebsd.org/changeset/base/351425

Log:
  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

Modified:
  head/usr.bin/vtfontcvt/vtfontcvt.c

Modified: head/usr.bin/vtfontcvt/vtfontcvt.c
==============================================================================
--- head/usr.bin/vtfontcvt/vtfontcvt.c	Fri Aug 23 15:24:18 2019	(r351424)
+++ head/usr.bin/vtfontcvt/vtfontcvt.c	Fri Aug 23 16:03:23 2019	(r351425)
@@ -224,38 +224,19 @@ add_char(unsigned curchar, unsigned map_idx, uint8_t *
 }
 
 /*
- * 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;
+	ssize_t i, off_byte = shift / 8;
+	size_t off_bit = shift % 8;
 
-	assert(size > 0 && len > 0);
-	assert(size * 8 >= len);
-
 	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)


More information about the svn-src-head mailing list