Test Coverage -- lots of new pieces of actions.c
[open-adventure.git] / misc.c
diff --git a/misc.c b/misc.c
index ba834fdffd44b84cef98268a2e2cbadc8dea63b2..09244625cfe0c536bb866fcf17eccf21356d5e48 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -50,6 +50,18 @@ void packed_to_token(long packed, char token[6])
     }
 }
 
+void token_to_packed(char token[6], long* packed)
+{
+  *packed = 0;
+  for (size_t i = 0; i < 5; ++i)
+    {
+      if (token[4 - i] == '\0')
+       continue;       
+      char mapped = ascii_to_advent[(int) token[4 - i]];
+      *packed |= (mapped << (6 * i));
+    }
+}
+
 /* Hide the fact that wods are corrently packed longs */
 
 bool wordeq(token_t a, token_t b)
@@ -245,8 +257,8 @@ char* get_input()
             IGNORE(getline(&input, &n, stdin));
         }
 
-        if (input == NULL) // Got EOF; quit.
-            exit(EXIT_SUCCESS);
+        if (input == NULL) // Got EOF; return with it.
+           return(input);
         else if (input[0] == '#') // Ignore comments.
             continue;
         else // We have a 'normal' line; leave the loop.
@@ -278,8 +290,12 @@ bool YES(const char* question, const char* yes_response, const char* no_response
         speak(question);
 
         reply = get_input();
+       if (reply == NULL) {
+         linenoiseFree(reply);
+         exit(EXIT_SUCCESS);
+       }
 
-        char* firstword = (char*) xmalloc(strlen(reply));
+        char* firstword = (char*) xmalloc(strlen(reply)+1);
         sscanf(reply, "%s", firstword);
 
         for (int i = 0; i < (int)strlen(firstword); ++i)
@@ -651,10 +667,10 @@ bool MAPLIN(FILE *fp)
          *  If the data file uses a character other than space (e.g., tab) to
          *  separate numbers, that character should also translate to 0.
          *
-         *  This procedure may use the map1,map2 arrays to maintain static data for
-         *  the mapping.  MAP2(1) is set to 0 when the program starts
-         *  and is not changed thereafter unless the routines on this page choose
-         *  to do so. */
+         *  This procedure may use the map1,map2 arrays to maintain
+         *  static data for he mapping.  MAP2(1) is set to 0 when the
+         *  program starts and is not changed thereafter unless the
+         *  routines in this module choose to do so. */
         LNLENG = 0;
         for (long i = 1; i <= (long)sizeof(INLINE) && INLINE[i] != 0; i++) {
             long val = INLINE[i];