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)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to