Add script/print-bits.go.
diff --git a/script/print-bits.go b/script/print-bits.go
new file mode 100644
index 0000000..82b6be4
--- /dev/null
+++ b/script/print-bits.go
@@ -0,0 +1,61 @@
+// Use of this source code is governed by a BSD-style license that can be found
+// in the LICENSE file.
+
+// +build ignore
+
+package main
+
+// print-bits.go prints stdin's bytes in hexadecimal and binary.
+//
+// Usage: go run print-bits.go < foo.bin
+
+import (
+ "fmt"
+ "io"
+ "os"
+)
+
+func main() {
+ if err := main1(); err != nil {
+ os.Stderr.WriteString(err.Error() + "\n")
+ os.Exit(1)
+ }
+}
+
+func main1() error {
+ in := make([]byte, 4096)
+ bits := []byte("...._....\n")
+ os.Stdout.WriteString("offset ASCII hex binary\n")
+ for iBase := 0; ; {
+ n, err := os.Stdin.Read(in)
+ for i, x := range in[:n] {
+ bits[0] = bit(x >> 7)
+ bits[1] = bit(x >> 6)
+ bits[2] = bit(x >> 5)
+ bits[3] = bit(x >> 4)
+ bits[5] = bit(x >> 3)
+ bits[6] = bit(x >> 2)
+ bits[7] = bit(x >> 1)
+ bits[8] = bit(x >> 0)
+ ascii := rune(x)
+ if (x < 0x20) || (0x7F <= x) {
+ ascii = '.'
+ }
+ fmt.Printf("%06d %c 0x%02X 0b_%s", iBase+i, ascii, x, bits)
+ }
+ if err == io.EOF {
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ iBase += n
+ }
+}
+
+func bit(x byte) byte {
+ if x&1 != 0 {
+ return '1'
+ }
+ return '0'
+}
diff --git a/test/c/testlib/testlib.c b/test/c/testlib/testlib.c
index fd5c31d..41db11e 100644
--- a/test/c/testlib/testlib.c
+++ b/test/c/testlib/testlib.c
@@ -237,7 +237,7 @@
char c = ' ';
if (k < n) {
c = buf->ptr[b + k];
- if ((c < 0x20) || (0x7F < c)) {
+ if ((c < 0x20) || (0x7F <= c)) {
c = '.';
}
}