summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-12-31 18:58:45 -0500
committerJune McEnroe <june@causal.agency>2020-12-31 18:58:45 -0500
commit2fbf2818acf804137151f4fa4ad6e48952199c20 (patch)
treec1f9b6a4d6491e78d349067a50a636cab3c4393c /bin
parentSimplify bit lexing and parsing (diff)
downloadsrc-2fbf2818acf804137151f4fa4ad6e48952199c20.tar.gz
src-2fbf2818acf804137151f4fa4ad6e48952199c20.zip
Add ASCII control code names to bit
Diffstat (limited to 'bin')
-rw-r--r--bin/bit.y13
1 files changed, 11 insertions, 2 deletions
diff --git a/bin/bit.y b/bin/bit.y
index d4ca3b8e..7a7d37ed 100644
--- a/bin/bit.y
+++ b/bin/bit.y
@@ -159,6 +159,14 @@ static int yylex(void) {
 	}
 }
 
+static const char *Codes[128] = {
+	"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
+	"BS",  "HT",  "NL",  "VT",  "NP",  "CR",  "SO",  "SI",
+	"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
+	"CAN", "EM",  "SUB", "ESC", "FS",  "GS",  "RS",  "US",
+	[127] = "DEL",
+};
+
 static void print(uint64_t val) {
 	int bits = val > UINT32_MAX ? 64
 		: val > UINT16_MAX ? 32
@@ -172,8 +180,9 @@ static void print(uint64_t val) {
 		}
 		printf(" %#"PRIo64" 0b%s", val, bin);
 	}
-	if (val < 128 && isprint(val)) {
-		printf(" '%c'", (char)val);
+	if (val < 128) {
+		if (isprint(val)) printf(" '%c'", (char)val);
+		if (Codes[val]) printf(" %s", Codes[val]);
 	}
 	if (val) {
 		if (!(val & MASK(40))) {