Fix broken unpacking algorithm.
authorJason S. Ninneman <jsn@mbar.us>
Sun, 11 Jun 2017 21:59:08 +0000 (14:59 -0700)
committerJason S. Ninneman <jsn@mbar.us>
Sun, 11 Jun 2017 22:42:25 +0000 (15:42 -0700)
Also trim trailing whitespace.

misc.c

diff --git a/misc.c b/misc.c
index 801331bdd06b14b3264ff1fbe5818daba780a44c..9da70dc8e447d0d9f04455c4659115bd465b0348 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -23,12 +23,24 @@ void* xmalloc(size_t size)
 
 void packed_to_token(long packed, char token[6])
 {
+  // Unpack and map back to ASCII.
   for (int i = 0; i < 5; ++i)
     {
       char advent = (packed >> i * 6) & 63;
-      token[i] = advent_to_ascii[advent];
+      token[4 - i] = advent_to_ascii[advent];
     }
+
+  // Ensure the last character is \0.
   token[5] = '\0';
+
+  // Replace trailing whitespace with \0.
+  for (int i = 4; i >= 0; --i)
+    {
+      if (token[i] == ' ' || token[i] == '\t')
+       token[i] = '\0';
+      else
+       break;
+    }
 }
 
 /*  I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */