Turn MOD from function to macro.
[open-adventure.git] / misc.c
diff --git a/misc.c b/misc.c
index 801331bdd06b14b3264ff1fbe5818daba780a44c..d89b4058fbcfd003329b3a470b8fed765b7ba93e 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) */
@@ -66,7 +78,7 @@ void newspeak(char* msg)
          if (msg[i + 1] == 'd')
            {
              copy[i + 1] = 's';
-             sprintf(parameters[pi], "%d", PARMS[pi]);
+             sprintf(parameters[pi], "%ld", PARMS[pi]);
            }
 
          // Unmodified string specifier.
@@ -116,7 +128,7 @@ void newspeak(char* msg)
 
   // Render the final string.
   char rendered[2000]; // FIXME: to be replaced with dynamic allocation
-  sprintf(&rendered, copy, parameters[1], parameters[2], parameters[3], parameters[4]); // FIXME: to be replaced with vsprintf()
+  sprintf((char *)&rendered, copy, parameters[1], parameters[2], parameters[3], parameters[4]); // FIXME: to be replaced with vsprintf()
 
   // Print the message.
   printf("%s\n", rendered);
@@ -618,14 +630,14 @@ bool MAPLIN(FILE *fp)
      *  and is not changed thereafter unless the routines on this page choose
      *  to do so. */
 
-    if (!oldstyle && !isatty(1))
+    if (prompt)
        fputs("> ", stdout);
     do {
-       if (oldstyle) {
+       if (!editline) {
            IGNORE(fgets(rawbuf,sizeof(rawbuf)-1,fp));
            eof = (feof(fp));
        } else {
-           char *cp = linenoise("> ");
+           char *cp = linenoise(prompt ? "> ": "");
            eof = (cp == NULL);
            if (!eof) {
                strncpy(rawbuf, cp, sizeof(rawbuf)-1);
@@ -686,7 +698,4 @@ void DATIME(long* d, long* t)
     *t = (long) tv.tv_usec;
 }
 
-long MOD(long n, long m) 
-{
-    return(n%m);
-}
+/* end */